3

どうすれば衝突しますか?そのため、カメ/ヘビは箱から出ません。それらを (-200, -200) と (200, 200) 内にとどめようとしています。

from turtle import *
from random import *

def bounding_box():
    up()
    right(90)
    forward(200)
    down()
    left(90)
    forward(200)
    left(90)
    forward(400)
    left(90)
    forward(400)
    left(90)
    forward(400)
    left(90)
    forward(200)
    up()
    goto(0,0)
    down()

def drawSnakeRec(segments, length):
    if segments <= 0 or length <= 0:
        return 0
    else:
        color(random(), random(), random())
        forward(length)
        pensize(randint(1,10))
        left(randint(-30, 30))
        return length + drawSnakeRec(segments - 1, randint(1,20))

def drawSnakeIter(segments, length):
    TL = 0
    while segments > 0:
        color(random(), random(), random())
        pensize(randint(1,10))
        forward(length)
        left(randint(-30, 30))
        TL += length
        segments -=1
    return TL


def main():
    segments = int(input("Enter the segments between 0 and 500: "))

    bounding_box()

    hideturtle()
    speed('fast')

    if segments < 0 or segments > 500:
        print("Segments is out of range. Segment must be between 0 and 500 inclusive")
        input("Press enter to close")
    else:

        x = drawSnakeRec(segments, randint(1, 20))
        print("Recursive Snake's Length is:",x,"Units")
        input("Press Enter to go on Iterative Snake")
        up()
        goto(0,0)
        reset()
        bounding_box()
        y = drawSnakeIter(segments, randint(1,20))
        print("Iterative Snake's Length is:",y," Units")
        input("Press Enter to exit...")
        bye()
main()

何か助けはありますか?ありがとうございました。だから、私はこれを終わらせようとしています。はい、これは私が終わらせようとしているラボの宿題です。皆さんが私を助けてくれたり、私にできることを提供してくれたりしたら、それは素晴らしいことです。PS: 私は亀が苦手です。私は以前にタートルを学んだことはありませんが、Python を少し学んだことがあります。

4

2 に答える 2

1

好きな場合は大きなものをお勧めします:

if turtle.ycor() >= 200 or turtle.ycor() <=-200 or  turtle.xcor() >= 200 or turtle.xcor <= -200

これは私のために働いた!

于 2016-04-02T12:27:08.180 に答える
0

再帰バージョンと反復バージョンの両方で、ランダムな方向に向きを変え、ランダムな長さだけ前進します。境界ボックスを避けたい場合、これらの数値は境界ボックスがあることを認識している必要があります。

必要な動作の種類に応じて、できることはほとんどありません。おそらく最も簡単な方法は、新しい座標がボックスの外にあるかどうかにチェックを入れることです。そうであれば、コースを適切に変更します。

ボックスを徐々に回避したい場合は、方向転換または移動のいずれかの決定で、最も近いエッジまでの距離を考慮することができます。

どちらの場合でも turtle.pos() が役に立ちます。

于 2013-09-24T21:47:44.867 に答える