你好。我是一个代码初学者,基本上我用python做了一个简单的迷宫游戏。 它是3x3,所以我制作了9个字典变量,详细说明了每个图块(北、南、东、西)可能的移动 我的代码由嵌套的if elif和一个main while循环组成。你知道吗
if level == 1: #level of difficulty.
i = 0
maplist1 = {'directions1':'south'}
maplist2 = {'directions1':'south','directions2':'east'}
maplist3 = {'directions1':'west'}
maplist4 = {'directions1':'north','directions2':'east','directions3':'south'}
....
....
current_position = 1 #local variable within the first if statement
下面是代码块的一个片段,它将被重复,几乎没有变化(字面上重复)。你知道吗
while i == 0: #to continuously loop the program
if current_position == 1:
directions = maplist1['directions1']
direction = input(f"What direction do you want to go: {directions} ").title() #choose the possible directions to go to.
if direction == "S" or direction == "South":
current_position = 4
print(f"You are in cell {current_position}.")
else:
print("Cannot go in that direction.")
if current_position == 2:
directions = maplist2['directions1']
directions2 = maplist2['directions2']
direction = input(f"What direction do you want to go: {directions} {directions2} ").title()
if direction == "S" or direction == "South":
current_position = 5
print(f"You are in cell {current_position}.")
elif direction == "E" or direction == "East":
current_position = 3
print(f"You are in cell {current_position}.")
else:
print("Cannot go in that direction.")
if current_position == 3:
directions = maplist3['directions1']
direction = input(f"What direction do you want to go: {directions} ").title()
if direction == "W" or direction == "West":
current_position = 2
print(f"You are in cell {current_position}.")
else:
print("Cannot go in that direction.")
if current_position == 4:
directions = maplist4['directions1']
directions2 = maplist4['directions2']
directions3 = maplist4['directions3']
direction = input(f"What direction do you want to go: {directions} {directions2} {directions3} ").title()
if direction == "N" or direction == "North":
current_position = 1
print(f"You are in cell {current_position}.")
elif direction == "S" or direction == "South":
current_position = 7
print(f"You are in cell {current_position}.")
elif direction == "E" or direction == "East":
current_position = 5
print(f"You are in cell {current_position}.")
else:
print("Cannot go in that direction.")
.......
......
.......
if current_position == 9:
print("Congratulations, you finished the game.")
i += 1 #to stop the loop
我的问题是如何使它更简单,更紧凑?你知道吗
这个游戏有3个关卡,基本上是3x3,4x4和5x5。这就是为什么我想知道如何缩短/压缩代码的原因。你知道吗
我不需要你给我你的代码,但一些指导将是伟大的如何进行,因为我现在感到迷茫。你知道吗
利用规则而不是硬编码任何东西。你知道吗
如果你有一个3x3迷宫,你的(x,y)索引是类似的
您可以将其存储为列表列表:
可以使用函数对其进行编码:
要调整
n
xn
,只需给出其他dim
规则是相同的。你知道吗尝试创建一个迷宫式的数据结构。一个典型的想法是创建一个二维单元阵列,每个单元都有一个北/西/南/东墙。你知道吗
让我们创建一个类,只是为了更好地理解。我希望你忽略除
can_move()
方法之外的所有内容。你知道吗让我们做一些细胞,看看它们是什么样子:
现在,一个迷宫是由一个二维的细胞列表组成的。这里有一个小迷宫:
看起来是这样的:
但是等等!我们还没有定义什么是
Maze
。再一次,忽略所有与绘图相关的内容,将注意力集中在move_direction()
。你知道吗要使用它,只需创建一个简单的小循环:
看着奇迹发生!你知道吗
你可以试试here。你知道吗
不要把迷宫想象成一维,即当前的位置(1,2,3,9),你应该把它想象成二维矩阵空间((0,0),(0,1))。你知道吗
我们不应该把基本迷宫硬编码为3,我们应该考虑nxnmaze,因为现在你已经实现了3x3的逻辑,现在你应该可以把它扩展到nxn
你用你的地图来处理可能的方向,我们应该写边界条件的逻辑,就像一个检查每一步可能的方向的方法
方向处理应该是这样的
相关问题 更多 >
编程相关推荐