Python pygame 动画游戏循环游戏时钟实现原理
目录
- 1. 游戏循环和游戏时钟
- 1.1 游戏中的动画实现原理
- 2. 游戏循环
- 3. 游戏时钟
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 动画的资料请关注我们其它相关文章!
相关推荐
-
Python+Pygame实战之英文版猜字游戏的实现
目录 导语 一.运行环境 二.素材(图片等) 三.代码展示 四.效果展示 导语 当下的孩子们多少会被电子产品“侵袭”,那么既然都要玩游戏,为什么不选既能玩又能收获知识的呢? 兴趣是最大的学习推动力,当学习英语变成一款小游戏时,不仅能够玩游戏,激发调动孩子的积极性,还能够让孩子们在娱乐中潜移默化地掌握英语的学习技巧哦~ 今天木子为大家敲了一款简单的英语版<神奇的猜字小游戏>,分享给大家,希望能帮到大家.如果您是一位热心于辅导孩子学习英语的家长,上面这款游戏也不妨用一用,试一试哦~ (文中代码仅供
-
Python+Pygame实现之见缝插针游戏的实现
目录 前言 一.运行环境 二.代码展示 三.效果展示 总结 前言 姥姥说: 炎炎夏日热浪来袭. 有点让人无法忍受... 一动就是一身汗..... 想玩点小游戏都没地方玩了... <见缝插针>游戏小程序好玩吗?<见缝插针>小游戏怎么玩? 只有你想不到,没有我不会敲代码的好游戏!「良心好游戏推荐」——栗子同学强势来袭! 每天都会推荐好玩的小游戏.小编今天推荐这款游戏叫<见缝插针>,这是一个考验玩家首脑协调.反应力的小游戏,这种游戏很常见,居然还没有推荐过!今天赶紧来补上
-
python pygame英雄循环飞行及作业示例
目录 1. 英雄的简单动画实现 开发需求: 提示: 2. 案例演示 2.1 代码演示 2.2 运行结果 1. 英雄的简单动画实现 开发需求: 在游戏初始化定义一个pygame.Rect的变量记录英雄的初始位置 在游戏循环中每次让英雄的y-1--向上移动 y<=0时,将英雄移动到屏幕的底部(即飞机从底部飞行到顶部时,将飞机再次移动到底部向上飞行) 英雄飞机向上飞行,当英雄完全从上方飞出屏幕后 将飞机移动到屏幕的底部 提示: 每一次调用update()方法之前,需要把所有的游戏图像都重新绘制一遍 而
-
Python+Pygame实现之走四棋儿游戏的实现
目录 导语 一.游戏解说 二.游戏规则 三.环境安装 四.代码展示 五.效果展示 导语 大家以前应该都听说过一个游戏:叫做走四棋儿 这款游戏出来到现在时间挺长了,小时候的家乡农村条件有限,附近也没有正式的玩具店能买到玩具,因此小朋友们聚在一起玩耍时,其玩具大多都是就地取材的. 直接在家里的水泥地上用烧完的炭火灰画出几条线,摆上几颗石头子即可.当时的火爆程度可谓是达到了一个新的高度.包括我当时也比较喜欢这款游戏.因为时间推移,小时候很多游戏都已经在现在这个时代看不到啦! 今天小编就带大家追忆童年—
-
Python pygame新手入门基础教程
目录 pygame简介 pygame实现窗口 设置屏幕背景色 添加文字 绘制多边形 绘制直线 绘制圆形 绘制椭圆 绘制矩形 总结 pygame简介 pygame可以实现python游戏的一个基础包. pygame实现窗口 初始化pygame,init()类似于java类的初始化方法,用于pygame初始化. pygame.init() 设置屏幕,(500,400)设置屏幕初始大小为500 * 400的大小, 0和32 是比较高级的用法.这样我们便设置了一个500*400的屏幕. surface
-
Python pygame项目实战英雄动画特效实现
目录 1. 英雄的简单动画实现 2. 代码演示 1. 英雄的简单动画实现 需求: 在游戏初始化定义一个pygame.Rect的变量记录英雄的初始位置 在游戏循环中每次让英雄的y-1--向上移动(y值减1相当于向屏幕上方上移动1) y<=0将英雄移动到屏幕的底部 友情提示: 每一次调用update()方法之前,需要把所有的游戏图像都重新绘制一遍 而且应该最先重新绘制背景图像 2. 代码演示 案例大体思路概括: 在游戏循环上方,定义rect记录飞机的初始位置 在游戏循环内部,修改飞机位置:让飞机的y
-
Python pygame 动画游戏循环游戏时钟实现原理
目录 1. 游戏循环和游戏时钟 1.1 游戏中的动画实现原理 2. 游戏循环 3. 游戏时钟 1. 游戏循环和游戏时钟 之前几篇文章中,飞机大战游戏中的英雄飞机已经被绘制到屏幕上了,怎么能够让飞机移动呢? 1.1 游戏中的动画实现原理 跟电影的原理类似,游戏中的动画效果,本质上是快速的在屏幕上绘制图像 电影是将多张静止的电影胶片连接.快速的播放,产生连贯的视觉效果! 一般在电影上每秒绘制60次,就能够达到非常连续高品质的动画效果(相当于要每秒钟调用60次update效果) 每次绘制的结果被称为帧
-
Python Pygame实现落球游戏详解
目录 引包 初始化配置 捕捉事件 填充屏幕让球下落 完整代码 引包 引入对应的包,和原来一样写一个打印文字的方法 import sys, random, pygame from pygame.locals import * def print_text(font, x, y, text, color=(255, 255, 255)): img_text = font.render(text, True, color) screen.blit(img_text, (x, y))
-
Python Pygame实战之赛车游戏的实现
目录 导语 一.环境安装 1)运行环境 2)素材环境 二.代码展示 三.效果展示 游戏开始—— 游戏界面—— 游戏结束—— 导语 小伙伴们大家好~ 如今的游戏可谓是层出不穷,NBA 2K系列啊,FIFA系列啊更是经典中的经典,不过小编发现,赛车游戏也是深受大家欢迎啊,像跑跑卡丁车.QQ飞车,还有主机游戏极品飞车系列. 咳咳咳......小编那时候主要是最喜欢里面的人物颜值来的! 赛车游戏,通常以款式多样的车型.各式各样的赛道.身临其境的拟真度吸引了众多玩家,而玩家在游戏中需要驾驶各类赛车驰骋在世
-
Python Pygame实战之愤怒的小鸟游戏实现
目录 前言 一.运行环境 二.代码展示 三.效果展示 1)第一关 2)闯关成功 3)其他关卡(随机截图) 4)闯关失败 前言 <愤怒的小鸟>其实活得还不错,尽管我们一直在嘲笑它的IP帝国梦做得太大. 但要知道,把休闲益智游戏的生意做到这个份上的,恐怕也就独此一家了.尤其还是这样的一款古早.过时.难让人相信还能翻出什么花样的游戏.继前两期的效果来看,大家还是依旧挺喜欢这款游戏的啦~嘿!我是栗子,今天终于迎来了最终版本啦~ 这一期给大家写完<愤怒的小鸟最终版>三期完结撒花! 后续再想
-
基于Python+Pygame实现经典赛车游戏
目录 导语 一.环境安装 二.代码展示 1.主程序main.py 2.地图设置maps.py 三.效果展示 1.游戏界面 2.游戏运行中 3.15分到手 导语 哈喽!哈喽~我是木木子,很久没给大家更新游戏的类似啦—— 有粉丝投稿,说最近由于受疫情影响封闭在家不能离开小区,前不久刚刚报名的驾照考试只能无线延期,在家里还是挺无聊的,“憋在家里没事干的时候去打打游戏写写代码还挺好的. 于是,小编灵机一动,就有了今天这款简易版本的<赛车计划>也就是咳咳咳....... 通俗点儿就是一款代码写的一款关于
-
Python+Pygame实现趣味足球游戏
目录 导语 一.环境安装 二.代码展示 三.效果展示 1)加载界面 2)开始游戏界面 3)开始游戏 4)游戏运行 导语 足球运动有着“世界第一运动”的美称,还是全球最具影响力的体育运动项目之一. 小小的足球在滚动中能释放满满的能量和快乐. 足球游戏不仅可以锻炼大家的协调和反应能力,还能提高身体素质哦~ 喜欢足球的小可爱,这一期可以大饱眼福啦 小编准备出一期关于足球的编程代码给大家哦~还有那些喜欢看足球赛的可以自己上jio啦 温馨提示: 足球游戏时,一定要注意.场地要安全,服装要选好.
-
Python+Pygame实战之泡泡游戏的实现
目录 导语 一.环境安装 二.代码展示 三.效果展示 导语 泡泡王国 欢乐多多 咕噜噜,吹泡泡,七彩泡泡满天飘.大的好像彩气球,小的就像紫葡萄. 当泡泡漫天飞舞时,大朋友.小朋友都会情不自禁地被它吸引.而当珍珠般的泡泡遇上可爱的程序员门时,又会出现什么样的美丽风景呢? 说到4399小游戏,没有人会陌生吧?我小时候经常趁着家长不在家的时候偷偷打开电脑打开小游戏的网页,在电脑桌前一坐就是一下午,真的不能赖我不适可而止,而是这些游戏真的太好 玩了!关于童年的经典游戏and有关泡泡的,之前已经仿写了一
-
python pygame实现五子棋小游戏
今天学习了如何使用pygame来制作小游戏,下面是五子棋的代码,我的理解都写在注释里了 import pygame # 导入pygame模块 print(pygame.ver) # 检查pygame的版本,检查pygame有没有导入成功 EMPTY = 0 BLACK = 1 WHITE = 2 # 定义三个常量函数,用来表示白棋,黑棋,以及 空 black_color = [0, 0, 0] # 定义黑色(黑棋用,画棋盘) white_color = [255, 255, 255] # 定义白
-
python pygame实现挡板弹球游戏
学了一天pygame,用python和pygame写一个简单的挡板弹球游戏 GitHub: EasyBaffleBallGame # -*- coding:utf-8 -*- from sys import exit import pygame from pygame.locals import * pygame.init() # 创建窗口 ScreenWidth = 500 ScreenHright = 720 ScreenSize = (ScreenWidth, ScreenHright)
随机推荐
- jQuery 研究心得 取得属性的值
- SQL Server 2005 定时执行SQL语句的方法
- vue.js通过自定义指令实现数据拉取更新的实现方法
- vue.js的手脚架vue-cli项目搭建的步骤
- 使用Python的Treq on Twisted来进行HTTP压力测试
- 详细介绍Python函数中的默认参数
- mongo Table类文件 获取MongoCursor(游标)的实现方法分析
- php实现汉字验证码和算式验证码的方法
- JSP一句话木马代码
- 两种设置php载入页面时编码的方法
- 深入浅析Node.js 事件循环
- Javascript条件判断使用小技巧总结
- jquery实现根据浏览器窗口大小自动缩放图片的方法
- 全面剖析Python的Django框架中的项目部署技巧第1/2页
- 创建安全的个人Web服务器(winserver2003、sql2000)
- php.ini 启用disable_functions提高安全
- Windows域帐户的好处 域控制器的优点介绍
- javascript语句中的CDATA标签的意义
- Python使用chardet判断字符编码
- 浅析php中三个等号(===)和两个等号(==)的区别