【问题标题】:How do I make a turtle object go behind another turtle object in python?python - 如何让一个乌龟对象在python中的另一个乌龟对象后面?
【发布时间】:2021-03-06 20:08:07
【问题描述】:

我希望能够轻松地在一组线后面制作一个正方形,而不会滞后程序或导致任何重大错误。我想使用海龟模块来完成所有这些工作,因为我目前正在使用该模块制作游戏。我已经尝试过几次,但它从来没有按照我想要的方式工作。我也在使用 Python 3.8。

这是我对这个问题的尝试:

import turtle
#The Setup
wn = turtle.Screen()
global WIDTH
global HEIGHT
WIDTH = 800
HEIGHT = 650
wn.setup(width = WIDTH, height = HEIGHT)
turtle.speed(0)
wn.title("Game by iAmInfernal")
wn.bgcolor('white')
wn.tracer(0)
#I create a turtle object
t = turtle. Turtle()
#I create a player object
player = turtle.Turtle()
t.stamp()
down = 0
player.shape('square')
player.color('red')
player.penup()
player.speed(0)
player.stamp()
#I make a function that will make 150 lines with a space of 10 units
def makeLines():
    global down
    for item in range(150):
        t.penup()
        t.goto(-400, 300 - down)
        t.stamp()
        t.pendown()
        t.hideturtle()
        t.pensize(3)
        t.forward(800)
        down += 10




while True:
    makeLines()
    wn.update()

如果你执行这个sn-p的代码,你将能够看到有很多行,中间有一个红色的方块。但是,我尝试了很多次,红色方块从未落后于那组线。我究竟如何让红色方块在这些线组后面?

【问题讨论】:

  • 截屏可能是个好主意

标签: python turtle-graphics python-turtle


【解决方案1】:

无论是通过绘图还是冲压,乌龟都不能出现在它们所绘制的东西的后面。但是,海龟可以出现在其他海龟后面,因此一种解决方法可能是让线条本身成为海龟:

from turtle import Screen, Turtle

WIDTH, HEIGHT = 800, 650
SPACING = 10

CURSOR_SIZE = 20

def makeLines():
    down = 0

    for _ in range(HEIGHT // SPACING):
        turtle = prototype.clone()
        turtle.sety(HEIGHT/2 - down)
        turtle.showturtle()

        down += SPACING

screen = Screen()
screen.setup(width=WIDTH, height=HEIGHT)
screen.tracer(0)

player = Turtle()
player.shape('square')
player.color('red')
player.penup()
player.stamp()

prototype = Turtle()
prototype.hideturtle()
prototype.shape('square')
prototype.shapesize(2 / CURSOR_SIZE, WIDTH / CURSOR_SIZE, 1)
prototype.penup()

makeLines()
screen.update()

screen.mainloop()

然后问题就变成了控制海龟的分层,其中基本的经验法则是“最后移动的东西在上面”。

【讨论】:

    最近更新 更多