社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  问与答

[小白提问]关于射击外星人游戏中出现的错误

christy • 6 年前 • 2397 次点击  

显示一个外星人的时候没问题,但是用编组创建一排外星人的时候却报错,错误代码:

Traceback (most recent call last):
  File "alien_invasion.py", line 22, in <module> 
    File "alien_invasion.py", line 16, in run_game
    File "C:\Users\wjc19\Desktop\alien_invasion\game_functions.py", line 61, in creat_fleet
    File "C:\Users\wjc19\AppData\Local\Programs\Python\Python37\lib\site-packages\pygame\sprite.py", line 361, in add
    sprite.add_internal(self)
  File "C:\Users\wjc19\AppData\Local\Programs\Python\Python37\lib\site-packages\pygame\sprite.py", line 163, in add_internal
    self.__g[group] = 0
AttributeError: 'Alien' object has no attribute '_Sprite__g'

百度搜的时候有人说是因为函数中参数没有对应造成的,但是我仔细看过不是这个问题 附上部分代码,希望有大神能帮忙找下错误,还有就是想问下‘str’object has no attribute '....'这个错误出现的原因都有哪些

alien_invasion.py
import pygame#主程序,运行程序
from pygame.sprite import Group
from settings import Settings
from ship import Ship
from alien import Alien
import game_functions as gf
def run_game():
        pygame.init()
        ai_settings=Settings()
        screen=pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
        pygame.display.set_caption("Alien Invasion")
        ship=Ship(ai_settings,screen)
        bullets=Group()
        aliens=Group()
        gf.creat_fleet(ai_settings,screen,aliens)
        while True:     
                gf.check_events(ai_settings,screen,ship,bullets)
                ship.update()
                gf.update_bullet(bullets)
                gf.update_screen(ai_settings,screen,ship,aliens,bullets)
run_game()
game_functions.py
import sys
import pygame
from bullet import Bullet
from alien import Alien
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()
def creat_fleet(ai_settings,screen,aliens):
            alien=Alien(ai_settings,screen)
            alien_width=alien.rect.width
            available_space_x=ai_settings.screen_width-2*alien_width
            number_aliens_x=int(available_space_x/(2*alien_width))
            for alien_number in range(number_aliens_x):
                    alien=Alien(ai_settings,screen)


    

                    alien.x=alien_width+2*alien_width*alien_number
                    alien.rect.x=alien.x
                    aliens.add(alien)
最后一次修改于 (2019-05-09 12:17)
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/32717
 
2397 次点击  
文章 [ 2 ]  |  最新文章 6 年前