-2

我正在尝试制作游戏,并且我制作了主角。

下面是主角的代码:

from turtle import *

from random import *

chandra = Turtle(shape="turtle")

chandra.speed("fastest")

COLORS = ["orange", "blue", "red", "green", "purple"]

def draw_characterpart1():
    for i in range(36):
        for i in range(3):
            chandra.color(choice(COLORS))
            chandra.forward(80)
            chandra.right(120)

        chandra.left(10)

def draw_characterpart2():
    for i in range(36):
        for i in range(4):
            chandra.color(choice(COLORS))
            chandra.forward(70)
            chandra.right(90)
        chandra.left(10)

def draw_spiral():
    for i in range(10, 90, 10):
        chandra.color(choice(COLORS))
        chandra.circle(i, 180)

draw_characterpart1()

draw_characterpart2()

draw_spiral()

mainloop()

我想让它旋转,或者只是旋转。

我尝试手动创建角色(没有 for 循环),然后分配每种颜色。

一旦我这样做了,我就可以改变颜色。

然而,这是一个非常糟糕的解决方案。

谢谢!

4

1 回答 1

3

有了乌龟,再加上一点想象力,一切皆有可能……

我唯一的想法是使用复合形状来创建也许你可以旋转的乌龟形状。– 弗拉斯

用于制作光标的复合形状需要填充多边形,在这种情况下很难使用。

但是如果它不起作用,那么您可能需要清除字符并以不同的角度重新绘制它,然后再次清除它并以不同的角度重新绘制,等等。 - furas

是的,这似乎是可行的方法。但是,使用随机颜色在一定程度上会抵消这种错觉,所以我改用了循环颜色:

from turtle import Screen, Turtle
from itertools import cycle

COLORS = ["orange", "blue", "red", "green", "purple"]

def draw_character():
    color = cycle(COLORS)

    for _ in range(36):
        for _ in range(3):
            chandra.color(next(color))
            chandra.forward(80)
            chandra.right(120)

        chandra.left(10)

    for _ in range(36):
        for _ in range(4):
            chandra.color(next(color))
            chandra.forward(70)
            chandra.right(90)

        chandra.left(10)

    for radius in range(10, 90, 10):
        chandra.color(next(color))
        chandra.circle(radius, 180)

screen = Screen()
screen.tracer(False)

chandra = Turtle()

for angle in range(720):
    chandra.reset()
    chandra.hideturtle()
    chandra.left(angle)
    draw_character()
    screen.update()

screen.tracer(True)
screen.mainloop()

在此处输入图像描述

动画 GIF 只是更好的海龟图形的采样近似值。

于 2020-05-14T22:46:27.310 回答