路在前方QAQ 2021-08-25 18:02 采纳率: 100%
浏览 44
已结题

一直报错未定义名称头快炸了啊,少侠们帮帮忙把!

模块(火箭游戏):

def run_game():
pygame.init()
ai_settings = Shezhi()

#游戏窗口设置
screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height))

#游戏名称设置
pygame.display.set_caption('火箭')

ship = Ship(screen)

#创建一艘飞船、一个子弹编组和一个外星人编组

#设置一个编组用来储存子弹
bullets = Group()

#创建一个外星人编组
aliens = Group()


#创建一个外星人
alien = Alien(ai_settings, screen)

#游戏主循环程序
while True:
    Xy.events(ship, bullets, ai_settings, screen)
    
    #飞船移动条件和速度
    ship.update(ai_settings)
    
    #创建外星人群
    ship.create_fleet(ai_settings, aliens)
    
    bullets.update()
    
    #绘制屏幕和让最近绘制的屏幕可见
    ship.update_screen(ai_settings, alien, bullets, ship)

run_game()

模块(矩形坐标位置与图片导入绘制):

coding=utf-8

ai_settings = Shezhi()

    self.up = False
    self.down = False
    self.left = False
    self.right = False
    
    self.x = float(self.rect.centerx)
    self.y = float(self.rect.centery)



def blitme(self):
        
    self.screen.blit(self.image, self.rect)
        
        
def update(self, ai_settings):        
    if self.up and self.rect.top > 0:
        self.y -= ai_settings.speed
    if self.down and self.rect.bottom < self.screen_rect.bottom:
        self.y += ai_settings.speed
    if self.left and self.rect.left > 0:
        self.x -= ai_settings.speed
    if self.right and self.rect.right < self.screen_rect.right:
        self.x += ai_settings.speed
        
        
    self.rect.centerx = self.x
    self.rect.centery = self.y
                                                

def update_screen(self, ai_settings, alien, bullets, ship):
    self.screen.fill(ai_settings.color)    
        
    for bullet in bullets.sprites():
        bullet.draw_zd()
        
        
    ship.blitme()
        
    alien.blitme()
    aliens.draw(screen)
        
    pygame.display.flip()
        
        
def get_number_aliens_x(ai_settings, alien_width):
    """计算每行可以容纳多少个外星人"""
    available_space_x = ai_settings.screen_width - 2 * alien_width
    number_alien_x = int(available_space_x / (2 * alien_width))
    return number_alien_x
        
        
        
        
def create_fleet(ai_settings, screen, aliens):
    """创建外星人群"""
    #创建一个外星人,并计算一行可容纳多少个外星人
    #外星人间距为外星人宽度
    alien = Alien(ai_settings, screen)
    alien_width = alien.rect.width
    number_aliens_x = get_number_aliens_x(ai_settings, alien_width)
    number_rows = get_number_rows(ai_settings, ship.rect.height,
        alien.rect.height)
    return alien 

    #创建第一行外星人
    for row_number in range(number_rows):
        for alien_number in range(number_alien_x):
            create_alien(ai_settings, screen, aliens, alien_number, row_number)
            #创建第一行外星人并将其加入当前行
            alien = Alien(ai_settings, screen)
            alien.x = alien_width + 2 * alien_width * alien_number
            alien.rect.x = alien.x
            aliens.add(alien)

#全是名称(get_number_aliens_x)未定义头都搞大了哪位支个招吧救救我啊.......
img

def create_alien(ai_settings, screen, aliens, alien_number):
    
    """创建一个外星人将其放在当前行"""
    alien = Alien(ai_settings, screen)
    alien_width = alien.rect.width
    alien.x = alien_width + 2 * alien_width * alien_number
    alien.rect.x = alien.x
    aliens.add(alien)
  • 写回答

2条回答 默认 最新

  • Pliosauroidea 2021-08-25 18:24
    关注

    ?你是不是把函数定义写在类里面了
    你这个缩进有点乱,但是看函数并列关系我怀疑你把get_number_aliens_x定义在Ship类里了
    有帮助望采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月2日
  • 已采纳回答 8月25日
  • 创建了问题 8月25日

悬赏问题

  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧