2017-06-27 128 views
0

我需要一些幫助。我正在用蟒蛇編寫我的首字母縮寫,但無論出於何種原因,我都無法讓烏龜移動。即使光標移動,烏龜仍然在屏幕中間開始。即使我使用penup()和pendown()。蟒蛇移動

我已經削減我的代碼到這一點:

import turtle 

    window = turtle.Screen() 
    window.bgcolor("red") 


    def draw_art(): 
    charles = turtle.Turtle() 
    charles.shape("turtle") 
    charles.color("yellow") 
    charles.speed(2) 
    turtle.penup() 
    turtle.goto(-100,50) 
    turtle.pendown() 

    charles.back(100) 
    charles.right(90) 
    charles.forward(100) 
    charles.right(90) 
    charles.backward(100) 

    window.exitonclick() 

draw_art() 
+4

你正在「海龜」(在你的代碼中)......但你應該正在移動「查爾斯」 –

+0

非常感謝你。那工作。 – brescia57

回答

0

烏龜模塊爲程序員提供了一個功能和麪向對象的界面。您已將的兩個意外混淆的常見錯誤。當你寫:

charles = turtle.Turtle() 
charles.forward(100) 

您使用在龜面向對象的接口由你創建。 (好樣的!),但這:

turtle.goto(-100, 50) 

上調用它是爲你創建默認龜的功能接口。有一個簡單的方法來避免這個錯誤 - 而不是使用此聲明:

import turtle 

使用:

from turtle import Turtle, Screen 

這將鎖定功能接口,並且只允許面向對象之一。所以,你的示例代碼現在看起來像:

from turtle import Turtle, Screen 

def draw_art(): 
    charles = Turtle('turtle') 
    charles.color('yellow') 
    charles.speed('slow') 

    charles.penup() 
    charles.goto(-100, 50) 
    charles.pendown() 

    charles.back(100) 
    charles.right(90) 
    charles.forward(100) 
    charles.right(90) 
    charles.backward(100) 

window = Screen() 
window.bgcolor('red') 

draw_art() 

window.exitonclick() 

turtle.goto(-100, 50)呼叫現在將產生一個錯誤:name 'turtle' is not defined

0

def draw_art(): charles = turtle.Turtle()

讓我們來談談爲什麼移動查爾斯:

往上頂,你創建了一個實例的龜,並將其設置爲變量查爾斯

查爾斯,是的,但你要移動查爾斯 - 他是這個「型」你實例稱爲

希望能幫助你理解!有關更多信息,請參閱Python中的OOP。

+0

你的回答不能解釋爲什麼'turtle.goto(-100,50)'從Python的角度來說是完全有效的,即使它與OP所做的不一致。 (提示:對於新程序員而言,這是一個令人困惑的問題,因爲試圖使新版程序員更容易使用海龜!) – cdlane

+0

感謝您注意到這個疏忽,@cdlane! – NamoDawn