游戏循环的开始,意味着游戏的正式开始,游戏循环的作用如下
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. 点击>>>解锁Apache Hadoop Meetup 2021!

    " 10月16日,属于开源发烧友的狂欢日来啦! Apache Hadoop Meetup 2021 开源大数据行业交流盛会盛大开启!让我们相约北京,一起嗨翻初秋~ 在当今信息化时代,逐渐成熟 ...

  2. Druid学习之查询语法

    写在前面 最近一段时间都在做druid实时数据查询的工作,本文简单将官网上的英文文档加上自己的理解翻译成中文,同时将自己遇到的问题及解决方法list下,防止遗忘. 本文的demo示例均来源于官网. D ...

  3. 2022-08-15 - 初识MySQL

    MySQL数据库 数据库 数据库,又称为Database,简称DB.数据库就是一个文件集合. 顾名思义:是一个存储数据的仓库,实际上就是一堆文件,这些文件中存储了具有特定格式的数据,可以很方便的对里面 ...

  4. ansible 的安装及常见模块使用

    ansible 基础keys的ssh协议配置的 特性:幂等性:一个任务执行1遍和执行n遍效果一样. ansible是个管理软件不是服务,不需要长期运行  一.通过epel源安装ansible, 1.下 ...

  5. Sentinel控制台1.8.3修改源码,修改配置后推送到Nacos

    目录 1. 接着上一篇 2. 思路 3. 下载Sentinel源码 4. 看Gateway里面读取的配置信息 5. 修改Sentinel控制台源码 6. 熔断规则测试 7. 限流规则测试 8. 打包使 ...

  6. Netty整合STOMP

    1.STOMP协议简介 常用的WebSocket协议定义了两种传输信息类型:文本信息和二进制信息.类型虽然被确定,但是他们的传输体是没有规定的,也就是说传输体可以自定义成什么样的数据格式都行,只要客户 ...

  7. PLSQL 与 PLPGSQL

    KingbaseES 为了更好地适应用户的oracle 应用,实现了对 plsql 的支持,用户可以根据需要使用 plsql 或 plpgsql. 以下简要介绍下二者的差异 一.格式差异 1.plpg ...

  8. Sentinel源码分析-滑动窗口统计原理

    滑动窗口技术是Sentinel比较关键的核心技术,主要用于数据统计 通过分析StatisticSlot来慢慢引出这个概念 @Override public void entry(Context con ...

  9. 获取Docker容器名称和ID

    docker ps --format "{{.Names}}" docker ps -q

  10. Elastic:使用Postman来访问Elastic Stack

    转载自:https://elasticstack.blog.csdn.net/article/details/104982536 官方链接地址:https://www.elastic.co/guide ...