如何在 python 海龟模块中移动图章?
这是我到目前为止的代码:
import turtle
def draw_start():
turtle.pu()
turtle.setpos(-350,300)
turtle.pendown()
turtle.right(90)
turtle.forward(520)
def draw_finish():
turtle.speed(15)
turtle.pu()
for i in range(18):
turtle.setpos(200,(300-(i*30)))
square()
for j in range(18):
turtle.setpos(215,(285-(j*30)))
square()
def stamp_turtle(x,y,color):
turtle.pu()
turtle.setheading(0)
turtle.shape("turtle")
turtle.color(color)
turtle.setpos(x,y)
stamp_list.append(turtle.stamp())
def square():
turtle.pu()
turtle.fill(True)
for i in range(4):
turtle.forward(15)
turtle.right(90)
turtle.fill(False)
print "Welcome to Turtle Racing : "
number_of_turtles = int(raw_input("How many turtles (between 3 and 6) : "))
bet_amount = int(raw_input("How much do you want to bet? $ "))
bet_turtle = raw_input("Which turtle (1 to 5)? ")
color_list=["red","blue","green","brown","yellow","purple"]
stamp_list=[]
draw_start()
draw_finish()
for i in range(number_of_turtles):
stamp_turtle(-370,280-i*90,color_list[i])`
答案是你不移动邮票,你移动海龟!印章必须移除并重新盖章,而海龟可以移动而无需重新绘制:
import random
import turtle
STAMP_SIZE = 20
SQUARE_SIZE = 15
FINISH_LINE = 200
COLOR_LIST = ['red', 'blue', 'green', 'brown', 'yellow', 'purple']
def draw_start():
turtle.speed('fastest')
turtle.penup()
turtle.setpos(-350, 300)
turtle.pendown()
turtle.right(90)
turtle.forward(520)
def draw_finish():
turtle.shape('square')
turtle.shapesize(SQUARE_SIZE / STAMP_SIZE)
turtle.penup()
for i in range(18):
turtle.setpos(FINISH_LINE, (300 - (i * SQUARE_SIZE * 2)))
turtle.stamp()
for j in range(18):
turtle.setpos(FINISH_LINE + SQUARE_SIZE, ((300 - SQUARE_SIZE) - (j * SQUARE_SIZE * 2)))
turtle.stamp()
turtle.hideturtle()
def move_turtle(who):
who.forward(random.randint(1, 10))
if who.xcor() < FINISH_LINE:
turtle.ontimer(lambda who=who: move_turtle(who), 50)
print('Welcome to Turtle Racing!')
number_of_turtles = int(input('How many turtles (between 3 and 6): '))
draw_start()
draw_finish()
turtle_list = []
for idx in range(number_of_turtles):
racer = turtle.Turtle('turtle', visible=False)
racer.speed('fastest') # affects drawing speed, not forward motion
racer.penup()
racer.setpos(-350 - STAMP_SIZE, 280 - idx * 90)
racer.color(COLOR_LIST[idx])
racer.showturtle()
turtle_list.append(racer)
for racer in turtle_list:
turtle.ontimer(lambda who=racer: move_turtle(who), 100)
turtle.exitonclick()
冲压加快速度的地方是制作终点线,如果你尝试绘制它,则需要更长的时间。
请注意,虽然您的原始代码是 Python 2,但我的答案是 Python 3,因此如果您仍在使用旧版本,您可能需要调整一些内容。
移动海龟印记:擦除它,调用penup()并将其重新印记到其他地方:
import turtle
import time
a = turtle.Turtle()
a.penup()
a.goto(0, -200)
a.pendown()
a.stamp()
time.sleep(1)
a.clear()
a.penup()
a.goto(10,10)
a.stamp()
标记从 0,200 开始,然后消失并在 10,10 处重新出现