Python pygame 动画游戏循环游戏时钟实现原理

 更新时间:2022年08月15日 10:37:41   作者:ZacheryZHANG  
这篇文章主要为大家介绍了Python pygame 动画游戏循环游戏时钟实现原理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

1. 游戏循环和游戏时钟

之前几篇文章中,飞机大战游戏中的英雄飞机已经被绘制到屏幕上了,怎么能够让飞机移动呢?

1.1 游戏中的动画实现原理

电影的原理类似,游戏中的动画效果,本质上是快速的在屏幕上绘制图像

电影是将多张静止的电影胶片连接、快速的播放,产生连贯的视觉效果!

一般在电影上每秒绘制60次,就能够达到非常连续高品质的动画效果(相当于要每秒钟调用60次update效果)

每次绘制的结果被称为帧Frame(静止画面)

2. 游戏循环

游戏的两个组成部分:

  • 游戏的初始化:创建游戏窗口,绘制图像初始位置,设置游戏时钟
  • 游戏循环:设置刷新帧率,检测用户交互,更新所有图像位置,更新屏幕显示

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

游戏循环的作用:

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

3. 游戏时钟

pygame专门提供了一个类pygame.time.Clock可以非常方便的设置屏幕绘制速度--刷新帧率

要使用时钟对象需要两步骤:

在游戏初始化创建一个时钟对象

在游戏循环中让时钟对象调用tick(帧率)方法

tick方法会根据上次被调用的时间,自动设置游戏循环中的延时

案例演示:本案例将在游戏循环外部创建时钟对象,在游戏循环内部创建tick方法,就可以来指定循环内部的代码执行的频率。

具体代码演示如下所示:游戏循环内部的代码,每秒重复循环60次就可以,就在游戏初始化的时候,创建游戏时钟对象。

然后,在游戏循环中,通过时钟对象调用tick的方法,就可以轻松的指定,游戏循环内部的代码每秒钟执行的次数。

import pygame
pygame.init()
# 创建游戏的窗口 640*642
screen = pygame.display.set_mode((640, 642))
# 绘制背景图像
bg = pygame.image.load("./飞机大战资料包/images/background1.jpg")
screen.blit(bg, (0, 0))
# 绘制英雄的飞机
hero = pygame.image.load("./飞机大战资料包/images/me1.png")
screen.blit(hero, (300, 500))
# 可以在所有绘制工作完成之后,统一调用update方法
pygame.display.update()
# 创建时钟对象
clock = pygame.time.Clock()
# 游戏循环->意味着游戏的正式开始
i = 0
while True:
    # 希望无限循环内部的代码每秒钟重复循环60次
    # 可以指定循环体内部的代码执行的频率
    clock.tick(60)
    print(i)
    i = i + 1
    pass
pygame.quit()

以上就是Python pygame 动画游戏循环游戏时钟实现原理的详细内容,更多关于Python pygame 动画的资料请关注脚本之家其它相关文章!

相关文章

  • Pandas.DataFrame时间序列数据处理的实现

    Pandas.DataFrame时间序列数据处理的实现

    本文主要介绍了Pandas.DataFrame时间序列数据处理的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Python深度学习之Pytorch初步使用

    Python深度学习之Pytorch初步使用

    今天给大家整理了Python深度学习之Pytorch初步使用的有关知识,文中介绍的非常详细,对正在学习python的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-05-05
  • Python hmac模块使用实例解析

    Python hmac模块使用实例解析

    这篇文章主要介绍了Python hmac模块使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • pycharm new project变成灰色的解决方法

    pycharm new project变成灰色的解决方法

    今天小编就为大家分享一篇pycharm new project变成灰色的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • tensorflow实现对张量数据的切片操作方式

    tensorflow实现对张量数据的切片操作方式

    今天小编就为大家分享一篇tensorflow实现对张量数据的切片操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python 调用 zabbix api的方法示例

    Python 调用 zabbix api的方法示例

    这篇文章主要介绍了Python 调用 zabbix api的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • python使用技巧-文件读写

    python使用技巧-文件读写

    这篇文章主要介绍了python使用技巧-文件读写,Python提供了非常方便的文件读写功能,其中open是读写文件的第一步,通过open读写文件的方式和把大象装冰箱是一样的,下面我们就来具体介绍该内容,需要的小伙伴可以参考一下
    2022-02-02
  • Python批量改变图片名字的示例代码

    Python批量改变图片名字的示例代码

    本文主要介绍了Python批量改变图片名字的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • Python利用BeautifulSoup解析Html的方法示例

    Python利用BeautifulSoup解析Html的方法示例

    BeautifulSoup是python的一个库,最主要的功能是从网页抓取数据。下面这篇文章主要给大家介绍了关于Python利用BeautifulSoup解析Html的方法示例,文中通过示例代码介绍的非常详细,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-07-07
  • python判断字符串是否是json格式方法分享

    python判断字符串是否是json格式方法分享

    这篇文章主要介绍了python判断字符串是否是json格式方法分享,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11

最新评论