如何更改海龟的大小?

4
我想在按下键盘上的 x 键时,每次将窗口中的海龟大小加倍。我尝试使用 .turtlesize(2,2,2),但那不对。我需要每次按下键时都加倍,所以如果海龟大小为(1,1,1),它将变为(2,2,2),然后是(4,4,4),以此类推。
这是我目前的代码:
import turtle
turtle.setup(500,500)
wn = turtle.Screen()
wn.title("Commands")
wn.bgcolor("black")

tess = turtle.Turtle()
tess.shape("triangle")
tess.color("red")
tess.left(90)

def increaseSize():
    size = tess.turtlesize()
    increase = tuple([2 * num for num in size])
    tess.turtlesize(increase) #this is where the error occurs

wn.onkey(increaseSize, "x")
wn.listen()

你得到了什么具体的错误信息? - undefined
2个回答

5
默认情况下,Turtle对象的大小为20像素,这相当于将Turtle调整大小时的比例1
例如:
import turtle

tess = turtle.Turtle()
print(tess.shapesize())

输出:

(1.0, 1.0, 1)

元组中前两个 1.0 表示 Turtle 的宽度和高度各为多少个20像素,最后一个 1 表示 Turtle 边框的宽度。

如果你只在 tess.color() 括号中传递一个参数,则无法看到轮廓,因为默认情况下没有轮廓。

要增加 Turtle 的大小,只需将想要每个 Turtle 尺寸为多少个20像素的数字传递给 tess.shapesize()tess.turtesize() 即可:

import turtle

tess = turtle.Turtle()
tess.shapesize(2, 3, 1) # Sets the turtle's width to 60px and height to 90px

另一个答案指出,turtlesize 函数不接受数组;它接受 intfloat,因此在将元组传递到函数中时,您需要使用 *解包元组
在您的 increaseSize 函数中,tuple[] 封装是不必要的,只会浪费效率。只需使用 () 即可。
def increaseSize():
    size = tess.turtlesize()
    increase = (2 * num for num in size)
    tess.turtlesize(*increase)

在你的代码顶部有一个

标签。

turtle.setup(500,500)
wn = turtle.Screen()

既然你定义了一个名为wnScreen对象,使用wn.setup()turtle.setup()更加规范。

wn = turtle.Screen()
wn.setup(500,500)

全部在一起:

import turtle

wn = turtle.Screen()
wn.setup(500,500)

tess = turtle.Turtle("triangle")
tess.color("red")
tess.left(90)

def increaseSize():
    size = tess.turtlesize()
    increase = (2 * num for num in size)
    tess.turtlesize(*increase)

wn.onkey(increaseSize, "x")
wn.listen()

输出:

enter image description here


非常出色的回答!应该作为一个“如何写出好回答”的模板使用! - undefined

1

更改这行代码:

tess.turtlesize(increase)

改为:

要改成:

tess.turtlesize(*increase)
需要三个单独的值,但您传递了一个包含三个值的元组,因此我们需要在参数列表中展开该元组。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接