Python Turtle:尝试通过 poly 函数为我的海龟设置自定义形状

问题描述

我想让汽车的形状是定制的多边形(不幸的是它们必须被绘制)但它们只是显示为微小的小箭头。我不知道该怎么做以及如何制作它,以便它们显示为我绘制的汽车,面向右侧的汽车显示为右侧形状,反之亦然。这是我第一次使用 Stack Overflow,所以请耐心等待。有人知道如何提供帮助吗?我被卡住了!!

#import modules
import turtle,random,time

#initiate screen
screen = turtle.Screen()
screen.bgcolor('darkgray')
screen.delay(0)

#initiate sprite
sprite = turtle.Turtle()
sprite.shape('square')
sprite.penup()
sprite.speed(0)
sprite.ht()

#initate player (clone of sprite)
player = sprite.clone()
player.shape('turtle')
player.fillcolor('forestgreen')
player.st()

#draw car (facing left)
turtle.begin_poly()

pen = turtle.Turtle()
pen.speed(0)
pen.pensize(1)
pen.up()
pen.setheading(90)
pen.color('black')
pen.forward(2)
pen.down()
pen.forward(16)
pen.up()

pen.setposition(0 - 1,0)
pen.forward(1)
pen.down()
pen.forward(1)
pen.color('red')   
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')    
pen.forward(5)
pen.color('red')    
pen.forward(8)
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 - 2,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(3)
pen.color('red')
pen.forward(12)
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 - 3,0)

for i in range(1,4):
    pen.down()
    pen.color('black')
    pen.forward(1)
    pen.color('firebrick')
    pen.forward(1)
    pen.color('black')
    pen.forward(1)
    pen.color('firebrick')
    pen.forward(2)
    pen.color('red')
    pen.forward(13)
    pen.color('black')
    pen.forward(1)
    pen.color('red')
    pen.forward(1)
    pen.color('black')
    pen.forward(1)
    pen.up()
    pen.setposition(0-(3+i),0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(2)
pen.color('red')
pen.forward(2)
pen.color('black')
pen.forward(7)
pen.color('red')
pen.forward(4)
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 - 7,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('black')
pen.forward(5)
pen.color('red')
pen.forward(7)
pen.color('black')
pen.forward(5)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 - 8,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(3)
pen.color('red')
pen.forward(10)
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 - 9,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(12)
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 - 10,0)

pen.down()
pen.color('black')
pen.forward(2)
pen.color('firebrick')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(12)
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(2)
pen.up()
pen.setposition(0 - 11,3):
    pen.down()
    pen.color('black')
    pen.forward(1)
    pen.color('skyblue')
    pen.forward(1)
    pen.color('black')
    pen.forward(1)
    pen.color('firebrick')
    pen.forward(1)
    pen.color('red')
    pen.forward(14)
    pen.color('black')
    pen.forward(1)
    pen.color('skyblue')
    pen.forward(1)
    pen.color('black')
    pen.forward(1)
    pen.up()
    pen.setposition(0 -(11+i),0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(14)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 - 14,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('white')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(14)
pen.color('black')
pen.forward(1)
pen.color('white')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 - 15,3):
    pen.down()
    pen.color('black')
    pen.forward(1)
    pen.color('skyblue')
    pen.forward(1)
    pen.color('black')
    pen.forward(1)
    pen.color('firebrick')
    pen.forward(1)
    pen.color('red')
    pen.forward(14)
    pen.color('black')
    pen.forward(1)
    pen.color('skyblue')
    pen.forward(1)
    pen.color('black')
    pen.forward(1)
    pen.up()
    pen.setposition(0-(15+i),0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(14)
pen.color('black')
pen.forward(3)
pen.up()
pen.setposition(0 - 18,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(14)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 - 19,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(2)
pen.color('red')
pen.forward(13)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 - 20,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(12)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 - 21,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('white')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(12)
pen.color('black')
pen.forward(1)
pen.color('white')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 - 22,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('white')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(3)
pen.color('red')
pen.forward(9)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('white')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 - 23,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(3)
pen.color('red')
pen.forward(6)
pen.color('black')
pen.forward(3)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.up()
pen.setposition(0 - 24,0 - 1)

pen.down()
pen.color('black')
pen.forward(2)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(4)
pen.color('black')
pen.forward(7)
pen.color('skyblue')
pen.forward(4)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(2)
pen.up()
pen.setposition(0 - 25,0 - 2)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(2)
pen.color('black')
pen.forward(2)
pen.color('skyblue')
pen.forward(12)
pen.color('white')
pen.forward(1)
pen.color('skyblue')
pen.forward(2)
pen.color('black')
pen.forward(2)
pen.color('red')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 - 26,0 - 1)

pen.down()
pen.color('black')
pen.forward(3)
pen.color('skyblue')
pen.forward(14)
pen.color('white')
pen.forward(1)
pen.color('skyblue')
pen.forward(2)
pen.color('black')
pen.forward(3)
pen.up()
pen.setposition(0 - 27,0)

pen.down()
pen.color('black')
pen.forward(2)
pen.color('skyblue')
pen.forward(14)
pen.color('white')
pen.forward(1)
pen.color('skyblue')
pen.forward(2)
pen.color('black')
pen.forward(2)
pen.up()
pen.setposition(0 - 28,0)

pen.down()
pen.color('black')
pen.forward(2)
pen.color('skyblue')
pen.forward(17)
pen.color('black')
pen.forward(2)
pen.up()
pen.setposition(0 - 29,0)

pen.down()
pen.color('black')
pen.forward(4)
pen.color('skyblue')
pen.forward(13)
pen.color('black')
pen.forward(4)
pen.up()
pen.setposition(0 - 30,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(3)
pen.color('black')
pen.forward(3)
pen.color('skyblue')
pen.forward(7)
pen.color('black')
pen.forward(3)
pen.color('red')
pen.forward(3)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 - 31,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(2)
pen.color('red')
pen.forward(4)
pen.color('black')
pen.forward(7)
pen.color('red')
pen.forward(6)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 - 32,6):
    pen.down()
    pen.color('black')
    pen.forward(1)
    pen.color('firebrick')
    pen.forward(2)
    pen.color('red')
    pen.forward(17)
    pen.color('black')
    pen.forward(1)
    pen.up()
    pen.setposition(0 -(32+i),0)  

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(3)
pen.color('red')
pen.forward(16)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 - 38,0)

pen.down()
pen.color('black')
pen.forward(2)
pen.color('firebrick')
pen.forward(3)
pen.color('red')
pen.forward(14)
pen.color('black')
pen.forward(2)
pen.up()
pen.setposition(0 - 39,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(3)
pen.color('red')
pen.forward(12)
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 - 40,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(2)
pen.color('firebrick')
pen.forward(3)
pen.color('red')
pen.forward(8)
pen.color('black')
pen.forward(2)
pen.color('red')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 - 41,0 + 1)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(2)
pen.color('black')
pen.forward(11)
pen.color('red')
pen.forward(3)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 - 42,0 + 2)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(13)
pen.color('firebrick')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 - 43,0 + 3)

pen.down()
pen.color('black')
pen.forward(2)
pen.color('firebrick')
pen.forward(11)
pen.color('black')
pen.forward(2)
pen.up()
pen.setposition(0 - 44,0 + 4)

pen.down()
pen.color('black')
pen.forward(11)

pen.hideturtle()

turtle.end_poly()
carleft = turtle.get_poly()
screen.register_shape('carleft',carleft)


#draw car (facing right)
turtle.begin_poly()

pen = turtle.Turtle()
pen.speed(0)
screen = turtle.Screen()
pen.pensize(1)
pen.up()
pen.setheading(90)
pen.color('black')
pen.forward(2)
pen.down()
pen.forward(16)
pen.up()

pen.setposition(0 + 1,0)
pen.forward(1)
pen.down()
pen.forward(1)
pen.color('red')   
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')    
pen.forward(5)
pen.color('red')    
pen.forward(8)
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 + 2,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(3)
pen.color('red')
pen.forward(12)
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 + 3,4):
    pen.down()
    pen.color('black')
    pen.forward(1)
    pen.color('firebrick')
    pen.forward(1)
    pen.color('black')
    pen.forward(1)
    pen.color('firebrick')
    pen.forward(2)
    pen.color('red')
    pen.forward(13)
    pen.color('black')
    pen.forward(1)
    pen.color('red')
    pen.forward(1)
    pen.color('black')
    pen.forward(1)
    pen.up()
    pen.setposition(0 +(3+i),0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(2)
pen.color('red')
pen.forward(2)
pen.color('black')
pen.forward(7)
pen.color('red')
pen.forward(4)
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 + 7,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('black')
pen.forward(5)
pen.color('red')
pen.forward(7)
pen.color('black')
pen.forward(5)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 + 8,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(3)
pen.color('red')
pen.forward(10)
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 + 9,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(12)
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 + 10,0)

pen.down()
pen.color('black')
pen.forward(2)
pen.color('firebrick')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(12)
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(2)
pen.up()
pen.setposition(0 + 11,3):
    pen.down()
    pen.color('black')
    pen.forward(1)
    pen.color('skyblue')
    pen.forward(1)
    pen.color('black')
    pen.forward(1)
    pen.color('firebrick')
    pen.forward(1)
    pen.color('red')
    pen.forward(14)
    pen.color('black')
    pen.forward(1)
    pen.color('skyblue')
    pen.forward(1)
    pen.color('black')
    pen.forward(1)
    pen.up()
    pen.setposition(0 + (11+i),0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(14)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 + 14,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('white')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(14)
pen.color('black')
pen.forward(1)
pen.color('white')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 + 15,3):
    pen.down()
    pen.color('black')
    pen.forward(1)
    pen.color('skyblue')
    pen.forward(1)
    pen.color('black')
    pen.forward(1)
    pen.color('firebrick')
    pen.forward(1)
    pen.color('red')
    pen.forward(14)
    pen.color('black')
    pen.forward(1)
    pen.color('skyblue')
    pen.forward(1)
    pen.color('black')
    pen.forward(1)
    pen.up()
    pen.setposition(0 +(15+i),0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(14)
pen.color('black')
pen.forward(3)
pen.up()
pen.setposition(0 + 18,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(14)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 + 19,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(2)
pen.color('red')
pen.forward(13)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 + 20,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(12)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 + 21,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('white')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(12)
pen.color('black')
pen.forward(1)
pen.color('white')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 + 22,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('white')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(3)
pen.color('red')
pen.forward(9)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('white')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 + 23,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(3)
pen.color('red')
pen.forward(6)
pen.color('black')
pen.forward(3)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.up()
pen.setposition(0 + 24,0 - 1)

pen.down()
pen.color('black')
pen.forward(2)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(4)
pen.color('black')
pen.forward(7)
pen.color('skyblue')
pen.forward(4)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(2)
pen.up()
pen.setposition(0 + 25,0 - 2)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(2)
pen.color('black')
pen.forward(2)
pen.color('skyblue')
pen.forward(12)
pen.color('white')
pen.forward(1)
pen.color('skyblue')
pen.forward(2)
pen.color('black')
pen.forward(2)
pen.color('red')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 + 26,0 - 1)

pen.down()
pen.color('black')
pen.forward(3)
pen.color('skyblue')
pen.forward(14)
pen.color('white')
pen.forward(1)
pen.color('skyblue')
pen.forward(2)
pen.color('black')
pen.forward(3)
pen.up()
pen.setposition(0 + 27,0)

pen.down()
pen.color('black')
pen.forward(2)
pen.color('skyblue')
pen.forward(14)
pen.color('white')
pen.forward(1)
pen.color('skyblue')
pen.forward(2)
pen.color('black')
pen.forward(2)
pen.up()
pen.setposition(0 + 28,0)

pen.down()
pen.color('black')
pen.forward(2)
pen.color('skyblue')
pen.forward(17)
pen.color('black')
pen.forward(2)
pen.up()
pen.setposition(0 + 29,0)

pen.down()
pen.color('black')
pen.forward(4)
pen.color('skyblue')
pen.forward(13)
pen.color('black')
pen.forward(4)
pen.up()
pen.setposition(0 + 30,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(3)
pen.color('black')
pen.forward(3)
pen.color('skyblue')
pen.forward(7)
pen.color('black')
pen.forward(3)
pen.color('red')
pen.forward(3)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 + 31,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(2)
pen.color('red')
pen.forward(4)
pen.color('black')
pen.forward(7)
pen.color('red')
pen.forward(6)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 + 32,6):
    pen.down()
    pen.color('black')
    pen.forward(1)
    pen.color('firebrick')
    pen.forward(2)
    pen.color('red')
    pen.forward(17)
    pen.color('black')
    pen.forward(1)
    pen.up()
    pen.setposition(0 +(32+i),0)  

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(3)
pen.color('red')
pen.forward(16)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 + 38,0)

pen.down()
pen.color('black')
pen.forward(2)
pen.color('firebrick')
pen.forward(3)
pen.color('red')
pen.forward(14)
pen.color('black')
pen.forward(2)
pen.up()
pen.setposition(0 + 39,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(3)
pen.color('red')
pen.forward(12)
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 + 40,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(2)
pen.color('firebrick')
pen.forward(3)
pen.color('red')
pen.forward(8)
pen.color('black')
pen.forward(2)
pen.color('red')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 + 41,0 + 1)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(2)
pen.color('black')
pen.forward(11)
pen.color('red')
pen.forward(3)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 + 42,0 + 2)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(13)
pen.color('firebrick')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.setposition(0 + 43,0 + 3)

pen.down()
pen.color('black')
pen.forward(2)
pen.color('firebrick')
pen.forward(11)
pen.color('black')
pen.forward(2)
pen.up()
pen.setposition(0 + 44,0 + 4)

pen.down()
pen.color('black')
pen.forward(11)

pen.hideturtle()

turtle.end_poly()
carright = turtle.get_poly()
screen.register_shape('carright',carright)

#make list of car directions
car_directions = ['carleft','carright']

#make list of cars
cars = []

#make cars
for i in range(7):
    car = sprite.clone()

    if i % 2:
        car.seth(0)
        car.shape(car_directions[1])
            
    else:
        car.seth(180)
        car.shape(car_directions[0])

    car.goto(random.randint(-200,200),-120+i*40)
    car.st()
    cars.append(car)

解决方法

这对 Turtle 来说令人印象深刻。我期待 Atari 2600 赛车精灵。如果他们只是左右移动,那么您可以对这些图像进行截图,将它们保存为与您的 Turtle 脚本相同的目录中的 carleft.gifcarright.gif,然后是 register or add the images 和 {{ 3}}。

screen .register_shape( 'carleft.gif' )
screen .register_shape( 'carright.gif' )

sprite .shape( 'carleft' )
player .shape( 'carright' )
,

这里有几个问题。首先是您将面向对象乌龟与功能乌龟混合在一起。也就是说,您让海龟实例 pen 执行所有动作,但您正在从尚未移动到任何地方的默认海龟 turtle 中提取多边形。

解决此问题后,您将获得汽车的蒙版图像。下面是简化代码的输出,以显示这一点:

enter image description here

现在我们看到下一个问题。您可以用多个彩色多边形(多个 Shape 组件)组成一个海龟光标。但是每个单独的多边形都以一种颜色呈现。所以你必须对你的汽车设计采取不同的方法。

最后,您需要考虑您绘制的形状的方向以使其与海龟同步,并确保其质心在 (0,0) 处,以便它以 left() 干净地转动和right()

# import modules
from turtle import Screen,Turtle
from random import randint

# initiate screen
screen = Screen()
screen.bgcolor('darkgray')

# draw car
pen = Turtle()
pen.speed('fastest')

pen.begin_poly()

pen.up()
pen.setheading(90)
pen.forward(2)
pen.down()
pen.forward(16)
pen.up()

pen.goto(1,0)
pen.forward(1)
pen.down()
pen.forward(1)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(5)
pen.color('red')
pen.forward(8)
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.goto(2,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(3)
pen.color('red')
pen.forward(12)
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.goto(3,0)

for i in range(1,4):
    pen.down()
    pen.color('black')
    pen.forward(1)
    pen.color('firebrick')
    pen.forward(1)
    pen.color('black')
    pen.forward(1)
    pen.color('firebrick')
    pen.forward(2)
    pen.color('red')
    pen.forward(13)
    pen.color('black')
    pen.forward(1)
    pen.color('red')
    pen.forward(1)
    pen.color('black')
    pen.forward(1)
    pen.up()
    pen.goto(3 + i,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(2)
pen.color('red')
pen.forward(2)
pen.color('black')
pen.forward(7)
pen.color('red')
pen.forward(4)
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.goto(7,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('black')
pen.forward(5)
pen.color('red')
pen.forward(7)
pen.color('black')
pen.forward(5)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.goto(8,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(3)
pen.color('red')
pen.forward(10)
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.up()
pen.goto(9,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(12)
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.up()
pen.goto(10,0)

pen.down()
pen.color('black')
pen.forward(2)
pen.color('firebrick')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(12)
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(2)
pen.up()
pen.goto(11,3):
    pen.down()
    pen.color('black')
    pen.forward(1)
    pen.color('skyblue')
    pen.forward(1)
    pen.color('black')
    pen.forward(1)
    pen.color('firebrick')
    pen.forward(1)
    pen.color('red')
    pen.forward(14)
    pen.color('black')
    pen.forward(1)
    pen.color('skyblue')
    pen.forward(1)
    pen.color('black')
    pen.forward(1)
    pen.up()
    pen.goto(11 + i,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(14)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.goto(14,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('white')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(14)
pen.color('black')
pen.forward(1)
pen.color('white')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.goto(15,3):
    pen.down()
    pen.color('black')
    pen.forward(1)
    pen.color('skyblue')
    pen.forward(1)
    pen.color('black')
    pen.forward(1)
    pen.color('firebrick')
    pen.forward(1)
    pen.color('red')
    pen.forward(14)
    pen.color('black')
    pen.forward(1)
    pen.color('skyblue')
    pen.forward(1)
    pen.color('black')
    pen.forward(1)
    pen.up()
    pen.goto(15 + i,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(14)
pen.color('black')
pen.forward(3)
pen.up()
pen.goto(18,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(14)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.goto(19,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(2)
pen.color('red')
pen.forward(13)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.goto(20,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(12)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.up()
pen.goto(21,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('white')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(12)
pen.color('black')
pen.forward(1)
pen.color('white')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.goto(22,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('white')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(3)
pen.color('red')
pen.forward(9)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('white')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.goto(23,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(3)
pen.color('red')
pen.forward(6)
pen.color('black')
pen.forward(3)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.up()
pen.goto(24,-1)

pen.down()
pen.color('black')
pen.forward(2)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(4)
pen.color('black')
pen.forward(7)
pen.color('skyblue')
pen.forward(4)
pen.color('black')
pen.forward(1)
pen.color('skyblue')
pen.forward(1)
pen.color('black')
pen.forward(2)
pen.up()
pen.goto(25,-2)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(2)
pen.color('black')
pen.forward(2)
pen.color('skyblue')
pen.forward(12)
pen.color('white')
pen.forward(1)
pen.color('skyblue')
pen.forward(2)
pen.color('black')
pen.forward(2)
pen.color('red')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.up()
pen.goto(26,-1)

pen.down()
pen.color('black')
pen.forward(3)
pen.color('skyblue')
pen.forward(14)
pen.color('white')
pen.forward(1)
pen.color('skyblue')
pen.forward(2)
pen.color('black')
pen.forward(3)
pen.up()
pen.goto(27,0)

pen.down()
pen.color('black')
pen.forward(2)
pen.color('skyblue')
pen.forward(14)
pen.color('white')
pen.forward(1)
pen.color('skyblue')
pen.forward(2)
pen.color('black')
pen.forward(2)
pen.up()
pen.goto(28,0)

pen.down()
pen.color('black')
pen.forward(2)
pen.color('skyblue')
pen.forward(17)
pen.color('black')
pen.forward(2)
pen.up()
pen.goto(29,0)

pen.down()
pen.color('black')
pen.forward(4)
pen.color('skyblue')
pen.forward(13)
pen.color('black')
pen.forward(4)
pen.up()
pen.goto(30,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(3)
pen.color('black')
pen.forward(3)
pen.color('skyblue')
pen.forward(7)
pen.color('black')
pen.forward(3)
pen.color('red')
pen.forward(3)
pen.color('black')
pen.forward(1)
pen.up()
pen.goto(31,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(2)
pen.color('red')
pen.forward(4)
pen.color('black')
pen.forward(7)
pen.color('red')
pen.forward(6)
pen.color('black')
pen.forward(1)
pen.up()
pen.goto(32,6):
    pen.down()
    pen.color('black')
    pen.forward(1)
    pen.color('firebrick')
    pen.forward(2)
    pen.color('red')
    pen.forward(17)
    pen.color('black')
    pen.forward(1)
    pen.up()
    pen.goto(32 + i,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(3)
pen.color('red')
pen.forward(16)
pen.color('black')
pen.forward(1)
pen.up()
pen.goto(38,0)

pen.down()
pen.color('black')
pen.forward(2)
pen.color('firebrick')
pen.forward(3)
pen.color('red')
pen.forward(14)
pen.color('black')
pen.forward(2)
pen.up()
pen.goto(39,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(3)
pen.color('red')
pen.forward(12)
pen.color('black')
pen.forward(1)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.goto(40,0)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(1)
pen.color('black')
pen.forward(2)
pen.color('firebrick')
pen.forward(3)
pen.color('red')
pen.forward(8)
pen.color('black')
pen.forward(2)
pen.color('red')
pen.forward(2)
pen.color('black')
pen.forward(1)
pen.up()
pen.goto(41,1)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(2)
pen.color('black')
pen.forward(11)
pen.color('red')
pen.forward(3)
pen.color('black')
pen.forward(1)
pen.up()
pen.goto(42,2)

pen.down()
pen.color('black')
pen.forward(1)
pen.color('firebrick')
pen.forward(1)
pen.color('red')
pen.forward(13)
pen.color('firebrick')
pen.forward(1)
pen.color('black')
pen.forward(1)
pen.up()
pen.goto(43,3)

pen.down()
pen.color('black')
pen.forward(2)
pen.color('firebrick')
pen.forward(11)
pen.color('black')
pen.forward(2)
pen.up()
pen.goto(44,4)

pen.down()
pen.color('black')
pen.forward(11)

pen.hideturtle()

pen.end_poly()
car_polygon = pen.get_poly()
screen.register_shape('car',car_polygon)

# make list of cars
cars = []

# initiate sprite
sprite = Turtle()
sprite.hideturtle()
sprite.shape('car')
sprite.penup()
sprite.speed('fastest')

# make cars
for i in range(7):
    car = sprite.clone()

    if i % 2:
        car.setheading(0)
    else:
        car.setheading(180)

    car.goto(randint(-200,200),-120 + i * 40)
    car.showturtle()
    cars.append(car)

screen.exitonclick()

虽然 GIF 图像是另一种选择,但它们不会像多边形一样转动——无论方向如何,海龟都会始终显示相同的图像。但是对于多边形,海龟会毫不费力地适当转动。