最近在学校的一个项目中,我做了一个“寻宝”游戏,玩家可以在python的网格上找到宝藏和强盗。我有一个办法,使网格在一个固定的大小,但作为一个额外的一点,他们要求我们能够改变网格的大小,数量的胸部和数量的强盗
这是我的网格生成器的代码,但它不会生成“网格”数组,但它会生成“playergrid”:
def gridmaker(gridsize, debug):
global grid
global playergrid
gridinator = 1
grid = [[0]]
playergrid = [[" "]]
if debug == 1:
while gridinator <= gridsize:
grid[gridinator].append(0)
gridinator = gridinator + 1
gridinator = 1
else:
while gridinator <= gridsize:
playergrid[0].append(gridinator)
gridinator = gridinator + 1
gridinator = 1
while gridinator <= gridsize:
if debug == 1:
grid.append([0])
for i in range(gridsize):
grid[gridinator].append(0)
else:
playergrid.append([gridinator])
for i in range(gridsize):
playergrid[gridinator].append("#")
gridinator = gridinator+1
if debug == 1:
grid[1][1] = 1
else:
playergrid[1][1] = "P"
gridmaker(9, 1)
for row in grid:
print(" ".join(map(str,row)))
抱歉,如果它的格式不同,因为有2个空格选项卡而不是4个,它在repl.it上工作得最好
print(grid)应返回如下网格:
0 0 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 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
请告诉我, 谢谢
你必须记住列表是0索引的
这意味着要访问
grid
列表的第一个元素,您将使用索引0
使用
grid = [[0]]
可以创建一个包含一个项目的列表(可以使用grid[0]
获得该项目),该列表的第一个项目(grid[0][0]
)是0
但是你的
gridinator
的起始值是1
。因此,当您的第一个append运行时:它试图访问
grid
的第二个元素:这给了你一个
IndexError
因为,正如回溯应该告诉你的那样*list index out of range
你可以自己试试:
其中一个解决方案可以是从0开始
gridinator
,并在这里使用严格的less而不是less或equal:gridinator <= gridsize
(因为grid[8]给出了grid的第9个元素)*请记住在将来包含错误的回溯。他们真的帮助你自己和帮助你的人
让我知道这是否有帮助,或者我是否应该找到另一种方式来解释它
相关问题 更多 >
编程相关推荐