确定海龟在某个位置制作了多少次

时间:2013-09-29 14:47:07

标签: python if-statement turtle-graphics

我正在寻找一种方法,这样每次乌龟在某个地方制作一个点时,一个计数器变量会上升一个,但该变量只响应该位置的一个点,所以实际上有一个记录乌龟在特定位置制作点数的次数。类似的东西:

x=0
if (turtle.dot()):
       x+1  

但显然在这种情况下,任何位置的点数都会增加。提前致谢! ç

2 个答案:

答案 0 :(得分:0)

你可以使用返回笛卡尔坐标的turtle.pos()来检查乌龟的位置,从而检查点吗?

if ((turtle.pos() == (thisX, thisY)) and turtle.dot()): 
    x+1

答案 1 :(得分:0)

您可以使用collections.defaultdict来计算点数并派生自己的Turtle子类,以帮助跟踪dot{}方法的调用位置。 defaultdict的关键是调用dot()时乌龟的x和y坐标。

这是我的意思的一个例子:

from collections import defaultdict
from turtle import *

class MyTurtle(Turtle):
    def __init__(self, *args, **kwds):
        super(MyTurtle, self).__init__(*args, **kwds)  # initialize base
        self.dots = defaultdict(int)

    def dot(self, *args, **kwds):
        super(MyTurtle, self).dot(*args, **kwds)
        self.dots[self.position()] += 1

    def print_count(self):
        """ print number of dots drawn, if any, at current position """
        print self.dots.get(self.position(), 0) # avoid creating counts of zero

def main(turtle):
    turtle.forward(100)
    turtle.dot("blue")
    turtle.left(90)
    turtle.forward(50)
    turtle.dot("green")
    # go back to the start point
    turtle.right(180) # turn completely around
    turtle.forward(50)
    turtle.dot("red")  # put second one in same spot
    turtle.right(90)
    turtle.forward(100)

if __name__ == '__main__':
    turtle1 = MyTurtle()
    main(turtle1)
    mainloop()

    for posn, count in turtle1.dots.iteritems():
        print('({x:5.2f}, {y:5.2f}): '
              '{cnt:n}'.format(x=posn[0], y=posn[1], cnt=count))

输出:

(100.00, 50.00): 1
(100.00,  0.00): 2