龟功能未实施

时间:2013-04-28 06:59:09

标签: python turtle-graphics

在找到我之前问题的解决方案之后,我遇到了几个小时,我的Turtle功能出现了新问题。我是Python和乌龟的新手,所以我不确定在何处放置命令所需的语法(即在定义函数之前或之后),以便它们将在turtle模块中实现,因为我试图模拟随机乌龟比赛,但它只是继续提出空白的乌龟屏幕与中心的黑龟。我在做什么阻止命令工作?到目前为止,这是我所拥有的,但我想至少知道我在第一部分是正确的,然后再尝试进一步了解其余部分:

import turtle
import random

t = turtle.Turtle('turtle')
v = turtle.Turtle('turtle')
s = turtle.Screen()
s.exitonclick()

def setup(turtle1, turtle2, s):
    t = turtle1
    v = turtle2
    s.setworldcoordinates(0,0,50,50)
    t.setposition(1,25)
    t.up()
    v.setposition(1,25)
    v.up()
    t.color('red')
    v.color('red')
    s = turtle.Screen()
    s.exitonclick()


def newHeading(turtle, angleOfTipsiness):
    t.setheading(random.randrange(-angleOfTipsiness, angleOfTipsiness))
    v.setheading(random.randrange(-angleOfTipsiness, angleOfTipsiness))

我需要将初始图片看起来像这样:http://www.cs.ucsb.edu/~buoni/cs8/labs/lab02/start.JPG

谢谢!

1 个答案:

答案 0 :(得分:0)

您实际上正在调用 setupnewHeading函数。在代码的最后,您应该有一个顶级块,如下所示:

# ...

def newHeading(turtle, angleOfTipsiness):
    t.setheading(random.randrange(-angleOfTipsiness, angleOfTipsiness))
    v.setheading(random.randrange(-angleOfTipsiness, angleOfTipsiness))

# after the end of the function definitions, add this:

if __name__ == '__main__':
    # example calls, replace with ones that make sense for what
    # you're trying to do:
    setup(t, v, s)
    newHeading(t, 10)

关于代码的几点评论:

  • 您的setup函数应使用参数turtle1turtle2,而不是将它们分配给新的局部变量tv。 (如果函数参数太长而无法反复输入,只需给它们更短的名称。)同样,newHeading根本不使用turtle参数。

  • tv是局部变量的混淆名称,因为您已经拥有相同名称的全局变量。

  • 应为全局变量提供长且具有描述性的名称。应为局部变量保留短名称,这些变量经常使用,并且在更有限的背景下使用。

通常,您的函数可以访问全局变量并将包含的对象用作全局资源,也可以将对象作为参数接受并以此方式使用它。对于某些情况,两者都是有效的选择(前者更简单,后者更可重复使用),但你不应该将两者混合使用。如果某个东西是全局变量,也不要将它作为参数传递;如果它是一个参数,则使用它而不是全局变量,即使全局可用。为同一个对象混合使用这两种方法会让稍后维护代码的人感到困惑。