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)

大家都在看

  • 基于flask的在线笔记共享管理系统【1】(项目介绍)

    基于 可以实现用户注册、登录、创建 、编辑 、分享 等功能。以下是一个简单的示例: 1. 安装 和相关依赖: shell pip install</p> <p&g…

    Python 2023年8月13日
    055
  • Python数据分析:计算数组中每个元素的梯度numpy.gradient()

    【小白从小学Python、C、Java】【Python-计算机等级考试二级】【Python-数据分析】Python数据分析计算数组中每个元素的梯度每个元素之后一项和之前一项的变化幅…

    Python 2023年8月25日
    056
  • 快来给你的宠物视频加个表情特效吧

    摘要:我们将给猫贴一张卡通脸,给 Elon Musk 贴上小胡子,给小狗贴上驯鹿角! GAN 监督学习是一种联合端到端学习判别模型及其 GAN 生成的训练数据的方法。GANgeal…

    Python 2023年10月13日
    038
  • DRF学习笔记(2)

    目录​ ​​django的View|局部禁用csrf 1 ​​​ ​​python中实现抽象类3 ​​​ ​​django校验5 ​​​ ​​序列化多条many=True源码6 ​…

    Python 2023年5月24日
    068
  • pytest+allure遇到的坑

    一、python中安装jenkins 直接pip install jenkins可能会遇到类似于这种: 只需要装python_jenkins即可, 根据安装的是pip还是pip3执…

    Python 2023年9月10日
    024
  • python中input()函数详解

    1.input()函数赋值后数据在python内部的类型。 if __name__=="__main__": a=input() print(type(a)) …

    Python 2023年8月3日
    050
  • 实现fastdfs防盗链功能

    1、背景 2、实现原理 2.1 开启防盗链 2.2 重启 nginx 2.3 Java代码生成token 1、token生成规则 2、java生成token 3、测试 3.1 带正…

    Python 2023年10月19日
    041
  • 使用Pipeline抽象业务生命周期流程

    上篇关于流程引擎的文章还是快两年以前的《微服务业务生命周期流程管控引擎》,这中间各种低代码平台层出不穷,虽然有些仅仅是OA+表单的再度包装,但有些的确是在逻辑和操作单元层面进行了真…

    Python 2023年10月22日
    036
  • 无线配置多一个路由器作为家庭wifi的无线热点?

    以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」 https://mp.weixin.qq.com/s/8OcDnY3O6ux41GntesHHcg 手头…

    Python 2023年10月21日
    051
  • .NET 6当中的Web API版本控制

    大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进。 为了了解ASP.NET Core Web API的版本控制,我…

    Python 2023年10月21日
    056
  • python之mud-Start!

    在开始敲bug之前,我们要做的就是 静下心来,仔细想一想:我的游戏该怎么玩?有什么目标?总之,在我开始之前,我在想:我想做一个文字游戏,那种秀贤打怪的那种! [En] Anyway…

    Python 2023年5月24日
    066
  • ToroiseGit/GitBash 设置提交信息模板设置

    导航:一、背景二、ToroiseGit实施方案:三、GitBash实施方案 一、背景:当使用git提交代码时,每次的提交信息固定,却又比较长不好记的时,还需要将模板的地址保存下来,…

    Python 2023年10月20日
    035
  • 【python】pandas库入门

    1.Series 1.1 Series 类型的创建 import pandas as pd import numpy as np a=pd.Series(4,index=[&quo…

    Python 2023年8月8日
    067
  • 第二章 ArcGIS数据和地理数据库

    文章目录 第一节 ArcGIS和4D数据基本知识 * 1 4D数据介绍 – 1.1 DLG 1.2 DEM 1.3 DOM 1.4 DRG 1.5 4D表现 2 Arc…

    Python 2023年11月6日
    049
  • layui数据可视化_flask+layui+echarts实现前端动态图展示数据

    回答1: 使用Flask和MySQL来 ,可以通过以下步骤来 : 1. 使用Flask来搭建Web应用程序,根据需要设置路由和 函数。 2. 使用MySQL 库来存储 ,建立需要的…

    Python 2023年8月14日
    068
  • 第一讲 用Django创建在线编程网站项目

    用django写了一个网站,在信息技术课上学生学习python用的,现在把整个过程写成教程展现出来。先看几个截图: 这个网站是ubuntu21.10,anaconda3下用VSco…

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