【发布时间】:2021-07-24 13:45:17
【问题描述】:
我创建了一个充当 8x8 矩阵的二维数组。 我的目标是使用由 wasd 移动的光标使该矩阵完全可导航。 这有效,但仅适用于向上和向左。不适合上下左右。
-创建矩阵的代码
matrix = []
for i in range(8):
i = []
for j in range(8):
i.append(" ")
matrix.append(i)
-导航矩阵的代码,它的工作原理是找到光标 (+) 的坐标,然后删除它的旧位置并将其插入到新的坐标集中。
row= len(matrix)
column=len(matrix[0])
direction = input("wasd")
if direction == "w":
for i in range(row):
for j in range(column):
if matrix[i][j]=="+":
matrix[i][j]=" "
matrix[i-1][j]= "+"
elif direction == "a":
for i in range(row):
for j in range(column):
if matrix[i][j]=="+":
matrix[i][j]=" "
matrix[i][j-1]= "+"
elif direction == "s":
for i in range(row):
for j in range(column):
if matrix[i][j]=="+":
matrix[i][j]=" "
matrix[i+1][j]= "+"
elif direction == "d":
for i in range(row):
for j in range(column):
if matrix[i][j]=="+":
matrix[i][j]=" "
matrix{i][j+1]= "+"
当我尝试向下或向右移动时出现列表索引超出范围错误,但向上和向左移动完美。
【问题讨论】:
-
看起来这不是您拥有的所有代码。你能明确描述给你一个错误的运行过程,并给我们一份回溯的副本吗?但就目前而言,我几乎可以肯定您应该在移动光标之前检查与边界的冲突。例如,如果 matricx[3][7] == '+' 并且您输入 'd' 代码的最后一行将等于 matrix[3][8] = '+' 则您的代码中没有这样的元素矩阵。
标签: python list matrix multidimensional-array