显示一个外星人的时候没问题,但是用编组创建一排外星人的时候却报错,错误代码:
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)