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 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值