【问题标题】:Alien fleet falls diagonally外星舰队斜落
【发布时间】:2022-06-11 00:07:30
【问题描述】:

在“Python Crash Course”的第 266 页上,当你应该让舰队下降一个然后改变方向时,我的外星舰队斜着下降。使用 print 语句后,我可以看到变量 fleetDirection 从 1 变为 -1 到 1,依此类推。问题是它不断地改变方向,所以它会掉下来。我应该怎么做才能解决这个问题?

def check_edges(self):
    screenRect = self.screen.get_rect()

    if self.rect.right >= screenRect.right or self.rect.left <= 0:
        return True

def update(self):
    self.x += (self.settings.alienSpeed * self.settings.fleetDirection)
    self.rect.x = self.x

def check_fleet_edges(self):
    for alien in self.aliens.sprites():
        if alien.check_edges():
            self.change_fleet_direction()
            break
def change_fleet_direction(self):
    for alien in self.aliens.sprites():
        alien.rect.y += self.settings.fleetDropSpeed
    self.settings.fleetDirection *= -1

【问题讨论】:

  • 您的self.settings.fleetDirection *= -1 只是让fleetDirection 从-1 切换到1 每次改变方向。你想让它往哪个方向发展?
  • 它将 -1 转换为 1 使 self.x += 行以正数而不是负数改变方向。从而改变方向。
  • 阅读this article 了解调试代码的技巧。
  • 我已经调试了我的程序并发现了问题。问题是我不知道如何解决问题
  • 很抱歉,我不太明白您所说的 to make the fleet fall one then change direction, my alien fleet falls diagonally. 是什么意思,能否请您提供一些调试信息,例如预期的 x,y 值和实际的 x,y 值?

标签: python


【解决方案1】:

解决方案是在run game 方法中添加UpdateAliends()

【讨论】:

    【解决方案2】:

    我发现了这个问题。在我的run_game 方法中,我有self.check_fleet_edges() 这使得当check_edges 返回true 时它会不断运行check_fleet_edges()。感谢您给我一个正确语法的链接;这帮助我找到了问题。

    【讨论】:

      猜你喜欢
      • 2019-11-22
      • 2022-12-30
      • 2022-12-25
      • 2015-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      相关资源
      最近更新 更多