如何让乌龟根据 Python 3 中的输入移动?

How do I get turtle to move based on input in Python 3?

我正在编写一个程序,需要在控制台中输入以控制乌龟在屏幕上的位置。例如,如果程序的用户在控制台中键入 w,然后按回车键,海龟应该向前移动 30 个单位。如果用户键入a,乌龟应该向左转45度,等等

我写了一些函数,并为程序使用了无限 while 循环。它看起来像这样:

def movemattfd():
    matt.fd(30)

def movemattlt():
    matt.lt(45)

def movemattrt():
    matt.rt(45)

def movemattbk():
    matt.back(30)

def movematt():
    while True:
        input()
        if input() == 'w':
            movemattfd()

        if input() == 'a':
            movemattlt()

        if input() == 'd':
            movemattrt()

        if input() == 's':
            movemattbk()

def main():
    windowHeight = 500
    windowWidth = 500
    turtle.screensize(windowWidth, windowHeight, None)
    movematt()

main()

程序运行正常,除了当我在控制台输入 w 时,至少需要输入 2 次才能让我的乌龟向前移动。当我试图让我的乌龟右转时,它甚至需要更多。

有什么想法吗?提前致谢。

每个 input() 提示用户输入新条目。

您的代码所做的是,对于每组 5 个条目:

  • 丢弃第一个条目
  • 检查第二个条目是否'w'然后继续
  • 检查第三个条目是否'a'然后向左移动
  • 检查第四个条目是否's'然后向右移动
  • 检查第五个条目是否'd'然后返回

您应该将第一个 input() 分配给一个变量,然后检查它。
使用 elif 避免检查其他字符,如果它已经满足一个。

while True:
    entry = input()
    if entry == 'w':
        movemattfd()

    elif entry == 'a':
        movemattlt()

    elif entry == 'd':
        movemattrt()

    elif entry == 's':
        movemattbk()