pygame的游戏循环和游戏时钟
文章目录
前言
结合之前的知识,现在 英雄飞机 已经被绘制到屏幕上了,怎么能够让飞机移动呢 ?
一、 理解 游戏循环 和 游戏时钟
1. 游戏中的动画实现原理
- 跟 电影 的原理类似,游戏中的动画效果,本质上是 快速 的在屏幕上绘制 图像
- 电影是将多张 静止的电影胶片 连续、快速的播放,产生连贯的视觉效果!
- 一般在电脑上 每秒绘制 60 次,就能够达到非常 连续 高品质 的动画效果
- 每次绘制的结果被称为 帧 Frame
; 2.游戏循环
游戏的两个组成部分
游戏循环的开始 就意味着 游戏的正式开始
3.游戏循环的作用
- 保证游戏 不会直接退出
- 变化图像位置 —— 动画效果
- 每隔 1 / 60 秒 移动一下所有图像的位置
- 调用 pygame.display.update() 更新屏幕显示
- 检测用户交互 —— 按键、鼠标等…
二、游戏时钟
- pygame 专门提供了一个类 pygame.time.Clock 可以非常方便的设置屏幕绘制速度 —— 刷新帧率
- 要使用 时钟对象 需要两步:
- 1)在 游戏初始化 创建一个 时钟对象
- 2)在 游戏循环 中让时钟对象调用 tick(帧率) 方法
- tick 方法会根据 上次被调用的时间,自动设置 游戏循环 中的延时
clock = pygame.time.Clock()
i = 0
while True:
clock.tick(60)
print(i)
i += 1
三.英雄的简单动画实现
需求
- 在 游戏初始化 定义一个 pygame.Rect 的变量记录英雄的初始位置
- 在 游戏循环 中每次让 英雄 的 y – 1 —— 向上移动
- y
提示:
- 每一次调用 update() 方法之前,需要把 所有的游戏图像都重新绘制一遍
- 而且应该 最先 重新绘制 背景图像
hero_rect = pygame.Rect(150, 500, 102, 126)
while True:
clock.tick(60)
hero_rect.y -= 1
if hero_rect.y 0:
hero_rect.y = 700
screen.blit(bg, (0, 0))
screen.blit(hero, hero_rect)
pygame.display.update()
总结
本章概述了pygame的游戏循环与游戏时钟,只要理解了图像是如何绘制的,那么本章应该不是很难理解,图像的绘制在上一章,不懂的小伙伴可以再去看看,理解出自己的思路来.
有哪里不足或者有更好的建议,欢迎留言吐槽,有哪里不懂的小伙伴可以私信我,我会一一答复,感谢认可,感谢支持!
Original: https://blog.csdn.net/weixin_45539338/article/details/125021676
Author: 道而起
Title: pygame的游戏循环和时钟
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/781585/
转载文章受原作者版权保护。转载请注明原作者出处!