fcdslfa 2019-10-22 16:06 采纳率: 0%
浏览 512

外星人入侵11.3节,draw函数报错

在创建一行外星人处出现了draw的错误。

错误提示;

Traceback (most recent call last):
  File "G:\programfile\anaconda\lib\site-packages\IPython\core\interactiveshell.py", line 3267, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-2-a8fd6439e5d9>", line 1, in <module>
    runfile('F:/xm/Python/alien_invasion/alien_invasion.py', wdir='F:/xm/Python/alien_invasion')
  File "G:\programfile\pycharm\PyCharm Community Edition 2019.2.3\helpers\pydev\_pydev_bundle\pydev_umd.py", line 197, in runfile
    pydev_imports.execfile(filename, global_vars, local_vars)  # execute the script
  File "G:\programfile\pycharm\PyCharm Community Edition 2019.2.3\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "F:/xm/Python/alien_invasion/alien_invasion.py", line 28, in <module>
    run_game()
  File "F:/xm/Python/alien_invasion/alien_invasion.py", line 24, in run_game
    gf.update_screen(ai_settings, screen, ship, alien, bullets)
  File "F:\xm\Python\alien_invasion\game_functions.py", line 39, in update_screen
    alien.draw(screen)
AttributeError: 'Alien' object has no attribute 'draw'

alien模块:

import pygame
from pygame.sprite import Sprite

class Alien(Sprite):
    def __init__(self, ai_settings, screen):
        super(Alien, self).__init__()
        self.screen = screen
        self.ai_settings = ai_settings

        self.image = pygame.image.load('images/alien.bmp')
        self.rect = self.image.get_rect()

        self.rect.x = self.rect.width
        self.rect.y = self.rect.height
        self.x = float(self.rect.x)
    def blitme(self):
        self.screen.blit(self.image, self.rect)

game_function中update_screen模块

def update_screen(ai_settings, screen, ship, aliens, bullets):
    screen.fill(ai_settings.bg_color)
    for bullet in bullets.sprites():
        bullet.draw_bullet()
    ship.blitme()
    aliens.draw(screen)**##错误代码**
    pygame.display.flip()

在显示一个外星人是可以的,但是将显示外星人的代码改成aliens.draw(screen)后报错。

  • 写回答

1条回答 默认 最新

  • 毁人不倦295 2021-10-24 09:27
    关注

    错误在于Group的后面没有加()

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?