在python中搜索数组

时间:2015-03-09 10:48:29

标签: python arrays

我正在尝试编写将处理碰撞检测的游戏部分。目前它看起来像这样

def collision_detection(player_x, player_y):
movment_ok=1
cannot_go_onto=[[0,20,20,40],[520,500,480,460]] #coordinates with no access. X, Y
if player_x in cannot_go_onto[0]:
    location_in_array=cannot_go_onto[0].index(int(player_x))
    if player_y==cannot_go_onto[1][location_in_array]:
        print("collision detection")
        movment_ok=0
return movment_ok

这适用于坐标(0,520)(20,500)& (40,460)但它不适用于坐标(20,480)。我认为这是因为行

location_in_array=cannot_go_onto[0].index(int(player_x))

索引搜索返回1,因为它只是第一次20出现在数组中两次。因此,只检查位置(20,500),因为它首先出现在数组中。但是我不知道如何解决这个问题。任何想法/帮助将非常感激。

1 个答案:

答案 0 :(得分:4)

只有一个无访问坐标的数组,而不是2个单独的列表,这不是更简单。

cannot_go_onto = set([(0,520), (20,500), (20,480), (40,460)])

def collision_detection(player_x, player_y):
    play_position = (player_x, player_y)
    if play_position in cannot_go_onto:
        print("collision detection")
        return False
    return True

编辑:

  • 在函数外部放置了cannot_go_onto,因为无需每次都重新创建数组。
  • 制作could_go_onto一套,更适合搜索表演。 (感谢tobias_k指出来)