Python Turtles,我在这里做错了什么?

时间:2018-01-20 17:45:09

标签: python turtle-graphics

所以...我几乎是海龟模块的初学者,我想同时移动所有海龟,但可能因为它们永远不会停止移动,我不能移动超过二,我该怎么做才能改善这一点? 这里是代码:(我确实计划在问题解决后制作更多"颜色")

from turtle import Turtle, Screen
wn = Screen()
wn.bgcolor('black')

speed = 4


def game():

    def red(coordred):

        redg = Turtle()
        redg.hideturtle()
        redg.shape('circle')
        redg.color('red')
        redg.penup()
        redg.shapesize(2.5, 2.5, 2.5)
        redg.setheading(270)
        redg.goto(-280, 320 + coordred * 50)
        redg.showturtle()

        def movred():
            redg.forward(speed)
            wn.ontimer(movred, 1)

        movred()


    def green(coordgreen):
        greeng = Turtle()
        greeng.hideturtle()
        greeng.shape('circle')
        greeng.color('green')
        greeng.penup()
        greeng.shapesize(2.5, 2.5, 2.5)
        greeng.setheading(270)
        greeng.goto(-100, 320 + coordgreen * 50)
        greeng.showturtle()

        def movgreen():
            greeng.forward(speed)
            wn.ontimer(movgreen, 1)

        movgreen()

    red(0)
    green(1)
    green(2)


game()
wn.mainloop()

1 个答案:

答案 0 :(得分:0)

使用while True的典型方式确实有效:

from turtle import Turtle, Screen
wn = Screen()
wn.bgcolor('black')
speed = 4

turtles = [('red', 270),
           ('blue', 260),
           ('green', 250),
           ('yellow', 240),
          ]

def game():
    myTurtles = []
    for (color, heading) in turtles:
        t = Turtle()
        t.shape('circle')
        t.color(color)
        t.shapesize(2.5, 2.5, 2.5)
        t.setheading(heading)
        t.showturtle()
        myTurtles.append(t)

    while True:
        for t in myTurtles:
            t.forward(speed)

game()
wn.mainloop()

如果增加开始时间,您的代码也会起作用。

 wn.ontimer(movgreen, 20)

将适用于3只乌龟。您需要更多时间来处理更多对象。