# 引入pygame
import pygame
import sys
import time
# init()用来对pygame进行初始化
pygame.init()
# pygame.display 该对象负责游戏窗口的显示
# set mode(resolution=(0,0)) -> Surface
# 该方法用来设置游戏窗口的大小,调用该方法,会立即显示一个游戏窗口
# 需要一个元组作为参数,元组中有两个元素
# 第一个 是屏幕的宽度
# 第二个 是屏幕的高度
# 该方法返回一个surface对象,该对象表示画面中的一个基本元素
screen = pygame.display.set_mode((800, 600))
# 设置键盘事件连续触发
# pygame.key.set_repeat(True) # 不建议这样写,否则其他按键都是这样的效果
# set_caption()用来设置游戏窗口的标题
pygame.display.set_caption('游戏的测试窗口')
# 设置窗口的背景颜色
# 给screen 设置颜色
# 使用fill 来为surface设置背景颜色
# 设置颜色时,使用的是RGB值 红绿蓝 0-255
screen.fill((220, 220, 220))
# 获取球对象,加载图片
# image 对象专门用来加载图片
ball = pygame.image.load('intro_ball.gif')
# Rect
# 表示的是矩形
# 每一个图层在窗口中,所占的位置实际上都是一个矩形
# 通过该类来描述图层的位置
# 每个图层中都有一个默认的rect对象,可以直接通过get_rect()来获取
ball_rect = ball.get_rect()
# 获取screen的矩形对象
screen_rect = screen.get_rect()
# 可以通过修改矩形对象的X 和Y 来影响他的位置
# centerx 和 centery 用来设置图层 中心位置的坐标
# ball_rect.x = 0
# ball_rect.y = 0
ball_rect.centerx = screen_rect.centerx
ball_rect.centery = screen_rect.centery
screen.blit(ball, ball_rect)
# 对整个游戏窗口进行渲染
pygame.display.flip()
# print(screen)
# 创建一个变量,来表示小球移动的方向
dir = 6
# 创建一个变量,表示小球移动的速度
speed = 1
# 创建一个游戏主循环
while 1:
# 事件(event)
# 事件就是事
# event是pygame中的事件对象,通过event可以获取事件信息
# 遍历事件的列表,检查有没有我们需要处理的事件
for event in pygame.event.get():
# 事件对象中有一个属性type表示当前事件类型,会返回一个整数
if event.type == pygame.QUIT:
# 点击退出X,结束程序
# 可以让窗口通过X关闭
sys.exit()
elif event.type == pygame.KEYDOWN:
# 检查用户是否敲击键盘
# 获取用户按下的按键
# print(event.key)
# key 用来在键盘按下时,会取按键的编号
# 判断用户按的是哪个按键
dir = event.key
elif event.type == pygame.KEYUP:
# 松开按键,小球停止移动
# 判断松开是否是现在正在移动的方向
if dir == event.key:
dir = 0
if dir == pygame.K_UP:
print('↑')
ball_rect.y -= speed
elif dir == pygame.K_DOWN:
print('↓')
ball_rect.y += speed
elif dir == pygame.K_LEFT:
print('←')
ball_rect.x -= speed
elif dir == pygame.K_RIGHT:
print('→')
ball_rect.x += speed
# 判断小球的位置是否超过边界
if ball_rect.x < 0:
ball_rect.x = 0
elif ball_rect.right > screen_rect.width:
ball_rect.right = screen_rect.width
if ball_rect.y < 0:
ball_rect.y = 0
elif ball_rect.bottom > screen_rect.height:
ball_rect.bottom = screen_rect.height
# 重新填充背景颜色
screen.fill((220, 220, 220))
# 重新向画面中绘制小球
screen.blit(ball, ball_rect)
# 刷新屏幕
pygame.display.flip()
# sleep() 可以使程序休眠指定的秒数
time.sleep(0.01)
pass
效果图/通过上下左右键来移动小球