游戏循环的开始,意味着游戏的正式开始,游戏循环的作用如下
1.保证游戏不会直接退出
2.变化图像的位置--动画效果
3.检测用户交互--按键、鼠标等
 
 
游戏时钟
pyagame提供了一个pygame.time.Clock类,录设置屏幕绘制速度--刷新帧率
要使用时钟对象需要两步:
1.在游戏初始化时候创建一个时钟对象
2.在游戏循环中让时钟对象调用tick(帧率)方法
PS:tick方法会根据上次被调用的时间,自动设置游戏循环中的延时
# -*- coding: utf-8 -*-
# @Time: 2022/5/19 23:45
# @Author: LiQi
# @Describe: import pygame pygame.init() # 创建游戏窗口
screen = pygame.display.set_mode((480,700)) # 绘制背景图像
# 加载图像数据
background = pygame.image.load('./images/background.png')
# 使用blit给对应窗口绘制图像,参数:图像数据,图像位置
screen.blit(background,(0,0))
# 更新图像显示
pygame.display.update() # 绘制英雄图像
hero = pygame.image.load('./images/me1.png')
screen.blit(hero,(200,500))
pygame.display.update() # 创建时钟对象
clock = pygame.time.Clock runing = True
while runing:
# 调用帧率方法,每秒刷新30次
clock.tick(30)
for event in pygame.event.get():
if event.type == pygame.QUIT:
runing = False pygame.quit()
动画实现
在游戏初始化定义一个pygame.Rect的变量记录英雄的初始位置
在游戏循环中每次让英雄的y-1向上移动
y<=0时将英雄移动到屏幕的底部
 
# -*- coding: utf-8 -*-
# @Time: 2022/5/19 23:45
# @Author: LiQi
# @Describe: import pygame pygame.init() # 创建游戏窗口
screen = pygame.display.set_mode((480, 700)) # 绘制背景图像
background = pygame.image.load('./images/background.png')
screen.blit(background, (0, 0)) # 英雄图像
hero = pygame.image.load('./images/me1.png')
screen.blit(hero,(200,500)) # 更新图像
pygame.display.update() # 定义rect记录飞机的初始位置
hero_rect = pygame.Rect(150, 300, 102, 126) # 创建时钟对象
clock = pygame.time.Clock() runing = True
while runing:
# 调用帧率方法,每1秒执行一次
clock.tick(60) # 修改飞机位置
hero_rect.y -= 1 # 判断飞机的位置
if hero_rect.y <= 0:
# 如果飞机位置<=0,重新设置y值将飞机位置设为屏幕底部
hero_rect.y = 700 # 重新绘制背景图像
screen.blit(background, (0, 0))
# 绘制飞机图像
screen.blit(hero, hero_rect) # 更新图像
pygame.display.update() for event in pygame.event.get():
if event.type == pygame.QUIT:
runing = False pygame.quit()
 
每一次调用update方法之前,需要把所有的游戏图像都重新绘制一遍
而且应该最先绘制背景图像,如果不重新绘制,那么飞机图像移动会有残影展现在屏幕上
 

3.pygame快速入门-游戏循环及动画实现的更多相关文章

  1. PyGame快速入门

    pygame 快速入门 目标 项目准备 使用 pygame 创建图形窗口 理解 图像 并实现图像绘制 理解 游戏循环 和 游戏时钟 理解 精灵 和 精灵组 项目准备 新建 飞机大战 项目 新建一个 h ...

  2. C#游戏开发中快速的游戏循环

    C#游戏开发中快速的游戏循环的实现.参考<精通C#游戏编程>一书. using System; using System.Collections.Generic; using System ...

  3. 2.pygame快速入门-绘制图像

    介绍 在游戏中能够看到的游戏元素大都是图像 图像文件初始是保存在磁盘上的,如果需要使用,第一步就需要被加载到内存 要在屏幕上看到某一个图像的内容,需要按照三个步骤 使用pygame.image.loa ...

  4. 1.pygame快速入门-创建游戏窗口

      简介 pygame是python一个包,专为电子游戏设计#安装 pip3 install pygame #验证安装 # aliens 是pygame内置的一个小游戏,可以启动成功说明pygame安 ...

  5. 5.pygame快速入门-精灵和精灵组

    在之前案例中,图像加载.位置变化.绘制图像都需要编写代码分别处理 pygame提供了两个类简化开发步骤 pygame.sprite.Sprite #精灵,存储图像数据image和位置rect的对象 p ...

  6. 4.pygame快速入门-事件监听

    事件event:游戏启动后,用户针对游戏的所有操作 监听:在游戏循环中,判断用户的具体操作 pygame中通过pygame.event.get()可以获得当前用户所做动作的事件列表   事件监听 wh ...

  7. 23飞机大战__pygame 快速入门

      1. 使用 pygame 创建图形窗口 小节目标 游戏的初始化和退出 理解游戏中的坐标系 创建游戏主窗口 简单的游戏循环 可以将图片素材 绘制 到 游戏的窗口 上, 开发游戏之前需要先知道 如何建 ...

  8. 11.pygame飞机大战游戏整体代码

    主程序 # -*- coding: utf-8 -*- # @Time: 2022/5/20 22:26 # @Author: LiQi # @Describe: 主程序 import pygame ...

  9. [易学易懂系列|rustlang语言|零基础|快速入门|(23)|实战1:猜数字游戏]

    [易学易懂系列|rustlang语言|零基础|快速入门|(23)|实战1:猜数字游戏] 项目实战 实战1:猜数字游戏 我们今天来来开始简单的项目实战. 第一个简单项目是猜数字游戏. 简单来说,系统给了 ...

随机推荐

  1. 436. 寻找右区间--LeetCode_暴力

    来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/find-right-interval 著作权归领扣网络所有.商业转载请联系官方授权,非商业转载请注明出 ...

  2. Excel 文本函数(二):CONCATENATE 和 CONCAT

    在 Excel 2016.Excel Mobile 和 Excel 网页版中,CONCATENATE 函数已替换为 CONCAT 函数. CONCATENATE 函数只能拼接单个单元格或文本字符,不能 ...

  3. 获取jdbc中resultSet结果集的大小

    当我们执行完一条Sql语句,获取到一个 ResultSet 对象后,有时我们需要立即知道到底返回了多少个元素,但是 ResultSet 并没有提供一个 size() 方法 or length 的属性, ...

  4. i40e网卡驱动遇到的一个问题

    最近在排查一个crash文件的时候,遇到一个堆栈,即软中断收包的时候,skb的关联的dev是null,导致oops, 然后去crash分析的时候,发现skb的dev去不是null. 从oops到cra ...

  5. .NET 纯原生实现 Cron 定时任务执行,未依赖第三方组件

    常用的定时任务组件有 Quartz.Net 和 Hangfire 两种,这两种是使用人数比较多的定时任务组件,个人以前也是使用的 Hangfire ,慢慢的发现自己想要的其实只是一个能够根据 Cron ...

  6. python压缩pdf(指定缩放比例)

    python压缩pdf(指定缩放比例) 原理 pdf文件处理使用https://pymupdf.readthedocs.io/en/latest/index.html库可以轻松实现,该库的官方说明文档 ...

  7. 记一次用arthas排查jvm中CPU占用过高问题

    记一次使用arthas排查jvm中CPU占用过高问题.这工具屌爆了 碾压我目前使用的全部JVM工具. 安装 小试 curl -O https://arthas.aliyun.com/arthas-bo ...

  8. Paperask一键获取A币

    又到了毕业季,查论文是一件很头疼的事情,网上免费查重检测力度又很一般┑( ̄Д  ̄)┍ 因为一次偶然同学推荐了解到这个网站,只要做新手任务就能得到很多积分,再进行抽奖就可以得到A币或者是至尊券可以免费使 ...

  9. Java---Stream入门

    由于本文需要有一定的Lambda基础,所以如果不懂什么是Lambda的同学请移步:Java---Lambda 学习Stream的目的 函数式编程渐渐变成主流,而Stream是函数式编程的重点. 相对于 ...

  10. 水晶报表导出pdf文件

    /// <summary> /// 导出pdf文件 /// </summary> /// <param name="mjsReport">报表文 ...