使Python海龟屏幕自我调整以显示绘制的内容?

2024-04-19 03:16:18 发布

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

我一直在互联网上寻找答案,却找不到任何有效的方法。你知道吗

基本上,我正在构建我的第一个程序,它是digital spirograph。其中一个特点是,你可以让海龟随机画一个形状使用相当混乱的变量。你知道吗

我的问题是,当我这样做时,海龟几乎总是在海龟窗口的边界之外绘制,因此不允许用户在最后看到完整完成的绘图。你知道吗

  • 有没有一个简单的方法可以让屏幕调整到海龟完成后绘制的内容的边界?你知道吗

我不确定我是否应该列出我的代码,因为它在这一点上有几百行长,但如果需要让我知道。你知道吗

编辑:这是我目前编写的代码-

import turtle
import random

print("Random Mode? y/n")
crazy = raw_input()
crazy = str(crazy)
if crazy == 'y' :
    print("Would you like your random selection to be chaotic? y/n")
    chaos = raw_input()
    chaos = str(chaos)
    if chaos == 'y' :
        passes_r = random.randint(4,15)
        angle_r1 = random.randint(1,180)
        angle_r2 = random.randint(1,180)
        angle_r3 = random.randint(1,180)
        angle_r4 = random.randint(1,180)
        angle_r5 = random.randint(1,180)
        angle_r6 = random.randint(1,180)
        angle_r7 = random.randint(1,180)
        angle_r8 = random.randint(1,180)
        chaos_r1 = random.randint(0,360)
        chaos_r2 = random.randint(0,360)
        chaos_r3 = random.randint(0,360)
        chaos_r4 = random.randint(0,360)
        chaos_r5 = random.randint(0,360)
        chaos_r6 = random.randint(0,360)
        chaos_r7 = random.randint(0,360)
        chaos_r8 = random.randint(0,360)


        shape_r = ['arrow', 'turtle', 'circle', 'square', 'triangle',     'classic']
        turtle.shape(random.choice(shape_r))
        turtle.speed(0)

        print("Calculating shape based on random input: ") + str(angle_r1) + ", " + str(angle_r2) + ", " + str(angle_r3) + ", " + str(angle_r4) + ", " + str(angle_r5) + ", " + str(angle_r6) + ", " + str(angle_r7) + ", " + str(angle_r8)

        for _ in range(passes_r):

            turtle.color('red')
            turtle.left(angle_r1)

            for _ in range(4):
                turtle.forward(100)
                turtle.left(chaos_r1)

            turtle.color('blue')
            turtle.left(angle_r2)

            for _ in range(4):
                    turtle.forward(100)
                    turtle.left(chaos_r2)

            turtle.color('green')
            turtle.left(angle_r3)

            for _ in range(4):
                turtle.forward(100)
                turtle.left(chaos_r3)

            turtle.color('yellow')
            turtle.left(angle_r4)

            for _ in range(4):
                turtle.forward(100)
                turtle.left(chaos_r4)

            turtle.left(angle_r5)

            for _ in range(4):
                turtle.forward(100)
                turtle.left(chaos_r5)

            turtle.color('green')
            turtle.left(angle_r6)

            for _ in range(4):
                turtle.forward(100)
                turtle.left(chaos_r6)

            turtle.color('blue')
            turtle.left(angle_r7)

            for _ in range(4):
                turtle.forward(100)
                turtle.left(chaos_r7)

            turtle.color('red')
            turtle.left(angle_r8)

            for _ in range(4):
                turtle.forward(100)
                turtle.left(chaos_r8)




    elif chaos == 'n' :
        passes_r = random.randint(4,15)
        angle_r1 = random.randint(1,180)
        angle_r2 = random.randint(1,180)
        angle_r3 = random.randint(1,180)
        angle_r4 = random.randint(1,180)
        angle_r5 = random.randint(1,180)
        angle_r6 = random.randint(1,180)
        angle_r7 = random.randint(1,180)
        angle_r8 = random.randint(1,180)

        shape_r = ['arrow', 'turtle', 'circle', 'square', 'triangle', 'classic']
        turtle.shape(random.choice(shape_r))
        turtle.speed(0)

        print("Calculating shape based on random input: ") + str(angle_r1) + ", " + str(angle_r2) + ", " + str(angle_r3) + ", " + str(angle_r4) + ", " + str(angle_r5) + ", " + str(angle_r6) + ", " + str(angle_r7) + ", " + str(angle_r8)

        for _ in range(passes_r):

            turtle.color('red')
            turtle.left(angle_r1)

            for _ in range(4):
                turtle.forward(100)
                turtle.left(90)

            turtle.color('blue')
            turtle.left(angle_r2)

            for _ in range(4):
                turtle.forward(100)
                turtle.left(90)

            turtle.color('green')
            turtle.left(angle_r3)

            for _ in range(4):
                turtle.forward(100)
                turtle.left(90)

            turtle.color('yellow')
            turtle.left(angle_r4)

            for _ in range(4):
                turtle.forward(100)
                turtle.left(90)

            turtle.left(angle_r5)

            for _ in range(4):
                turtle.forward(100)
                turtle.left(90)

            turtle.color('green')
            turtle.left(angle_r6)

            for _ in range(4):
                turtle.forward(100)
                turtle.left(90)

            turtle.color('blue')
            turtle.left(angle_r7)

            for _ in range(4):
                turtle.forward(100)
                turtle.left(90)

            turtle.color('red')
            turtle.left(angle_r8)

            for _ in range(4):
                turtle.forward(100)
                turtle.left(90)


elif crazy == 'n' :

    print("Enter number of repeats -")
    passes = raw_input() # passes is called in line 23 for range
    passes = int(passes)

    print("Enter Shape: Arrow, Turtle, Circle, Square, Triangle, or Classic")
    shape = raw_input().lower() # Selects the shape of the turtle

    print("Enter Speed: (# 0 through 10: 0 is the fastest)")
    user_speed = raw_input()
    user_speed = int(user_speed)

    print("Enter Angle 1 (# between 1 and 180)")
    angle_1 = raw_input()
    angle_1 = int(angle_1)

    print("Enter Angle 2 (# between 1 and 180)")
    angle_2 = raw_input()
    angle_2 = int(angle_2)

    print("Enter Angle 3 (# between 1 and 180)")
    angle_3 = raw_input()
    angle_3 = int(angle_3)

    print("Enter Angle 4 (# between 1 and 180)")
    angle_4 = raw_input()
    angle_4 = int(angle_4)

    print("Enter Angle 5 (# between 1 and 180)")
    angle_5 = raw_input()
    angle_5 = int(angle_5)

    print("Enter Angle 6 (# between 1 and 180)")
    angle_6 = raw_input()
    angle_6 = int(angle_6)

    print("Enter Angle 7 (# between 1 and 180)")
    angle_7 = raw_input()
    angle_7 = int(angle_7)

    print("Enter Angle 8 (# between 1 and 180)")
    angle_8 = raw_input()
    angle_8 = int(angle_8)

    print("Auto size y or n?")
    auto_size = raw_input().lower()
    auto_size = str(auto_size)
    if auto_size == 'y' :
        auto_size = str('auto')
        turtle.resizemode(auto_size)
    elif auto_size == 'n' :
        auto_size = str('noresize')
        print("what size? Enter a number from 1 to 10.")
        user_size = raw_input()
        user_size = int(user_size)
        turtle.pensize(user_size)




    turtle.shape(shape)
    turtle.speed(user_speed)
    #turtle.resizemode(auto_size)

    print("Calculating shape based on user input: ") + str(angle_1) + ", " + str(angle_2) + ", " + str(angle_3) + ", " + str(angle_4) + ", " + str(angle_5) + ", " + str(angle_6) + ", " + str(angle_7) + ", " + str(angle_8)

    for _ in range(passes):

        turtle.color('red')
        turtle.left(angle_1)

        for _ in range(4):
            turtle.forward(100)
            turtle.left(90)

        turtle.color('blue')
        turtle.left(angle_2)

        for _ in range(4):
            turtle.forward(100)
            turtle.left(90)

        turtle.color('green')
        turtle.left(angle_3)

        for _ in range(4):
            turtle.forward(100)
            turtle.left(90)

        turtle.color('yellow')
        turtle.left(angle_4)

        for _ in range(4):
            turtle.forward(100)
            turtle.left(90)

        turtle.left(angle_5)

        for _ in range(4):
            turtle.forward(100)
            turtle.left(90)

        turtle.color('green')
        turtle.left(angle_6)

        for _ in range(4):
            turtle.forward(100)
            turtle.left(90)

        turtle.color('blue')
        turtle.left(angle_7)

        for _ in range(4):
            turtle.forward(100)
            turtle.left(90)

        turtle.color('red')
        turtle.left(angle_8)

        for _ in range(4):
            turtle.forward(100)
            turtle.left(90)


turtle.exitonclick()

Tags: inforinputrawrangerandomleftcolor