如何在Python中翻转多维数组内的坐标?

时间:2016-05-04 18:05:51

标签: python multidimensional-array

所以我制作的游戏非常类似于使用10x10主板的跳棋。每个玩家有15个棋子,一个玩家从左上角开始,而另一个玩家从右下角开始。到目前为止,我对移动的想法是玩家将输入他想要移动的检查器的x和y坐标。但是,我想"翻转"每次玩家进行移动时游戏板,因此玩家不必与棋盘的不同侧面一起工作。除了董事会本身和董事会的印刷品之外,我没有太多的代码。如果它有任何帮助,这是我到目前为止的代码,没有什么太花哨的。

matrix = [[1,1,1,1,1,0,0,0,0,0], [1,1,1,1,0,0,0,0,0,0], [1,1,1,0,0,0,0,0,0,0], [1,1,0,0,0,0,0,0,0,0], [1,0,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,2], [0,0,0,0,0,0,0,0,2,2], [0,0,0,0,0,0,0,2,2,2], [0,0,0,0,0,0,2,2,2,2], [0,0,0,0,0,2,2,2,2,2]]

print "\n".join(" ".join(str(el) for el in row) for row in matrix)


print matrix[0][0]

结果如下:

1 1 1 1 1 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0
1 1 1 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 2
0 0 0 0 0 0 0 0 2 2
0 0 0 0 0 0 0 2 2 2
0 0 0 0 0 0 2 2 2 2
0 0 0 0 0 2 2 2 2 2

所以从理论上讲,如果我想在最低行上移动检查器,我会输入x = 0和y = 4,其中包含" 1"检查。但是如果第二个玩家想要在他们身边移动相同的棋子,他们将不得不输入x = 9和y = 5.

有没有办法翻转坐标,其中人2也输入x = 0和y = 4来移动最后一个检查器。我更喜欢这个系统,因为我觉得它不那么令人困惑。

2 个答案:

答案 0 :(得分:0)

如果我理解,您希望第二个用户看到以下矩阵

2 2 2 2 2 0 0 0 0 0
2 2 2 2 0 0 0 0 0 0
2 2 2 0 0 0 0 0 0 0
2 2 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 1 1 1
0 0 0 0 0 0 1 1 1 1
0 0 0 0 0 1 1 1 1 1

如果这是正确的,我认为最简单的方法是使用numpy

import numpy as np

new_matrix = np.fliplr(np.flipud(matrix)) # flip left-right and flip up-down
new_matrix = new_matrix.tolist() # If you want to use a list
                                 # instead a numpy array after the operation

答案 1 :(得分:0)

如果您不想每次都翻转数组,您可以转换第二个玩家输入

def transform_p2(x,y):
    p2_x = 9-x
    p2_y = 9-y
    return p2_x, p2_y