我正在尝试制作基于地下城的游戏并且正在制作理论路径查找器,但每当我运行该程序时,它只会打印出我在第一个位置输入的相同坐标(理论值)。我对编程有点“新”,所以我卡住了
import winsound
def main():
snd = winsound.Beep
a = input("Enter the x value for the entrance: ")
b = input("Enter the y value for the entrance: ")
entrance = [a, b]
x = input("Enter the x value for the exit: ")
y = input("Enter the y value for the exit: ")
a = float(a)
b = float(b)
x = float(x)
y = float(y)
exut = [x, y] #deliberatly placed exit misspelling as exit is a command
done = False
while done == False:
if b > a:
b = b - 1
elif b < a:
b = b + 1
else:
if a > x:
a = a - 1
elif a < x:
a = a + 1
else:
done = True
done2 = False
while done2 == False:
if b > y:
b = b - 1
elif b < y:
b = b + 1
else:
snd(494, 250)
snd(659, 400)
print("done!")
print(entrance)
print(exut)
entrance = [a, b]
exut = [a, b]
done2 = True
当我运行它时,让我们说1为入口的x值,2为入口的y值,3为exut的x值,4为exut的y值得到此结果;
>>> main()
Enter the x value for the entrance: 1
Enter the y value for the entrance: 2
Enter the x value for the exit: 3
Enter the y value for the exit: 4
done!
['1', '2']
[3.0, 4.0]
>>>
我不知道为什么会这样,所以请你帮忙,非常感谢,谢谢。
答案 0 :(得分:0)
首先,您不需要转换为浮点数,因为您只需要移动一步,所以请删除此代码:
a = float(a)
b = float(b)
x = float(x)
y = float(y)
它不一致,因为您在转换为float之前将a
和b
分配给entrance
,但是将x
和y
分配给{转换后{1}}但是,您应该添加代码以确保只能为exut
和entrance
输入整数值。
在第一个循环中,您要将exut
与b
进行比较,何时应将其与a
进行比较(因为y
是y
的目标值}):
b
此外,您不需要第二个循环,因为在第一个循环结束后, while done == False:
if b > y: # changed a to y here
b = b - 1
elif b < y: # changed a to y here too
b = b + 1
else:
if a > x:
a = a - 1
elif a < x:
a = a + 1
else:
done = True
和a
已经设置为b
和x
。所以你可以打印出你的价值观。
您正在打印y
和entrance
,但是您没有打印exut
和a
的最终值:
b
如果您想查看路径查找器的进度,可以将print("done!")
print(entrance)
print(exut)
print(a, b) # print out a and b. they should be equal to exut
添加到路径寻找循环中:
print(a, b)