Заставьте графику Python Zelle рисовать фигуры в порядке, введенном пользователем - PullRequest
0 голосов
/ 03 ноября 2018

Вместо того, чтобы рисовать прямоугольники в порядке их ввода, моя программа рисует их в случайном порядке. Как я могу изменить свою программу, чтобы она рисовала прямоугольники в том порядке, в котором их вводит пользователь? Он должен нарисовать все прямоугольники после вся информация была введена (как сказал мой профессор).

from graphics import *
import random
import time

def main():
    # Cordial welcome
    print('Welcome to Rectangle Painter! Enter data and I will draw you a rectangle.')

    winSize = input('How large would you like the window to be? (Ex: 500by500) ')
    winSize1 = winSize.split(sep = 'by')
    win = GraphWin('Rectangle Painter v1.0', winSize1[0], winSize1[1])


    # The "Big Ole' List of Rectangle Coordinates"
    Bolorc = []

    # Asking for data to draw Rectangles
    numRect = int(input('How many rectangles would you like to create? '))
    for i in range(numRect):
        rec = input('Enter your information for Rectangle #' + str(i + 1) + ' (Ex: red x1 x2 y1 y2): ')
        rec1 = rec.split(sep = ' ')
        Bolorc = rec1 + Bolorc

    # Drawing Rectangles
    for i in range(numRect):
        # Each rectangle is created with 5 values, 
        Offset = i * 5
        Rec = Rectangle(
        Point(Bolorc[Offset + 1], Bolorc[Offset + 2]),
        Point(Bolorc[Offset + 3], Bolorc[Offset + 4]))
        Rec.setFill(Bolorc[Offset])
        Rec.setOutline('black')
        Rec.setWidth('2')
        Rec.draw(win)

1 Ответ

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

моя программа рисует их в случайном порядке

Я не знаю о случайном порядке, но эта строка:

Bolorc = rec1 + Bolorc

заставляет вас печатать их в обратном порядке. Чтобы это исправить, просто сделайте:

Bolorc = Bolorc + rec1  # or Bolorc += rec1

Однако, в целом, вместо отслеживания смещения индекса, позвольте Python сделать больше за вас:

from graphics import *

# Cordial welcome
print('Welcome to Rectangle Painter! Enter data and I will draw you a rectangle.')

winSize = input('How large would you like the window to be? (Ex: 500by500) ')
width, height = winSize.split('by')
win = GraphWin('Rectangle Painter v1.0', width, height)

# The "Big Ole' List of Rectangle Coordinates"
bolorc = []

# Asking for data to draw Rectangles
numRect = int(input('How many rectangles would you like to create? '))

for i in range(numRect):
    rec = input('Enter your information for Rectangle #' + str(i + 1) + ' (Ex: red x1 x2 y1 y2): ')
    bolorc.append(rec.split(' '))

# Drawing Rectangles
for color, x1, x2, y1, y2 in bolorc:
    rec = Rectangle(Point(x1, x2), Point(y1, y2))
    rec.setFill(color)
    rec.setOutline('black')
    rec.setWidth('2')
    rec.draw(win)

win.getMouse() # Pause to view result
win.close()
...