如何让雪花旋转得更顺畅?

我是Python动画的新手,虽然已经设法使用动画使雪花旋转,但它旋转得不太顺利...我附上了下面的代码,有人可以建议我该怎么做才能让它旋转得更顺畅吗?


import turtle

import time

bob = turtle.Turtle()

bob.ht()

screen = turtle.Screen()

bob.speed(100)

screen.tracer(0, 0)

n = 0

bob.pencolor("blue")

bob.pensize(5)


def vshape():

  bob.rt(25)

  bob.fd(50)

  bob.backward(50)

  bob.lt(50)

  bob.fd(50)

  bob.backward(50)

  bob.rt(25)


def snowflakeArm():

  for x in range(4):

    bob.fd(30)

    vshape()

  bob.backward(120)

    

def snowflake(n, x, y):

  bob.seth(n)

  bob.pu()

  bob.setpos(x ,y)

  bob.pd()

  for x in range(6):

    snowflakeArm()

    bob.rt(60)


while True:

  time.sleep(0.02)

  bob.update()

  bob.clear()

  snowflake(n, 0, 0)

  snowflake(n, 350, 0)

  snowflake(n, -350, 0)

  snowflake(n, 0, 350)

  snowflake(n, 0, -350)

  n += 10

我尝试过减少睡眠时间以及减少旋转量,但仍然没有结果......


牧羊人nacy
浏览 98回答 1
1回答

慕哥9229398

让我担心的是,您能够bob.update()成功调用,因为update()这不是随 Python 3 或 Python 2 发布的标准turtle.py 中的方法。Turtle您可能正在使用较旧的或非标准的turtle 实现,因此某些下面可能需要调整。让我们使用一个turtle事件,而不是引入time.sleep()与turtle自己的事件处理程序不同步的:ontimer()from turtle import Screen, Turtledef vshape():    turtle.right(25)    turtle.forward(50)    turtle.backward(50)    turtle.left(50)    turtle.forward(50)    turtle.backward(50)    turtle.right(25)def snowflakeArm():    for _ in range(4):        turtle.forward(30)        vshape()    turtle.backward(120)def snowflake(angle, position):    turtle.setheading(angle)    turtle.penup()    turtle.setposition(position)    turtle.pendown()    for _ in range(360 // 60):        snowflakeArm()        turtle.right(60)angle = 0def snowflakes():    global angle    turtle.clear()    snowflake(angle, (0, 0))    snowflake(angle, (350, 0))    snowflake(angle, (-350, 0))    snowflake(angle, (0, 350))    snowflake(angle, (0, -350))    screen.update()    angle = (angle + 10) % 360    screen.ontimer(snowflakes, 25)  # repeat 25 milliseconds from nowscreen = Screen()screen.tracer(False)turtle = Turtle()turtle.hideturtle()turtle.pencolor('blue')turtle.pensize(5)snowflakes()screen.exitonclick()这还应该允许我们通过单击窗口来干净地退出程序,而不会生成所有这些警告消息。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python