pygame的游戏循环和时钟

pygame的游戏循环和游戏时钟

文章目录

前言

结合之前的知识,现在 英雄飞机 已经被绘制到屏幕上了,怎么能够让飞机移动呢 ?

一、 理解 游戏循环 和 游戏时钟

1. 游戏中的动画实现原理

  • 跟 电影 的原理类似,游戏中的动画效果,本质上是 快速 的在屏幕上绘制 图像
  • 电影是将多张 静止的电影胶片 连续、快速的播放,产生连贯的视觉效果!
  • 一般在电脑上 每秒绘制 60 次,就能够达到非常 连续 高品质 的动画效果
  • 每次绘制的结果被称为 帧 Frame

pygame的游戏循环和时钟

; 2.游戏循环

游戏的两个组成部分

游戏循环的开始 就意味着 游戏的正式开始

pygame的游戏循环和时钟

3.游戏循环的作用

  1. 保证游戏 不会直接退出
  2. 变化图像位置 —— 动画效果
  3. 每隔 1 / 60 秒 移动一下所有图像的位置
  4. 调用 pygame.display.update() 更新屏幕显示
  5. 检测用户交互 —— 按键、鼠标等…

二、游戏时钟

  • pygame 专门提供了一个类 pygame.time.Clock 可以非常方便的设置屏幕绘制速度 —— 刷新帧率
  • 要使用 时钟对象 需要两步:
  • 1)在 游戏初始化 创建一个 时钟对象
  • 2)在 游戏循环 中让时钟对象调用 tick(帧率) 方法
  • tick 方法会根据 上次被调用的时间,自动设置 游戏循环 中的延时

clock = pygame.time.Clock()
i = 0

while True:

    clock.tick(60)

    print(i)
    i += 1

三.英雄的简单动画实现

需求

  1. 在 游戏初始化 定义一个 pygame.Rect 的变量记录英雄的初始位置
  2. 在 游戏循环 中每次让 英雄 的 y – 1 —— 向上移动
  3. 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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球