200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > python中setpos_如何用类初始化Python中的多个turtle

python中setpos_如何用类初始化Python中的多个turtle

时间:2020-08-22 11:28:04

相关推荐

python中setpos_如何用类初始化Python中的多个turtle

only one turtle shown on screen. Two are defined in the code below.

the turtle's heading and coordinates aren't being initialized.

我相信问题是你定义了一次随机的位置和方向,在海龟创造循环之外,所以它们都从同一个地方开始,以相同的速度朝同一个方向移动。一、 他们就在彼此之上。在

我们不需要@BlivetWidget的显式List来解决这个问题,因为正如您所发现的,海龟已经被维护在一个列表中,我们可以通过屏幕的turtles()方法获得该列表。下面是我对您的代码进行的修改,以解决各种问题:from turtle import Screen, Turtle

from random import randrange, randint

# parameters

COLORS = ['green', 'blue', 'red', 'orange', 'white']

ITERATIONS = 500

VELOCITY = 5

BOX_SIZE = 512

# setting up screen

screen = Screen()

screen.setup(BOX_SIZE + 50, BOX_SIZE + 50)

screen.bgcolor('black')

screen.tracer(False)

# drawing box

turtle = Turtle()

turtle.hideturtle()

turtle.color('cyan')

turtle.penup()

turtle.goto(-BOX_SIZE/2, -BOX_SIZE/2)

turtle.pendown()

for _ in range(4):

turtle.forward(BOX_SIZE)

turtle.left(90)

# turtle

for color in COLORS:

angle = randrange(360)

x = randint(-BOX_SIZE/2, BOX_SIZE/2)

y = randint(-BOX_SIZE/2, BOX_SIZE/2)

turtle = Turtle()

turtle.color(color)

turtle.setheading(angle)

turtle.penup()

turtle.setposition(x, y)

turtle.pendown()

# turtle movement

for _ in range(ITERATIONS):

for turtle in screen.turtles():

turtle.forward(VELOCITY)

x, y = turtle.position()

if x >= BOX_SIZE/2:

turtle.penup()

turtle.setx(-BOX_SIZE/2)

turtle.pendown()

elif x <= -BOX_SIZE/2:

turtle.penup()

turtle.setx(BOX_SIZE/2)

turtle.pendown()

elif y >= BOX_SIZE/2:

turtle.penup()

turtle.sety(-BOX_SIZE/2)

turtle.pendown()

elif y <= -BOX_SIZE/2:

turtle.penup()

turtle.sety(BOX_SIZE/2)

turtle.pendown()

screen.update()

screen.exitonclick()

我同意@BlivetWidget的观点,“你不需要创建一个类来将它们移动到你的起始位置”。我使用上面的一个简单循环。在

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。