簡體   English   中英

如何根據Python 3中的輸入讓烏龜移動?

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

我正在編寫一個程序,該程序需要在控制台中輸入以控制烏龜在屏幕上的位置。 例如,如果程序的用戶在控制台中鍵入w ,然后按Enter,則烏龜應向前移動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()都會提示用戶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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM