Python:为什么这不起作用?

时间:2015-06-19 19:19:23

标签: python

我正在制作一个游戏而且棋盘是一个2D阵列,我有一个打印迷宫的程序,每次打印它都会显示一个' X'玩家站在哪里。问题是它保留了一个' X'球员站在哪里:

-1 X -1 -1 
-1 2 3 -1 
-1 -1 4 5 
-1 6 7 -1  
 9 8 -1 a  
 b -1 -1 -1  
 c d -1 -1 
-1 e f -1  
 1 -1 h g

2 X -1 -1 
-1 X 3 -1 
-1 -1 4 5 
-1 6 7 -1 
9 8 -1 a 
b -1 -1 -1 
c d -1 -1 
-1 e f -1 
1 -1 h g 

当只有一个但我不知道为什么时,有两个X'

def printMaze(maze, x, y):
    oldRoom = maze[y][x]
    u = x - 1
    v = y - 1
    maze[v][u] = oldRoom
    maze[y][x] = 'X'
    for i in range(9):
        for z in range(4):
            print str(maze[i][z]).rjust(2),
        print ''

3 个答案:

答案 0 :(得分:0)

在您的示例中,您从(0,1)移至(1,1),但将元素移至(1,1)(0,0)。所以你必须给printMaze新的和旧的职位。

def printMaze(maze, x, y, old_x, old_y):
    maze[old_y][old_x] = maze[y][x]
    maze[y][x] = 'X'
    for row in maze:
        for cell in row:
            print cell,
        print ''

答案 1 :(得分:0)

如果x和y是玩家的坐标,那么你要做的第一件事就是将oldRoom设置为等于玩家所在的位置。那不是X目前的地方吗?

为什么不检查您正在打印的当前位置是否是播放器的位置,而不是在迷宫阵列中的值之间移动,而是打印X?

def printMaze(maze, x, y):
    for i in range(9):
        for z in range(4):
            if i == x and z == y:
                print 'X',
            else:
                print maze[i][z],
        print ''

答案 2 :(得分:-1)

问题是您必须存储“X”所在的最后一个pos,然后使用此最后一个pos来设置_u变量。

v