在python中移动乌龟

时间:2017-06-27 23:07:20

标签: python turtle-graphics

我需要一些帮助。我正在用蟒蛇在乌龟上写下我的首字母,但无论出于何种原因,我都无法让乌龟移动。即使光标移动,乌龟仍然会在屏幕中间开始。即使我正在使用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()

2 个答案:

答案 0 :(得分:0)

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

让我们谈谈移动查尔斯的为什么

在顶部,您创建了Turtle 实例,并将其设置为变量 charles

charles turtle ,是的,但你想移动 charles - 他是你的实例这个"类型"称为乌龟

希望有助于您理解!有关更多信息,请参阅Python中的OOP。

答案 1 :(得分:0)

turtle模块为程序员提供了功能和面向对象的界面。您已经意外混合两者的 常见错误 。当你写:

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