为了账号安全,请及时绑定邮箱和手机立即绑定

Python Turtle 点无缘无故闪烁

Python Turtle 点无缘无故闪烁

慕丝7291255 2023-01-04 16:52:52
在我的程序中,为了模拟运动,添加了点的x位置,清除旧点,绘制新点。def drawing_zombies():  clear()  for zombie in zombies:    goto(zombie.x, zombie.y)    dot(20, 'red')  update()def movement():  for zombie in zombies:    zombie.x -= 0.5  drawing_zombies()我见过一个极其相似的程序运行,它的点不闪,看起来是真的在动。但是,当我的程序运行时,它会闪烁(消失和重新出现的速度非常快)其余代码在下面(除了一堆定义矢量类的东西,它与工作程序中的相同,所以它里面没有任何问题)class vector(collections.abc.Sequence):    precision = 6    __slots__ = ('_x', '_y', '_hash')    def __init__(self, x, y):        self._hash = None        self._x = round(x, self.precision)        self._y = round(y, self.precision)    #The rest of the vector class would have been herezombies = []placement_options = [0, 1, 2, -1]def new_zombie():    placement_level = random.choice(placement_options)    z = vector(200, placement_level*100)    print(placement_level)    zombies.append(z)def drawing_zombies():  clear()  for zombie in zombies:    goto(zombie.x, zombie.y)    dot(20, 'red')  update()def movement():  for zombie in zombies:    zombie.x -= 0.5  drawing_zombies()  for z in zombies:    if z.x < -200:      done()  ontimer(movement(), 50)def gameplay():  setup(420, 420, 370, 0)  hideturtle()  up()  new_zombie()  movement()  done()gameplay()
查看完整描述

1 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

您可以使用该tracer(False)功能来禁用屏幕更新。所以基本上,所有的绘图都是在内存中完成的,并且会在你调用时一次性复制到屏幕上tracer(True)。


def drawing_zombies():

  tracer(False)

  clear()

  for zombie in zombies:

    goto(zombie.x, zombie.y)

    dot(20, 'red')

  update()

  tracer(True)


查看完整回答
反对 回复 2023-01-04
  • 1 回答
  • 0 关注
  • 175 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信