问题描述
问题相关代码,请勿粘贴截图
#**plane_sprite__**
import pygame
class GameSprite(pygame.sprite.Sprite):
"""
飞机游戏精灵
"""
def __int__(self, image_name, speed=1):
# 调用父类方法
super().__init__()
# 定义对象属性
self.image = pygame.image.load(image_name)
self.rect = self.image.get_rect()
self.speed = speed
def update(self):
self.rect.y += self.speed
#**主程序**
import pygame
from plane_sprites import *
pygame.init()
# 创建游戏窗口
screen = pygame.display.set_mode((480, 700))
# 绘背景图像
# 1.加载图像数据
bg = pygame.image.load("./images/background.png")
# 2.blit绘制图像
screen.blit(bg, (0, 0))
# 3。update更新屏幕显示
# pygame.display.update()
# 绘制英雄飞机
hero = pygame.image.load("./images/me1.png")
screen.blit(hero, (200, 500))
pygame.display.update()
# 创建时钟对象
clock = pygame.time.Clock()
# 1.定义rect记录飞机初始位置
hero_rect = pygame.Rect(200, 500, 102, 126)
# 创建敌机的精灵
enemy = GameSprite("./images/enemy1.png")
enemy1 = GameSprite("./images/enemy1.png",2)
enemy_group = pygame.sprite.Group(enemy, enemy1)
# 游戏循环,意味着游戏开始了
while True:
# 指定游戏循环频率
clock.tick(60)
# 事件监听
for event in pygame.event.get():
# 判断是否为退出事件
if event.type == pygame.QUIT:
print("退出游戏")
# quit 卸载所有模块
pygame.quit()
# exit() 终止程序
exit()
# 捕获事件
event = pygame.event.get()
# 2.修改飞机的位置
hero_rect.y -= 5
# 判断飞机的位置
if hero_rect.y <= 0:
hero_rect.y = 700
# 3.调用blit绘制飞机的位置图像
screen.blit(bg, (0, 0))
screen.blit(hero, hero_rect)
# 4.调用update更新显示
pygame.display.update()
pass
pygame.quit()
运行结果及报错内容
File "/home/april/Desktop/planewar/listen_quit.py", line 33, in <module>
enemy = GameSprite("./images/enemy1.png")
File "/usr/local/lib/python3.9/dist-packages/pygame/sprite.py", line 116, in __init__
self.add(*groups)
File "/usr/local/lib/python3.9/dist-packages/pygame/sprite.py", line 134, in add
self.add(*group)
File "/usr/local/lib/python3.9/dist-packages/pygame/sprite.py", line 134, in add
self.add(*group)
File "/usr/local/lib/python3.9/dist-packages/pygame/sprite.py", line 134, in add
self.add(*group)
[Previous line repeated 993 more times]
File "/usr/local/lib/python3.9/dist-packages/pygame/sprite.py", line 129, in add
if hasattr(group, "_spritegroup"):
RecursionError: maximum recursion depth exceeded while calling a Python object
我的解答思路和尝试过的方法
调用GameSprite的时候。提示传入groups: AbstractGroup,并没有我重写的image_name参数提示,我尝试在update内传入args也无效
我想要达到的结果
GamesSprite类能调用并传入图片