本教程使用python3
1.导入pygame
import pygame
import os
如果你没有安装pygame
使用pip安装:pip3 install pygame
2.创建pygame窗体
1.我们先定义一些必要的全局变量
WINDOW_W, WINDOW_H = 640, 480 # 窗体尺寸
FPS = 50 # 帧率,即每秒刷新多少次
g = 9.8 * 100 # 重力加速度(我们用的单位是像素每二次方秒)
2.创建窗体
pygame.init() # 初始化pygame
# 设置窗口出现的位置
os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (200,100)
# 创建一个窗口
screen = pygame.display.set_mode((WINDOW_W, WINDOW_H), pygame.DOUBLEBUF, 32)
# 设置窗口标题
pygame.display.set_caption("hello,world!")
# 创建时钟对象 (可以控制游戏循环频率)
clock = pygame.time.Clock()
set_mode(resolution=(0,0), flags=0, depth=0)
resolution:窗体的宽和高
flags:附件选项的集合
选项
含义
pygame.FULLSCREEN
全屏显示
pygame.DOUBLEBUF
双缓冲模式(推荐和 HWSURFACE 或 OPENGL 一起使用)
pygame.HWSURFACE
硬件加速,只有在 FULLSCREEN 下可以使用
pygame.OPENGL
创建一个 OPENGL 渲染的显示
pygame.RESIZABLE
创建一个可调整尺寸的窗口
pygame.NOFRAME
创建一个没有边框和控制按钮的窗口
depth:使用的颜色深度
3.游戏主循环
if __name__ == '__main__':
x, y = WINDOW_W/2, 10 # 球的坐标
vx, vy = 0, 0 # 球在x,y方向上的速度
# 游戏主循环
while True:
# 遍历事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
# 接收到退出事件后退出程序
exit()
# 小球下一时刻的速度、位置计算
vy += g * 1/FPS
x += vx * 1/FPS
y += vy * 1/FPS
if y >= WINDOW_H-10:
# 到达地面则是其竖直速度反向
vy = -vy
# 将背景图画上去(0,0,0)为RGB颜色
screen.fill((0, 0, 0))
# 根据球的坐标画圆
pygame.draw.circle(screen, (255, 0, 0), (int(x), int(y)), 10)
# 刷新画面
pygame.display.update()
# 设置FPS
time_passed = clock.tick(FPS)
我们使用while True 来不断循环,每次循环都做三件事:响应事件、计算下一时刻状态、重画画面。
4.最终效果
这个gif看起来很卡,实际上运行很流畅
球.gif