2017-04-19 58 views
-1

我正在與龜圖迷宮爲一類項目,我有一個更主要的事情完成之前,我已經結束了......使得在龜圖形的端點

我已經創建了一個第二「烏龜「在端點打一個盒子。所以目標是完成迷宮並將龜放入盒子中。但我不確定如何使該框成爲實際的端點並彈出消息。

這裏是我的代碼:

from turtle import Turtle, Screen 

screen = Screen() 

screen.setup(650, 850) 
screen.title("Turtle Keys") 
screen.bgpic('scooby_doo_maze.gif') 

move = Turtle(shape="triangle") 
move.penup() 
move.setx(-150) 
move.sety(200) 
move.pendown() 
move.pensize(5) 

box = Turtle(shape="square") 
box.hideturtle() 
box.speed(0) 
box.penup() 
box.setx(150) 
box.sety(-190) 
box.pendown() 
box.right(90) 
box.forward(100) 
box.right(90) 
box.forward(100) 
box.right(90) 
box.forward(100) 
box.right(90) 
box.forward(100) 

def keyUp(): 
    move.forward(12) 

def keyLeft(): 
    move.left(90) 

def keyRight(): 
    move.right(90) 

def keyDown(): 
    move.backward(12) 

def keyReset(): 
    move.reset() 
    move.penup() 
    move.setx(-150) 
    move.sety(200) 
    move.pendown() 
    move.pensize(5) 

screen.onkey(keyUp, "Up") 
screen.onkey(keyLeft, "Left") 
screen.onkey(keyRight, "Right") 
screen.onkey(keyDown, "Down") 
screen.onkey(keyReset, "r") 

screen.listen() 

screen.exitonclick() 
+1

歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve)適用於此處。在發佈您的MCVE代碼並準確描述問題之前,我們無法爲您提供有效的幫助。 StackOverflow不是一個編碼或教程服務。具體來說,刪除開銷代碼(特別是用戶控制例程),追加最佳嘗試,並顯示它*完成的操作。 – Prune

回答

0

我們只需要添加一些功能。首先,我們通過box.shapesize()擴展烏龜本身,而不是用烏龜box繪製終點,而是使烏龜box成爲終點。這樣,我們可以使用move.distance(box)來確定move是否接近box的中心。

其次,我們需要一個由所有運動函數調用函數測試上方距離足夠近,然後調用如下:

第三,我們介紹screen.textinput()讓劇中他們已成功地和報價然後選擇再次播放,或退出。我返工下面的代碼來介紹這些新增和調整了一點的風格:

from turtle import Turtle, Screen 

screen = Screen() 
screen.setup(650, 850) 
screen.title("Turtle Keys") 
screen.bgpic('scooby_doo_maze.gif') 

def insideBox(): 
    if move.distance(box) < 60: 
     play_again = screen.textinput("Success!", "Play again?") 

     if play_again and play_again.lower().startswith('y'): 
      keyReset() 
     else: 
      screen.bye() 

def keyUp(): 
    move.forward(12) 
    insideBox() 

def keyLeft(): 
    move.left(90) 

def keyRight(): 
    move.right(90) 

def keyDown(): 
    move.backward(12) 
    insideBox() 

def keyReset(): 
    move.reset() 
    move.penup() 
    move.goto(-150, 200) 
    move.pendown() 
    move.pensize(5) 
    screen.listen() # it's here because screen.textinput() unsets it 

screen.onkey(keyUp, "Up") 
screen.onkey(keyLeft, "Left") 
screen.onkey(keyRight, "Right") 
screen.onkey(keyDown, "Down") 
screen.onkey(keyReset, "r") 

move = Turtle(shape="triangle") 
keyReset() 

box = Turtle(shape="square") 
box.color("black", "white") 
box.shapesize(5, 5, 5) 
box.penup() 
box.goto(150, -190) 

screen.mainloop() 

這是一個情況,我會避免screen.exitonclick(),因爲你需要點擊窗口得到它聽,輕鬆地結束關閉它!使用screen.mainloop()應該足夠了,並讓用戶關閉窗口,而不是選擇再次播放或使用窗口控件。