和之前有的朋友一樣參照書(shū)本做的飛船游戲,檢查了函數(shù)實(shí)參。但是在執(zhí)行程序時(shí),飛船可以正常左右移動(dòng),但是一按空格鍵就會(huì)彈出“settinghasnoattributebullet”,想請(qǐng)問(wèn)一下原因。Firstgame.pyimportgame_functionsasgfdefrun_game():pygame.initai_settings=Settings()screen=pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))pygame.display.set_caption("AlienInvasion")ship=Ship(ai_settings,screen)bullets=Group()whileTrue:gf.check_events(ai_settings,screen,ship,bullets)ship.update()bullets.update()gf.update_screen(ai_settings,screen,ship,bullets)run_game()Setting.pyclassSettings():def__init__(self):self.ship_speed_factor=1.5self.screen_width=800self.screen_height=600self.bg_color=(230,230,230)self.bullet_speed_factor=1self.bullet_width=3self.bullet_height=15self.bullet_color=60,60,60bullet.pyimportpygamefrompygame.spriteimportSpriteclassBullet(Sprite):def__init__(self,ai_settings,screen,ship):super(Bullet,self).__init__()self.screen=screenself.rect=pygame.Rect(0,0,ai_settings.bullet_width,ai_settings.bullet.height)self.rect.centerx=ship.rect.centerxself.rect.top=ship.rect.topself.y=float(self.rect.y)self.color=ai_settings.bullet_colorself.speed_factor=ai_settings.bullet_speed_factordefupdate(self):self.y-=self.speed_factorself.rect.y=self.ydefdraw_bullet(self):pygame.draw.rect(self.screen,self.color,self.rect)game_function.pyimportsysimportpygamefrombulletimportBulletdefcheck_key_down_events(event,ai_settings,screen,ship,bullets):ifevent.key==pygame.K_RIGHT:ship.moving_right=Trueifevent.key==pygame.K_LEFT:ship.moving_left=Trueelifevent.key==pygame.K_SPACE:new_bullet=Bullet(ai_settings,screen,ship)bullets.add(new_bullet)defcheck_key_up_events(event,ship):ifevent.key==pygame.K_RIGHT:ship.moving_right=Falseelifevent.key==pygame.K_LEFT:ship.moving_left=Falsedefcheck_events(ai_settings,screen,ship,bullets):foreventinpygame.event.get():ifevent.type==pygame.QUIT:sys.exit()elifevent.type==pygame.KEYDOWN:check_key_down_events(event,ai_settings,screen,ship,bullets)elifevent.type==pygame.KEYUP:check_key_up_events(event,ship)defupdate_screen(ai_settings,screen,ship,bullets):forbulletinbullets.sprites():bullet.draw_bullet()screen.fill(ai_settings.bg_color)ship.blitme()pygame.display.flip()ship.pyimportpygameclassShip():def__init__(self,ai_settings,screen):self.screen=screenself.ai_settings=ai_settingsself.image=pygame.image.load('E:\Superman.bmp')self.rect=self.image.get_rect()self.screen_rect=screen.get_rect()self.rect.centerx=self.screen_rect.centerxself.rect.bottom=self.screen_rect.bottomself.center=float(self.rect.centerx)self.moving_right=Falseself.moving_left=Falsedefupdate(self):ifself.moving_rightandself.rect.right0:self.center-=self.ai_settings.ship_speed_factorself.rect.centerx=self.centerdefblitme(self):self.screen.blit(self.image,self.rect)第一次發(fā)帖不太懂格式,請(qǐng)大家指正,謝謝大家了。
Pygame:"Setting object has no attribute bullet"?
森林海
2019-05-22 17:28:24