在我的程序中,為了模擬運(yùn)動(dòng),添加了點(diǎn)的x位置,清除舊點(diǎn),繪制新點(diǎn)。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()我見過一個(gè)極其相似的程序運(yùn)行,它的點(diǎn)不閃,看起來是真的在動(dòng)。但是,當(dāng)我的程序運(yùn)行時(shí),它會(huì)閃爍(消失和重新出現(xiàn)的速度非??欤┢溆啻a在下面(除了一堆定義矢量類的東西,它與工作程序中的相同,所以它里面沒有任何問題)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貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以使用該tracer(False)功能來禁用屏幕更新。所以基本上,所有的繪圖都是在內(nèi)存中完成的,并且會(huì)在你調(diào)用時(shí)一次性復(fù)制到屏幕上tracer(True)。
def drawing_zombies():
tracer(False)
clear()
for zombie in zombies:
goto(zombie.x, zombie.y)
dot(20, 'red')
update()
tracer(True)
添加回答
舉報(bào)
0/150
提交
取消