理解游戏循环和游戏时钟
现在英雄飞机已经被绘制到屏幕上了,怎样能让飞机移动呢?
游戏中的动画实现原理
跟电影的原理类似,游戏中的动画效果,本质上是快速的在屏幕上绘制图形,一般在电脑上每秒绘制60次就能达到非常连续高品质的动画效果
游戏循环
游戏循环的开始就意味着游戏的正式开始
- 保证游戏不会直接退出
- 变化图像位置——动画效果
- 每隔1/60移动一下所有图像的位置
- 调用
pygame.display.update()
更新屏幕显示
- 检测用户交互——按键、鼠标等
游戏时钟
-
pygame
专门提供了一个类pygame.time.Clock
可以非常方便的设置屏幕绘制速度——刷新频率 - 要使用时钟对象需要两步:
1) 在游戏初始化创建一个时钟对象
2) 在游戏循环中让时钟对象调用tick(帧率)
方法 -
tick
方法会根据上次被调用的时间,自动设置游戏循环中的延时
英雄飞机的简单动画实现
需求:
- 在游戏初始化定义一个
pygame.Rect
的变量记录英雄飞机的初始位置 - 在游戏循环中每次让英雄飞机的y-1——向上移动
- y <= 0将英雄飞机移动到屏幕的底部
提示:每一次调用update()
方法之前,需要把所有的游戏图像都重新绘制一遍,而且应该最先绘制背景图像
思考:如何让英雄飞机完全从上方飞出屏幕后,再将飞机移动到屏幕的底部?