乌龟形状不会填满整个屏幕

时间:2015-05-16 17:24:37

标签: python turtle-graphics

当我运行此代码时,形状只出现在一个非常小的区域而不是整个乌龟屏幕,我想知道,为什么?我还需要能够拨打shape_3,因此我必须将所有导入保留在def下。

以下是我正在使用的代码:

def shape_3():
    import random
    import turtle
    wn = turtle.Screen()
    wn.bgcolor("black")
    alex = turtle.Turtle()
    alex.speed(10000)
    alex.ht()
def rectangle(turtle):
    import random
    import turtle
    wn = turtle.Screen()
    wn.bgcolor("black")
    alex = turtle.Turtle()
    alex.speed(10000)
    alex.ht()
    w = random.randint(10,45)
    h = random.randint(10,45)
    color = random.randint(0,2)
    if color == 0:
        alex.fillcolor("aqua")
        alex.color("aqua")
    else:
        alex.fillcolor("white")
        alex.color("white")
    alex.begin_fill()
    for i in range(2):
        alex.forward(h)
        alex.right(90)
        alex.forward(w)
        alex.right(90)
    alex.end_fill()
def random_rect():
    import random
    import turtle
    wn = turtle.Screen()
    wn.bgcolor("black")
    alex = turtle.Turtle()
    alex.speed(10000)
    alex.ht()
    for i in range(300):
        x = random.randint(-480,480)
        y = random.randint(-405,405)
        alex.penup()
        alex.goto(x,y)
        alex.pendown()
        rectangle(alex)
print(shape_3(random_rect()))

2 个答案:

答案 0 :(得分:0)

将所有内容从shape3移至文件的开头。除了冗余和混乱之外,我认为你的设计没有任何好处。

在方法之后添加空格。

使用random.choice选择颜色。

您不要在矩形(乌龟)方法中使用乌龟。使用它。

import random
import turtle
wn = turtle.Screen()
wn.bgcolor("black")
alex = turtle.Turtle()
alex.speed(10000)
alex.ht()

def rectangle(turtle):
    w = random.randint(10,45)
    h = random.randint(10,45)
    color = random.choice("aqua", "white")
    turtle.fillcolor(color)
    turtle.color(color)
    turtle.begin_fill()
    for i in range(2):
        turtle.forward(h)
        turtle.right(90)
        turtle.forward(w)
        turtle.right(90)
    turtle.end_fill()

def random_rect():
    for i in range(300):
        x = random.randint(-480,480)
        y = random.randint(-405,405)
        alex.penup()
        alex.goto(x,y)
        alex.pendown()
        rectangle(alex)

修复所有这些问题可以解决您的问题。

答案 1 :(得分:0)

您遇到问题的主要原因是您没有通过并正确使用turtle函数传递rectangle()参数 - 这也是您认为必须import模块的原因在每个功能。

在您的代码中,传递给rectangle()的参数名为turtle,它与同一模块的名称冲突。然后立即import turtle将参数的值替换为模块的值。我已经将参数的名称更改为a_turtle以防止这种情况(并更好地描述它是什么)。这允许两个模块在脚本开头只被import编辑一次。

我也终止了shape_3()函数,它没有任何用处,只是直接调用random_rect()(除此之外,shape_3()无论如何都没有参与。)

import random
import turtle

def rectangle(a_turtle):
    w = random.randint(10,45)
    h = random.randint(10,45)
    color = random.randint(0,2)
    if color == 0:
        a_turtle.fillcolor("aqua")
        a_turtle.color("aqua")
    else:
        a_turtle.fillcolor("white")
        a_turtle.color("white")
    a_turtle.begin_fill()
    for i in range(2):
        a_turtle.forward(h)
        a_turtle.right(90)
        a_turtle.forward(w)
        a_turtle.right(90)
    a_turtle.end_fill()

def random_rect():
    wn = turtle.Screen()
    wn.bgcolor("black")
    alex = turtle.Turtle()
    alex.speed(10000)
    alex.ht()
    for i in range(300):
        x = random.randint(-480,480)
        y = random.randint(-405,405)
        alex.penup()
        alex.goto(x,y)
        alex.pendown()
        rectangle(alex)

random_rect()