如何降低 Turtle 的速度 - Python

How to Slow Speed of Turtle - Python

这似乎是一个容易回答的问题; t.speed(1)。但是,我想知道如何降低小于 1. 0 的速度是行不通的,因为它是乌龟可以走的最快速度。在我的编译器中(我不确定你的编译器),当我尝试使用 0.1 时,它四舍五入为 0 并且速度很快。这是您需要了解的代码部分:

import turtle
import random
... ...
artificial_players = [];
for i in range(2):
   _player = turtle.Turtle();
   _player.speed(1);
   _player.color('red');
   _player.shape('circle');
   ... ...
   artificial_players.append(_player);
for i in artificial_players:
         ... ...

turtle.speed()方法的源码将所有没有计算在内的值全部转化为整数,所以没有办法直接输入浮点数来处理速度,包括1以下的整数

可以使用映射到特定整数值的字符串来设置速度。

    speeds = {'fastest':0, 'fast':10, 'normal':6, 'slow':3, 'slowest':1 }

如果提供的速度值为None,则turtle以当前速度进行。

    if speed is None:
        return self._speed

如果给定的速度值在 speeds 的字典中,则该字符串映射 returns 使用的整数值。

    if speed in speeds:
        speed = speeds[speed]

如果提供的值是 0.5 到 10.5 之间的浮点数,那么 turtle 无论如何都会对其进行四舍五入。

    elif 0.5 < speed < 10.5:
        speed = int(round(speed))

对于任何其他值,turtle 自动认为速度已达到最大值。

    else:
        speed = 0

参考文献:

turtle.py source code

从技术上讲,我们不能用给定的 API 进一步降低个体 turtle 的速度,但我们 可以 使用它的 delay() 方法尽可能地减慢 屏幕 的速度:

from turtle import Screen, Turtle

screen = Screen()

turtle = Turtle()
turtle.speed('slowest')

screen.delay(100)  # try code with and without this line

turtle.circle(175)

screen.exitonclick()

delay() 的参数是要添加到每次更新的延迟毫秒数。