昨天我们绘制完成了游戏的基本图像,今天继续分享
先贴上昨天的运行结果
继续我们今天的分享,先来分享一下游戏时钟
游戏时钟
我们平时看到的游戏画面都是动态的,那么如果我们要看到画质比较清晰,那么每秒我们的游戏画面就要刷新60次以上,
所以我们就要设置游戏的刷新帧率
再来说一下我们的屏幕刷新该放在哪里,昨天说到我们设置了一个游戏循环,那么我们需要达到每秒60次的刷新频率,
只需要在游戏循环中操作即可
创建游戏时钟的步骤
- 在游戏初始化创建一个时钟对象
- 在游戏循环中让时钟对象调用tick(帧率)方法
tick方法会根据上次被调用的时间,自动设置 游戏循环中的延时
下面贴上代码
# 创建时钟对象
clock = pygame.time.Clock()
# 游戏循环--游戏正式开始
while True:
clock.tick(60)
pass
接下来先说一下 pygame.Rect() 方法,
需要传四个参数分别为图片的 x轴位置,y轴位置,图片的宽,图片的高
下面贴上图片做个示范
贴上代码
import pygame as pygame
pygame.init()
# 定义飞机大战游戏窗口,设置窗口宽高
fly_screen = pygame.display.set_mode((480,700))
# 绘制背景图像
# 1.加载图像数据
background = pygame.image.load("./images/background.png")
# 2.blit方法绘制图像
fly_screen.blit(background,(0,0))
# 3.update更新屏幕显示
# pygame.display.update()
# 绘制飞机图像
fly_hero = pygame.image.load("./images/me1.png")
hero_rect = pygame.Rect(150,500,102,126)
fly_screen.blit(fly_hero,hero_rect)
pygame.display.update()
# 创建时钟对象
clock = pygame.time.Clock()
# 游戏循环--游戏正式开始
while True:
# 指定循环体内部代码执行频率
clock.tick(60)
# 修改飞机位置
hero_rect.y -= 1
# 判断飞机的位置
if hero_rect.y <= 0:
hero_rect.y = 700
# 调用blit方法绘制图像
fly_screen.blit(background,(0,0))
fly_screen.blit(fly_hero,hero_rect)
# 更新显示
pygame.display.update()
pass
pygame.quit()
再对上面的图像效果进行以下优化,让英雄飞机完全飞出屏幕以后,再从底部出现
贴上代码
# 判断飞机的位置 botten = y+height
if hero_rect.bottom <= 0:
hero_rect.y = 700
游戏循环中的监听事件
- 启动游戏后,用户针对游戏所做的操作
- 例如:点击鼠标,按下键盘,点击关闭按钮
监听
捕获用户所做的的操作,然后做出应对。
贴上代码
# 捕获时间
event_list = pygame.event.get()
if len(event_list) > 0:
print(event_list)
贴上结果图
今天就分享到这里,加油!!!