Проблема заполнения графических изображений в Python Turtle - PullRequest
0 голосов
/ 15 ноября 2018

Я должен нарисовать здание для своего класса Python, и функция fillcolor() выполняет свою работу для двух фигур, но для последней, даже если я, так сказать, закончу схему, она победит ' Заполните его нужным цветом:

import turtle

def main():
    turtle.setup(900, 900)
    cityscape(-300, -400, 300, 'gray')
    cityscape(0, -400, 300, 'gray')
    building(-300, -100, 'gray')
    turtle.speed(0)

def cityscape(x, y, width, color):
    turtle.penup()
    turtle.goto(x, y)
    turtle.pencolor('gray')
    turtle.fillcolor(color)
    turtle.pendown()
    turtle.begin_fill()
    for count in range(4):
        turtle.forward(width)
        turtle.left(90)
    turtle.end_fill()

def building(x, y, color):
    turtle.penup()
    turtle.goto(x, y)
    turtle.fillcolor(color)
    turtle.pendown()
    turtle.begin_fill()
    turtle.forward(100)
    turtle.left(90)
    turtle.forward(100)
    turtle.right(180)
    turtle.left(90)
    turtle.forward(100)
    turtle.left(90)
    turtle.forward(200)
    turtle.right(90)
    turtle.forward(100)
    turtle.right(90)
    turtle.forward(250)
    turtle.left(90)
    turtle.forward(70)
    turtle.left(90)
    turtle.forward(175)
    turtle.right(90)
    turtle.forward(80)
    turtle.right(90)
    turtle.forward(100)
    turtle.left(90)
    turtle.forward(70)
    turtle.right(90)
    turtle.forward(425)
    turtle.right(90)
    turtle.forward(425)


main()

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 15 ноября 2018

Вы оставили turtle.end_fill() за пределами функции building().Я бы также написал main() следующим образом:

def main():
    turtle.setup(900, 900)
    turtle.speed('fastest')
    cityscape(-300, -400, 300, 'gray')
    cityscape(0, -400, 300, 'gray')
    building(-300, -100, 'gray')
    turtle.mainloop()

Полный список кода с приведенным выше исправлением и некоторыми изменениями стиля:

from turtle import Screen, Turtle

def main():
    screen = Screen()
    screen.setup(900, 900)

    yertle = Turtle(visible=False)
    yertle.speed('fastest')

    cityscape(yertle, -300, -400, 300, 'gray')
    cityscape(yertle, 0, -400, 300, 'gray')
    building(yertle, -300, -100, 'gray')

    screen.mainloop()

def cityscape(turtle, x, y, width, color):
    turtle.penup()
    turtle.goto(x, y)
    turtle.pendown()

    turtle.color(color)

    turtle.begin_fill()
    for _ in range(4):
        turtle.forward(width)
        turtle.left(90)
    turtle.end_fill()

def building(turtle, x, y, color):
    turtle.penup()
    turtle.goto(x, y)
    turtle.pendown()

    turtle.color(color)

    turtle.begin_fill()
    turtle.forward(100)
    turtle.left(90)
    turtle.forward(100)
    turtle.right(90)
    turtle.forward(100)
    turtle.left(90)
    turtle.forward(200)
    turtle.right(90)
    turtle.forward(100)
    turtle.right(90)
    turtle.forward(250)
    turtle.left(90)
    turtle.forward(70)
    turtle.left(90)
    turtle.forward(175)
    turtle.right(90)
    turtle.forward(80)
    turtle.right(90)
    turtle.forward(100)
    turtle.left(90)
    turtle.forward(70)
    turtle.right(90)
    turtle.forward(425)
    turtle.right(90)
    turtle.forward(425)
    turtle.end_fill()

main()
...