当前位置: 首页 > news >正文

Pygame中Sprite类的使用2

4 让僵尸动起来

让僵尸能够动起来,也就是让僵尸从屏幕右边走到屏幕左边,此时只需要使用while循环,改变僵尸图片的x轴坐标即可,代码如下所示。

while True:screen.fill((255,255,255))z1.rect.x -= 5z1.draw(screen)z1.update()if z1.rect.x<=0:break

其中,每次显示僵尸时,首先通过screen调用fill()方法将屏幕背景重新设置为白色,掩盖僵尸移动前的影像;之后将z1的rect的x每次减5,表示每次循环僵尸向左侧移动5个单位,之后就是通过draw()和update()来绘制并且在新位置上显示僵尸;最后当僵尸移动到屏幕的最左侧时,跳出循环,此时僵尸停止移动。

5 设置移动速度

运行“4 让僵尸动起来”中提到的代码,此时可以看到僵尸移动的速度非常快。可以通过pygame的time模块中的Clock类通过控制游戏帧速率来控制僵尸的移动速度。

5.1 游戏帧速率

游戏帧速率指的是每秒所运行的帧数(FPS:Frames Per Second),是评价游戏画面是否流畅的关键指标。while循环每执行一次,则有一次僵尸的绘画。每绘画一次,就是一帧。可以通过pygame的time模块中的Clock类来设置FPS,来控制僵尸移动的速度。

5.2 设置FPS

首先,在程序主程序的起始处(while循环之前)定义Clock类的实例,代码如下所示。

clock = pygame.time.Clock()

之后,在while循环的内部,来设置FPS的值,代码如下所示。

clock.tick(10)

tick()函数的作用是设置FPS的值,参数10表示FPS的值10,即每秒所运行的帧数不超过10次,也就是保证了while循环每秒只能循环10次。此时再运行程序,可以看到僵尸的移动速度已经减慢了。

6 完整代码

import pygame, os
from pygame.locals import *class Zombie(pygame.sprite.Sprite):def __init__(self, x, y):super().__init__()self.image = pygame.image.load('1.png')self.rect = self.image.get_rect()self.rect.x = xself.rect.y = ydef draw(self, screen):screen.blit(self.image, self.rect)def update(self):pygame.display.update()pygame.init()
screen = pygame.display.set_mode((400, 500))
screen.fill((255,255,255))
clock = pygame.time.Clock()
z1 = Zombie(350, 80)
z1.draw(screen)
z1.update()
while True:screen.fill((255,255,255))z1.rect.x -= 5z1.draw(screen)z1.update()if z1.rect.x<=0:breakclock.tick(10)
pygame.quit()

http://www.lryc.cn/news/162015.html

相关文章:

  • 排队时延与流量强度
  • mysql:如何设计互相关注业务场景
  • AI伦理:科技发展中的人性之声
  • Direct3D光照
  • 编程语言排行榜
  • 基于语雀编辑器的在线文档编辑与查看
  • 开箱报告,Simulink Toolbox库模块使用指南(六)——S-Fuction模块(TLC)
  • Kafka详解
  • rabbitmq+springboot实现幂等性操作
  • ubuntu server 更改时区:上海
  • java 整合 swagger-ui 步骤
  • 介绍两款生成神经网络架构示意图的工具:NN-SVG和PlotNeuralNet
  • iOS IdiotAVplayer实现视频分片缓存
  • SpringBootWeb请求-响应
  • List集合详解
  • 投稿指南【NO.12_8】【极易投中】核心期刊投稿(组合机床与自动化加工技术)
  • 解决git无法上传大文件(50MB)
  • 用递归实现字符串逆序(不使用库函数)
  • 初学python(一)
  • Excel VSTO开发8 -相关控件
  • 华为数据管理——《华为数据之道》
  • Flink CDC 菜鸟教程 -环境篇
  • 【线上问题】linux部署docker应用docker-compose启动报端口占用问题(感觉上没有被占用)
  • 解决虚拟机克隆后IP和命名冲突问题
  • 分享一个python基于数据可视化的智慧社区服务平台源码
  • [密码学入门]凯撒密码
  • 博客之QQ登录功能(一)
  • Redis多机数据库实现
  • Leangoo领歌 -敏捷任务管理软件,任务管理更轻松更透明
  • go的iris框架进行本地资源映射到服务端