为什么它不画科赫特写

2024-05-02 19:51:56 发布

您现在位置:Python中文网/ 问答频道 /正文

import turtle 
import random

screen = turtle.Screen()

X = 400
Y = 400
screen.setup(X, Y)

def drawKoch(ttl, length, generation):
    if (generation == 0 ):
        ttl.fd(generation)
        return
    else:
        drawKoch(ttl, length - 1, generation / 3)
        ttl.lt(60)
        drawKoch(ttl, length - 1, generation / 3)
        ttl.lt(120)
        drawKoch(ttl, length - 1, generation / 3)
        ttl.lt(60)
        drawKoch(ttl, length - 1, generation / 3)


turtle.clearscreen()
screen.reset()
screen.screensize(X, Y)


ttl = turtle.Turtle()
ttl.speed(10)
ttl.penup()
ttl.setposition(-X/2 + 10, -Y/2 + 50)
ttl.pendown()

sides = 3
gens = 3
length = 300
angle = ((sides - 2) * 180) / sides

for i in range(sides):
    drawKoch(ttl, length, gens)
    ttl.left(180-angle)

我不知道为什么它不能画出科赫曲线。我不久前才开始学这门语言。我需要一些助手………希望你们知道的人能帮我


Tags: importltdefsetuprandomscreenlengthgeneration
1条回答
网友
1楼 · 发布于 2024-05-02 19:51:56

一堆问题:

  • 你像length - 1, generation / 3一样递归,而它应该是length / 3, generation - 1

  • 因此,generation应该是3,2,1,0(停止)而不是3,1.0,0.333,0.111,0.037,0.01234,0.00411,0.00137。。。它永远不会“等于”0,因此您的函数只会不断递归

  • 您使用的是generation而不是length中的ttl.fd()

  • ttl.lt(120)应该是ttl.rt(120)

相关问题 更多 >