Python space 入侵者游戏试图将所有敌人的 x 坐标与墙的 x 坐标进行比较

Python space invaders game trying to compare the x-coordinates of all enemies to wall's

我正在制作一个 space 入侵者克隆,我正在尝试实现敌人的墙壁碰撞,但我似乎无法将所有 x 坐标与墙壁进行比较(我使用乌龟绘制了所有敌人并将他们在列表中)我收到错误(如果 enemies_coordinates[i] > -280:IndexError: 列表索引超出范围)这让我感到困惑,因为我将敌人坐标附加到 enemies_coordinates 列表但它只输出一个。我可能在做一些奇怪的事情,感谢您的帮助。

#FIXME Check the cordainates of all enemies for wall collison
def enemy_coor():
    i = 0
    for alien in enemies:
        global enemies_coordinates
        enemies_coordinates = []
        enemies_coordinates.append(enemies[i].xcor())
        print(enemies_coordinates)
        i += 1

#FIXME Wall collioson
def alien_wall_collison():
    i = 0
    for alien in enemies:
        print(i)
        if enemies_coordinates[i] > -280:
            print("turn Right")
        i += 1

您的错误之一是您在 enemy_coor 中的每个循环中都重置了 enemies_coordinates。我会建议一个没有这个错误的代码,我也使用枚举来获得更好的编程习惯,一般来说我不鼓励你使用全局变量,但我坚持你当前的实现。

enemies_coordinates = []

def enemy_coor():
   global enemies_coordinates
   for alien in enemies:
       enemies_coordinates.append(alien.xcor())
       print(enemies_coordinates)

def alien_wall_collison():
    for i, alien in enumerate(enemies):
        if enemies_coordinates[i] > -280:
            print("turn Right")

你将值附加到 enemies_coordinates = [] 但你没有定义敌人或者你可以尝试这个 enemies_coordinates.append(alien[i].xcor()) 而不是在之后这样做定义敌人

并减小 if 条件的值