如何在python中移动龟图章

时间:2014-08-01 20:21:12

标签: python turtle-graphics stamp

如何在python turtle模块中移动戳记?

到目前为止,这是我的代码:

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])`

2 个答案:

答案 0 :(得分:0)

移动乌龟图章:擦除它,调用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

答案 1 :(得分:0)

答案是你不移动邮票,你移动海龟!邮票必须被移除并重新安置,而海龟可以在不重绘的情况下移动:

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()

冲压加速的地方在于你的终点线,如果你试图绘制它需要更长的时间。

enter image description here

请注意,尽管您的原始代码是Python 2,但我的答案是Python 3,因此如果您仍在使用旧版本,则可能需要调整一些内容。