5.pygame快速入门-精灵和精灵组
在之前案例中,图像加载、位置变化、绘制图像都需要编写代码分别处理
pygame提供了两个类简化开发步骤
pygame.sprite.Sprite #精灵,存储图像数据image和位置rect的对象 pygame.sprite.Group #精灵组更新和绘制所有精灵对象
派生精灵子类
定义子类继承pyagem.sprite.Sprite #属性 image:精灵图像,使用image_name加载 rect:精灵大小,默认使用图像大小 speed:精灵移动速度,默认为1 #方法 update:每次更新屏幕时在游戏循环内调用 #### image的get_rect()方法可以返回pygame.Rect(0,0,图像宽、图像高)的对下
import pygame """飞机大战游戏精灵""" # 继承pygame.sprite.Sprite class GameSprite(pygame.sprite.Sprite): def __init__(self, image_name, speed): super().__init__() # 使用super调用父类的初始化方法 self.image = pygame.image.load(image_name) # 加载图片数据 self.rect = self.image.get_rect() # 获取图片对象 self.speed = speed # 定义移动速度 def update(self): # 在屏幕的垂直方向向上移动 # 位置的y += 移动速度,每次移动1 self.rect.y += self.speed
使用精灵和精灵组创建敌机
在游戏初始化创建精灵对象和精灵组对象
在游戏循环中让精灵组分布调用update和draw()方法
精灵职责:
封装图像image、位置rect、和速度speed
提供update方法,根据游戏需求,更新位置rect
精灵组职责:
包含多个精灵对象
update方法让精灵组中的所有精灵调用update方法更新位置
draw方法在屏幕上绘制精灵组中的所有精灵
#游戏初始化 import pygame from plane_sprites import GameSprite 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() # 创建敌机精灵 enemy = GameSprite('./images/enemy1.png', 1) # 创建敌机的精灵组 enemy_group = pygame.sprite.Group(enemy)
#游戏循环 while True: # 调用帧率方法,每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) # 更新精灵组所有精灵 enemy_group.update() # 将精灵组精灵绘制到屏幕 enemy_group.draw(screen) # 更新图像 pygame.display.update() for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() exit()
风月都好看,人间也浪漫.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)