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

Pygame中Sprite类的使用3

在Pygame中Sprite类的使用2_棉猴的博客-CSDN博客中提到了通过派生自pygame.sprite.Sprite类的自定义类Zombie,可以实现一个僵尸的移动。可以通过pygame.sprite.Group类实现对多个Zombie类实例的管理,即可以实现多个僵尸的移动。

1 pygame.sprite.Group类简介

pygame.sprite.Group类是一个容器,可以包含多个Sprite类的实例。可以对Group类中的Sprite实例进行同一的绘制和更新,使得代码得到了简化。

2 pygame.sprite.Group类实例的创建

zombie_group = pygame.sprite.Group()

其中,zombie_group即为创建的Group类的实例。

3 向Group中添加Sprite

首先需要修改Pygame中Sprite类的使用2_棉猴的博客-CSDN博客中Zombie类的代码,因为要显示多个僵尸,需要为Zombie类的__init__()方法添加一个表示僵尸图标的图标,代码图1所示:

图1 为__init__()方法添加参数

之后,创建两个Zombie类的实例,分别设置不同的位置以及导入不同的僵尸图片,代码如图2所示。

图2 创建两个僵尸实例

最后,通过zombie_group调用Group类的add()方法,将创建的僵尸实例加入到Group中,代码如图3所示。

图3 把实例加入到组中

4 通过Group管理Sprite实例

之后,可以通过zombie_group调用Group类的draw()和update()方法,实际上就是调用了这两个Sprite实例的draw()和update()方法,来显示两个僵尸图像,代码如图4所示。

图4 通过Group管理Sprite实例

5 让Sprite实例动起来

与《Pygame中Sprite类的使用2》中的方法相同,在while True循环中,分别改变这两个Sprite实例的位置,使得Sprite实例动起来。

首先为Zombie类添加move()方法,在该方法中改变实例的rect属性的x坐标,代码如图5所示。

图5 Zombie类的move()方法

接下来在while True循环中,为两个僵尸指定不同的移动速度,最后调用Group类的draw()和update()方法在新位置上显示僵尸,代码如图6所示。

图6 僵尸的移动

6 完整代码

以上提到的完整代码如下所示。

import pygame, os
from pygame.locals import *class Zombie(pygame.sprite.Sprite):def __init__(self, x, y, image):super().__init__()self.image = pygame.image.load(image)self.rect = self.image.get_rect()self.rect.x = xself.rect.y = ydef move(self, step):self.rect.x -= stepdef 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()
zombie_group = pygame.sprite.Group()
z1 = Zombie(350, 80, '1.png')
z2 = Zombie(350, 130, '2.png')
zombie_group.add(z1)
zombie_group.add(z2)
zombie_group.draw(screen)
zombie_group.update()
while True:screen.fill((255,255,255))z1.move(10)z2.move(5)zombie_group.draw(screen)zombie_group.update()clock.tick(10)
pygame.quit()

相关文章:

Pygame中Sprite类的使用3

在Pygame中Sprite类的使用2_棉猴的博客-CSDN博客中提到了通过派生自pygame.sprite.Sprite类的自定义类Zombie,可以实现一个僵尸的移动。可以通过pygame.sprite.Group类实现对多个Zombie类实例的管理,即可以实现多个僵尸的移动。 1 pygame.sprite.Group类…...

23年下考前须知-软考中级信息安全工程师

信息安全工程师主要涉及计算机信息安全方面,在计算机软硬件、网络、应用相关领域从事安全系统设计、安全产品开发、产品集成、信息系统安全检测与审计等方面工作,服务单位可以是国家机关、企事业单位及科研教学单位等。 一、考试报名时间 信安考试一年…...

关于表单快速开发低代码技术平台的内容介绍

运用什么样的表单快速开发软件平台可以实现高效率创收?随着科技的进步和飞速发展,专业的低代码技术平台已经走入了很多企业的办公职场中,它们灵活、轻量级、优质、高效、易维护等优势特点,可以高效助力广大企业提质增效&#xff0…...

比特币 ZK 赏金系列:第 1 部分——支付解密密钥

以前,我们使用零知识赏金 (ZKB) 来支付比特币上的数独解决方案。在本系列中,我们将使用 ZKB 来解决范围更广的更实际的问题。 在第 1 部分中,我们应用 ZKB 来支付解密密钥。假设 Alice 使用对称密钥 K 加密她的文件。为了安全起见&#xff0…...

【Python深度学习】深度学习中框架和模型的区别

深度学习是人工智能领域的一股强大力量,它的快速发展离不开深度学习框架和模型的进步。本文将介绍深度学习框架和模型的基本概念、它们之间的联系与区别,以及如何根据项目需求选择合适的框架和模型。 一、深度学习框架 深度学习框架是进行深度学习研究和…...

MyBatis面试题(二)

文章目录 前言一、MyBatis 与 Hibernate 有哪些不同?二、MyBatis 的好处是什么?三、简述 Mybatis 的 Xml 映射文件和 Mybatis 内部数据结构之间的映射关系?四、什么是 MyBatis 的接口绑定,有什么好处?五、接口绑定有几种实现方式,…...

Android之MediaMetricsService实现本质(四十二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…...

Flutter超好用的路由库-fluro

文章目录 fluro的介绍fluro简介安装和导入路由配置导航到路由参数传递 fluro的典型使用创建路由管理类代码解释例子小结 初始化路由导航到路由 总结 fluro的介绍 fluro简介 fluro是一个流行的Flutter插件,用于实现高级路由管理。它提供了灵活的路由配置和导航功能…...

约数个数(蓝桥杯)

约数个数 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 答案:96 1200000 有多少个约数(只计算正约数)。 约数,又称因数。整数a除以整数b(b≠0) 除得的商正好是整…...

越狱(快速幂C++)

题目 监狱有连续编号为 11 到 n 的 n 个房间,每个房间关押一个犯人。 有 m 种宗教,每个犯人可能信仰其中一种。 不存在没有信仰的犯人。 如果相邻房间的犯人信仰的宗教相同,就可能发生越狱。 求有多少种状态可能发生越狱。 输入格式 共…...

电脑入门:怎么进入路由器设置

怎么进入路由器设置 在浏览器地址栏上输入路由器的出厂默认IP地址(192.168.0.1)后按回车。在登录窗口中输入说明书上的密码,点击“Log in”按钮进入宽带路由器管理设置界面。 管理设置界面分为左右栏,左栏是主菜单,右边则是与之对应的设置内容。 请根据自己接…...

Vue3大屏项目实现数字跳动的效果

一、vue-count-to组件&#xff1a; 1、安装&#xff1a; npm install vue3-count-to --save 2、使用&#xff1a; <template><BaseCountTo:startVal"startVal":endVal"endVal":duration"duration":decimals"decimals":pr…...

MATLAB打开历史命令窗口并保持

版本&#xff1a;matlab 2021a 方法&#xff1a;菜单栏 主页 - 布局 - 命令历史记录 - 停靠...

等差数列和等比数列 常用公式

等差数列 定义 通项公式 &#xff0c; 公差 &#xff0c; 前n项和公式 中项公式 下标&#xff1a;mnpq&#xff0c;则 等比数列 定义 通项公式 &#xff0c; 公比 &#xff0c; 前n项和公式 &#xff0c; 中项公式 下标&#xff1a;mnpq&#xff0c;则...

基于SpringBoot+Vue的MOBA类游戏攻略分享平台

1 简介 MOBA类游戏攻略分享平台&#xff0c;为用户随时随地查看游戏攻略信息提供了便捷的方法&#xff0c;更重要的是大大的简化了管理员管理MOBA类游戏攻略信息的方式方法&#xff0c;更提供了其他想要了解MOBA类游戏攻略信息及运作情况以及挑选方便快捷的可靠渠道。相比于传…...

基于异常上线场景的实时拦截与问题分发策略

作者 | 彭阳 导读 性能中台负责MEG端研发数据的接入、传输、管理、应用等各个环节。为了应对移动应用领域中端技术的快速迭代和线上突增问题的挑战&#xff0c;中台提出了实时拦截与问题的分发机制&#xff0c;旨在在端上线的不同阶段及时发现并拦截异常上线&#xff0c;最大程…...

MySQL常见面试题(一)

&#x1f600;前言 在数据库管理系统中&#xff0c;存储引擎起着核心的角色&#xff0c;它决定了数据管理和存储的方式。MySQL作为一个领先的开源关系型数据库管理系统&#xff0c;提供了多种存储引擎来满足不同的需求和优化不同的应用。除了选择合适的存储引擎&#xff0c;数据…...

webpack:详解entry和output一些重要API的使用

文章目录 contextentry单个入口多个入口entry相关API例一例二例三 outputoutput.assetModuleFilenameoutput.chunkFilenameoutput.clean【5.20.0版本支持】output.filename【重要】output.globalObjectoutput.library【重要】output.library.nameoutput.library.type【重要】ou…...

Spring后处理器-BeanPostProcessor

Spring后处理器-BeanPostProcessor Bean被实例化后&#xff0c;到最终缓存到名为singletonObjects单例池之前&#xff0c;中间会经过bean的初始化过程&#xff08;&#xff08;该后处理器的执行时机&#xff09;&#xff09;&#xff0c;例如&#xff1a;属性的填充、初始化方…...

每日一题~修剪二叉树

原题链接&#xff1a;669. 修剪二叉搜索树 - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 思路分析&#xff1a; 由题可知&#xff0c;我们要将原来的二叉搜索树调整为值在 low~high 之间的新二叉搜索树&#xff0c;接下来我们分析一下针对不同的节点的处理方…...

告别驱动开发:手把手教你用himm工具在用户空间玩转Hi3516的GPIO

用户空间高效操控Hi3516 GPIO&#xff1a;himm工具实战指南 在嵌入式开发领域&#xff0c;传统的内核驱动开发往往需要经历漫长的编译、加载和调试周期。对于快速硬件验证和原型开发而言&#xff0c;这种开发模式显得过于笨重。海思Hi3516平台提供的himm工具&#xff0c;为开发…...

3步解锁联想刃7000k BIOS隐藏功能:安全提升硬件性能的完整指南

3步解锁联想刃7000k BIOS隐藏功能&#xff1a;安全提升硬件性能的完整指南 【免费下载链接】Lenovo-7000k-Unlock-BIOS Lenovo联想刃7000k2021-3060版解锁BIOS隐藏选项并提升为Admin权限 项目地址: https://gitcode.com/gh_mirrors/le/Lenovo-7000k-Unlock-BIOS 联想刃7…...

硬件工程师实战指南:工业物联网安全、无线充电与TSN网络设计解析

1. 项目概述&#xff1a;一场面向硬件工程师的线上技术盛宴最近在整理行业资料时&#xff0c;翻到了EE Times几年前发布的一个“即将到来的线上技术活动”汇总页面。虽然发布时间是2018年&#xff0c;但里面提到的几个技术主题——工业物联网安全、硬件身份认证、工业以太网演进…...

Abaqus 6.12 保姆级教程:手把手教你搞定悬臂梁的动力学仿真(附阻尼设置与结果动画)

Abaqus 6.12 悬臂梁动力学仿真全流程实战&#xff1a;从阻尼优化到动画渲染 悬臂梁作为结构动力学分析的经典案例&#xff0c;在机械振动、建筑抗震等领域具有广泛的应用价值。本文将基于Abaqus 6.12平台&#xff0c;通过一个完整的动力学仿真案例&#xff0c;深入解析从模型建…...

Davinci vs. 其他开源BI工具(Superset/Metabase)实战对比:我们团队为什么最终选了它?

Davinci vs. 其他开源BI工具实战对比&#xff1a;技术选型的深度思考 在数据驱动决策的时代&#xff0c;企业级BI工具的选择直接影响着数据分析的效率和深度。当我们团队面临开源BI工具选型时&#xff0c;Davinci、Apache Superset和Metabase成为了主要候选对象。经过三个月的实…...

从噪声中捕捉节拍:基于PLL的CDR电路如何重塑光通信数据流

1. 当光信号遇上噪声&#xff1a;CDR电路为何成为关键救星 想象一下你正在嘈杂的菜市场里试图听清朋友说话——周围此起彼伏的叫卖声就像光通信中的噪声&#xff0c;而朋友说话的节奏就是需要提取的时钟信号。这就是光接收机面临的真实困境&#xff1a;传输过来的NRZ信号往往带…...

用PyTorch复现DKT模型:从Assistment数据集处理到LSTM训练全流程(附完整代码)

用PyTorch构建DKT模型&#xff1a;从数据预处理到LSTM实战全解析 在教育技术领域&#xff0c;追踪学生知识掌握程度一直是个核心挑战。想象一下&#xff0c;当学生在在线学习平台上完成一系列数学题时&#xff0c;系统如何预测他们下一步可能遇到的困难&#xff1f;这正是深度知…...

sndcpy音频转发工具:Android设备音频镜像的完整指南

sndcpy音频转发工具&#xff1a;Android设备音频镜像的完整指南 【免费下载链接】sndcpy Android audio forwarding PoC (scrcpy, but for audio) 项目地址: https://gitcode.com/gh_mirrors/sn/sndcpy 想要在电脑上实时收听Android设备的音频内容吗&#xff1f;sndcpy音…...

009、NPU、TPU与硬件加速器在TinyML中的作用

009、NPU、TPU与硬件加速器在TinyML中的作用 去年冬天调试一个智能门锁的唤醒词模型,模型在PC上跑得飞起,量化后只有48KB,自信满满地烧进STM32F4。结果呢?唤醒延迟从预期的200ms直接飙到1.2秒,电池续航从三个月缩水到两周。拆开示波器一看,CPU在跑模型的时候几乎被占满,…...

5分钟掌握暗黑破坏神2存档编辑:免费Web工具完整指南

5分钟掌握暗黑破坏神2存档编辑&#xff1a;免费Web工具完整指南 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 还在为暗黑破坏神2中反复刷装备而烦恼吗&#xff1f;想快速体验不同职业的build却不想从头练级&#xff1f;d2s-ed…...