Pygame中Sprite类的使用1

news2025/1/21 15:43:09

在Pygame中有一个名为sprite的模块,又叫做“精灵”模块。通过该模块中的Sprite类可以实现图形的绘制、移动以及碰撞检测等功能。

1 Sprite类的编写

例如,要绘制“植物大战僵尸”中的僵尸,就可以创建一个新类,让该类继承自sprite模块中的Sprite类,代码如下所示。

class Zombie(pygame.sprite.Sprite):

在绘制僵尸图形时,需要僵尸图片以及该图片的位置。因此需要在Zombie类的__init__()函数中对这两个属性进行设置。

1.1 __init__()函数

1.1.1 设置僵尸图片

在Zombie类的__init__()函数中,使用image模块的load()函数导入指定的图片。

def __init__(self, x, y):
        super().__init__()
        self.image = pygame.image.load('1.png')

可以看出,Zombie类的__init__()函数包含了三个参数,参数x和参数y分别表示僵尸图形所处的x轴位置和y轴位置。在__init__()函数中,首先调用了其父类,也就是Sprite类的__init__()函数,之后为Zombie类添加image属性,该属性即为导入的僵尸图片。

需要注意的是,此时load()函数的参数是图片文件的相对路径,也就是图片和代码文件在同一路径下,也可以为load()函数指定图片的绝对路径。

1.1.2 设置僵尸图片的位置

接下来,在__init__()函数中,为Zombie类添加rect、x和y三个属性,代码如下所示:

self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y

其中,rect表示图片左上角所处的坐标,rect.x表示横坐标,rect.y表示纵坐标。也就是说所,在定义Zombie类的实例时,需要指定该图片所处的位置。

1.2 绘制僵尸图片

定义Zombie类的draw()方法来绘制僵尸图片,代码如下所示。

def draw(self, scree):
     screen.blit(self.image, self.rect)

其中,draw的screen参数是Surface类的实例,表示创建的屏幕。通过Surface类的blit()方法将指定的图片画到指定的位置处。

相关链接2:

Pygame显示文字_棉猴的博客-CSDN博客

1.3 僵尸图片的更新

定义Zombie类的update()方法将僵尸图片更新到屏幕中,代码如下所示:

def update(self):
   pygame.display.update()

2 屏幕的创建

使用如下代码创建显示僵尸的屏幕。

pygame.init()
screen = pygame.display.set_mode((400, 500))
screen.fill((255,255,255))

相关链接3:

Pygame显示文字_棉猴的博客-CSDN博客

3 在屏幕右上方绘制僵尸

使用如下代码在创建好的屏幕screen上的右上方绘制僵尸。

z1 = Zombie(350, 80)
z1.draw(screen)
z1.update()

其中,z1是Zombie类的实例,坐标(350,80)表示僵尸位于屏幕右上方,之后调用Zombie类的draw()方法绘制僵尸,最后调用Zombie类的update()方法在屏幕上显示僵尸。效果如图1所示。

图1 僵尸的显示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/996749.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

零基础Linux_2(基本指令_上)目录/文件的显示跳转创建删除

目录 1. 目录内容的显示 ls(显示非隐藏文件) pwd(显示用户当前所在的目录) ls -l(列出文件的详细信息) ls -a(显示隐藏文件) 2. 目录的跳转操作 cd ..(回到上级路径) cd 绝对路径名(进入这个路径) cd 绝对相对名(进入这个路径) cd ~(跳转到当前用户的家目录) cd -(跳…

SQL语法知识回顾

一、SQL语言的分类 由于数据库管理系统(数据库软件)功能非常多,不仅仅是存储数据,还要包含:数据的管理、表的管理、库的管理、账户管理、权限管理等等。所以,操作数据库的SQL语言,也基于功能&am…

Microsoft Edge网页视频播放绿屏解决方法(B站)

一:问题,在B站观看视频时有绿色条纹 二:查找原因,未知 三:解决方法 三.1网页设置关闭硬件加速 三.2 点击视频播放下的 “小齿轮”,然后点击“更多播放设置” 把播放策略 “默认” 改为“AVC” 四&…

[SUCTF2019]SignIn 题解

是一个64位的文件 使用了RSA加密算法 N是103461035900816914121390101299049044413950405173712170434161686539878160984549 使用在线网站分离得到p,q 然后编写脚本进行解密 import gmpy2 import binasciip 282164587459512124844245113950593348271 q 366669…

回归预测 | MATLAB实现MPA-BiGRU海洋捕食者算法优化双向门控循环单元多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现MPA-BiGRU海洋捕食者算法优化双向门控循环单元多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现MPA-BiGRU海洋捕食者算法优化双向门控循环单元多输入单输出回归预测(多指标,多图&a…

03-系统篇-内存碎片

一.常见的malloc内存分配原理 1内存分配原理 linux中应用层动态分配内存一般是用的malloc函数,而malloc在glibc中实现时,是用sbrk()来分内存. 在前面的章节中,我们了解到了堆的概念,堆在内存中,是一断连续的内存&…

适应度函数

23个基准测试函数 优化算法常用的适应度函数23个基准测试函数的图像python版code将以上代码打包为exe 优化算法常用的适应度函数 23个基准测试函数的图像 python版code 将23个基准测试函数封装成python库,并进行实例化、调用绘图函数。下面代码只需根据提示打印&am…

算法通关村18关 | 透析回溯的

回溯有清晰的解题模板, void backtracking(参数){if (终止条件){存放结果;return;}for (选择本层中的集合元素(画成树,就是树节点孩子的大小) {处理节点;backtracking();回溯,撤销处理结果;}} 1. 从N叉树说起 在回溯之前&#x…

时序分解 | MATLAB实现ICEEMDAN+SE改进的自适应经验模态分解+样本熵重构分量

时序分解 | MATLAB实现ICEEMDANSE改进的自适应经验模态分解样本熵重构分量 目录 时序分解 | MATLAB实现ICEEMDANSE改进的自适应经验模态分解样本熵重构分量效果一览基本介绍程序设计参考资料 效果一览 基本介绍 ICEEMDANSE改进的自适应经验模态分解样本熵重构分量 包括频谱图 避…

配置Xftp绕过跳板机直连内网环境

一、需求说明 因现场环境限制,现在只有一台管理主机可连入内网环境,但因现在需要传入大量数据到内网环境,二管理主机的存储又无法满足需求,rz和sz命令又有传输大小限制,因此,我们来看下如何配置【隧道】实现…

Win10如何找回图片查看器

近期有小伙伴反映在将Win10升级之后发现电脑自带的图片查看器没有了,这是怎么回事,该怎么找回呢,下面小编就给大家详细介绍一下Win10找回图片查看器的方法,有需要的小伙伴快来和小编一起阅读看看吧。 win10找回windows照片查看器…

日志平台搭建第三章:Linux安装logstash

相关链接 项⽬主⻚: https://www.elastic.co/cn/downloads/logstash 下载地址: wget https://artifacts.elastic.co/downloads/logstash/logstash-7.5.1.tar.gz 官网下载可能比较慢,下面提供下载地址 百度云链接:https://pan.…

【Linux】对进程概念的理解

一丶进程概念 进程定义 进程是一个具有一定独立功能的程序在一个数据集合上依次动态执行的过程。进程是一个正在执行的程序的实例,包括程序计数器、寄存器和程序变量的当前值。 进程特征 1.进程依赖于程序运行而存在,进程是动态的,程序是…

生成树协议 STP(spanning-tree protocol)

一、STP作用 1、消除环路:通过阻断冗余链路来消除网络中可能存在的环路。 2、链路备份:当活动路径发生故障时,激活备份链路,及时恢复网络连通性。 二、STP选举机制 1、目的:找到阻塞的端口 2、STP交换机的角色&am…

UG\NX CAM二次开发 设置工序毛坯 UF_CAMGEOM_append_items

文章作者:代工 来源网站:NX CAM二次开发专栏 简介: UG\NX CAM二次开发 设置工序毛坯 UF_CAMGEOM_append_items 效果: 代码: static int init_proc(UF_UI_selection_p_t select, void* user_data) { int errorCode = 0; int num_triples = 1; UF_UI_mask_t mas…

JavaScript设计模式(五)——发布订阅模式、桥接模式、组合模式

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…

Rokid Jungle--Max pro

介绍和功能开发 YodaOS-Master操作系统:以交换计算为核心,实现单目SLAM空间交互,具有高精度、实时性和稳定性。发布UXR2.0SDK,为构建空间内容提供丰富的开发套件 多模态交互 算法原子化 多种开发工具协同 多生态支持 骁龙XR2…

无swing,高级javaSE毕业之贪吃蛇游戏(含模块构建,多线程监听服务),已录制视频

JavaSE,无框架实现贪吃蛇 B站已发视频:无swing,纯JavaSE贪吃蛇游戏设计构建 文章目录 JavaSE,无框架实现贪吃蛇1.整体思考2.可能的难点思考2.1 如何表示游戏界面2.2 如何渲染游戏界面2.3 如何让游戏动起来2.4 蛇如何移动 3.流程图…

Jetsonnano B01 笔记7:Mediapipe与人脸手势识别

今日继续我的Jetsonnano学习之路,今日学习安装使用的是:MediaPipe 一款开源的多媒体机器学习模型应用框架。可在移动设备、工作站和服务 器上跨平台运行,并支持移动 GPU 加速。 介绍与程序搬运官方,只是自己的学习记录笔记&am…

QT 完成登陆界面跳转到聊天室+完成学生管理系统的查找和删除功能

一、完成登陆界面跳转到聊天室 1> 项目结构 2> 源码 ① .pro ②main #include "mywnd.h" #include"chatCli.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);MyWnd w;w.show();Form f;QObject::co…