weixin_39634234 2022-05-03 19:44 采纳率: 100%
浏览 385
已结题

python 飞机大战,调用GameSprite提示Expected type 'AbstractGroup', got 'str' instead

问题描述
问题相关代码,请勿粘贴截图
#**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类能调用并传入图片

  • 写回答

1条回答 默认 最新

  • Python-ZZY 2022-05-03 20:00
    关注

    你的Init方法打错了,是__init__不是__int__,看line10

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月12日
  • 已采纳回答 5月4日
  • 创建了问题 5月3日

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)