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.
我相信問題是你定義了一次隨機的位置和方向,在海龜創(chuàng)造循環(huán)之外,所以它們都從同一個地方開始,以相同的速度朝同一個方向移動。一、 他們就在彼此之上。在
我們不需要@BlivetWidget的顯式List來解決這個問題,因為正如您所發(fā)現(xiàn)的,海龜已經(jīng)被維護在一個列表中,我們可以通過屏幕的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的觀點,“你不需要創(chuàng)建一個類來將它們移動到你的起始位置”。我使用上面的一個簡單循環(huán)。在
總結(jié)
以上是生活随笔為你收集整理的python中setpos_如何用类初始化Python中的多个turtle的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设置线程堆栈大小_哇擦,传说中的堆栈溢出
- 下一篇: 计算机 运行新ie 命令,(新)计算机应