ZZA的项目学习开发文档5/1
2021/5/1 18:57:36
本文主要是介绍ZZA的项目学习开发文档5/1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
游戏循环 和 游戏时钟
游戏中的动画效果实质上是在屏幕上进行的快速的绘制图像。
每次被绘制的结果被称为帧(
F
r
a
m
e
Frame
Frame)
游戏的两个重要组成部分:
简单动画的实现:
游戏循环的作用:
1.保证游戏能一直运行下去,不会出现运行完自动退出的情况。
2.变化图像位置 ——动画效果
①:每隔····秒移动一下图像的位置。
②:调用pygame.display.update()
更新屏幕显示。
3.检测用户交互——利用键盘或者鼠标实现对游戏的控制。
游戏时钟的作用:
pygame
中专门有控制帧率的类:pygame.time.Clock()
,可以进行控制帧率。
要使用时钟对象需要两步:
1.游戏初始化创建一个时钟对象
2.在游戏循环中调用tick()
举例代码实现:
import pygame, sys from pygame.locals import * pygame.init() # 时钟对象的初始创建 clock = pygame.time.Clock() screen = pygame.display.set_mode((800, 800)) bg1 = pygame.image.load(r'C:\Users\TOMMY\Desktop\carrot.png') # rect型的创建,表示要移动的图像的位置属性,再循环中方便利用他的属性来实现图像的移动 bg1_rect = pygame.Rect(0, 0, 100, 100) # 2> 绘制在屏幕 screen.blit(bg1, (100, 100)) pygame.display.update() #刷新屏幕内容 while True: clock.tick(60) bg1_rect.y -= 1 if bg1_rect.y + bg1_rect.height <= 0: bg1_rect.y = 700 screen.blit(bg1, bg1_rect) pygame.display.update() for event in pygame.event.get(): # 循环获取事件 if event.type == QUIT: # 若检测到事件类型为退出,则退出系统 pygame.quit() sys.exit()
这样写会有一个错误,那就是没有保证绘制过程中的背景的更新,就会出现以下情况:
他所扫过的一片,背景都会被抹掉,要解决以上问题,要在循环内加一个背景更新的语句,并且这个语句要放在其他图像更新语句的前面:
import pygame, sys from pygame.locals import * pygame.init() clock = pygame.time.Clock() screen = pygame.display.set_mode((610, 610)) bg1 = pygame.image.load(r'C:\Users\TOMMY\Desktop\carrot.png') bg_screen = pygame.image.load(r'C:\Users\TOMMY\Desktop\love.png') bg1_rect = pygame.Rect(100, 100, 100, 100) while True: clock.tick(60) bg1_rect.y -= 1 if bg1_rect.y + bg1_rect.height <= 0: bg1_rect.y = 700 screen.blit(bg_screen, (0, 0)) screen.blit(bg1, bg1_rect) pygame.display.update() for event in pygame.event.get(): # 循环获取事件 if event.type == QUIT: # 若检测到事件类型为退出,则退出系统 pygame.quit() sys.exit()
运行图片如下所示:
及时运行中经过背景图片也不会被抹去,所以一定要先对screen
进行重绘制(更新)
注意:要操作并进行移动的图像一定要提前定义为rect模式,因为只有这样才能操作他的坐标进行移动操作
游戏循环中的 监听 和 事件
事件: 就是开始游戏后,用户针对游戏所做的操作,例如点击关闭按钮,点击鼠标,点击键盘
监听: 在游戏中,判断用户的具体操作,因为只有捕获到用户的具体操作,才能作出具体的响应。
pygame
中通过 pygame.event.get()
可以获得 用户当前所做动作的事件列表
代码如下:
注解:所有的监听代码都大同小异,差不多都是如下模式,可以理解为模板:
# 游戏循环 while True: # 事件监听 for event in pygame.event.get(): # 判断用户是否点击了关闭按钮 if event.type == pygame.QUIT: print("退出游戏...") pygame.quit() # 直接退出系统 exit()
这篇关于ZZA的项目学习开发文档5/1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?
- 2024-05-30java excel上传--poi
- 2024-05-30安装笔记本应用商店的pycharm,再安排pandas等模块,说是没有打包工具?
- 2024-05-29java11新特性
- 2024-05-29哪些无用敏捷指标正在破坏敏捷转型?
- 2024-05-29鸿蒙原生应用再新丁!新华社 入局鸿蒙
- 2024-05-29设计模式 之 迭代器模式(Iterator)