多维数组的路径查找器

时间:2015-04-10 00:32:16

标签: python

我正在尝试制作基于地下城的游戏并且正在制作理论路径查找器,但每当我运行该程序时,它只会打印出我在第一个位置输入的相同坐标(理论值)。我对编程有点“新”,所以我卡住了

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]
>>> 

我不知道为什么会这样,所以请你帮忙,非常感谢,谢谢。

1 个答案:

答案 0 :(得分:0)

首先,您不需要转换为浮点数,因为您只需要移动一步,所以请删除此代码:

a = float(a)
b = float(b)
x = float(x)
y = float(y)

它不一致,因为您在转换为float之前将ab分配给entrance,但是将xy分配给{转换后{1}}但是,您应该添加代码以确保只能为exutentrance输入整数值。

在第一个循环中,您要将exutb进行比较,何时应将其与a进行比较(因为yy的目标值}):

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已经设置为bx。所以你可以打印出你的价值观。

您正在打印yentrance,但是您没有打印exuta的最终值:

b

如果您想查看路径查找器的进度,可以将print("done!") print(entrance) print(exut) print(a, b) # print out a and b. they should be equal to exut 添加到路径寻找循环中:

print(a, b)