Етап-1. Навожу повний код побудови такого Будинка, який задається ЛИШЕ координатами стін як стартовий до цього уроку, а значення параметрів для даху обчислюються.
#===== HouseFull =========== from p5 import* def setup():
createCanvas(600,800) background('orange')
def draw():
#===================================== xSt = 150; ySt = 160 wSt = 180; hSt = 200
#===================================== vidstup = wSt // 5 vDah = hSt // 3
#=====================================
fill('white'); rect(xSt, ySt, wSt, hSt)
fill('red')
triangle(xSt - vidstup, ySt , xSt + vidstup + wSt, ySt , xSt + wSt//2, ySt - vDah)
fill('blue')
#===================================== wShift = wSt//7
#=====================================
rect(xSt + wShift, ySt + hSt//3, 2* wShift, hSt- hSt//3)
fill('yellow')
rect(xSt + 4*wShift, ySt + hSt//3, 2* wShift, hSt- hSt//2) run()
Етап 2. Редагуємо код, загортаючи все, що стосується побудови будинка, у функцію house(xSt, ySt, wSt,hSt)
Етап 3. В тілі draw() викликаємо її:
Етап 4. Виносимо блок введення даних із draw() вверх, видаляючи відступи
Етап 5. Перевіряємо. Все працює для одного будиночка.
Програма стала більш зрозумілою та структурованою, а наш код виглядатиме так:
Етап-6. Тепер редагуємо БЛОК ВВЕДЕННЯ ТА ОБЧИСЛЕННЯ ДАНИХ, виносимо їх ПЕРЕД draw()
#===== HouseCityWithoutFOR =========== from p5 import* def setup():
createCanvas(1500,400) background('orange')
def house(xSt, ySt, wSt,hSt):
#=====================================
fill('white'); rect(xSt, ySt, wSt, hSt)
fill('red')
triangle(xSt - vidstup, ySt , xSt + vidstup + wSt, ySt , xSt + wSt//2, ySt - vDah)
fill('blue')
#===================================== wShift = wSt//7
#=====================================
rect(xSt + wShift, ySt + hSt//3, 2* wShift, hSt- hSt//3)
fill('yellow')
rect(xSt + 4*wShift, ySt + hSt//3, 2* wShift, hSt- hSt//2)
#============== Вводимо дані ==========================
#== Були константи, їх закомментили:========================
#xSt = 50; ySt = 150
#wSt = 180; hSt = 200
#== Стали змінні, значення яких вводимо в поля===============
xSt=int(input('x стіни==')) ySt=int(input('y стіни==')) wSt=int(input('ширина стіни==')) hSt=int(input('висота стіни=='))
vidstHouse=int(input('відстань між будинками=='))
#===== ДАХ: Обраховуємо відступ та висоту============= vidstup = wSt // 5 vDah = hSt // 3
#==НАСТУПНИЙ БУДИНОК: Обраховуємо зсув х по відношенню до попереднього==== zsuv_xSt = vidstHouse + xSt + wSt + vidstup
def draw():
#===================================== house(xSt, ySt, wSt,hSt) house(xSt + zsuv_xSt * 1, ySt, wSt,hSt)
house(xSt + zsuv_xSt * 2, ySt, wSt,hSt)
run()
Етап 7. Загортаємо побудови будинків у цикл із параметром
Результативний програмний код такої структури:
Блок-1. Імпорт модуля та налаштування полотна
Блок-2. Опис функції для побудови будинка
Блок-3. Введення даних
Блок-4. Обчислення, необхідні для ДАХУ: відступи над стіною та висоиа даха. Також у спеціальній змінній обчислюємо, на скільки в наступного будинка посунеться значення xSt
Блок-5. Нарешті сама функція для побудов, в якій наші будинки з’являтимуться в необхідній кількості
Блок-6. Збираємо код та запускаємо на виконання
Однак, не вистачає фундаменту під кожен будиночок, правда?
Повертаємося до редагування коду
1. Додаємо ще одну функцію для побудови прямокутника зеленого кольору.
2. До блоку обчислень додаємо обрахування значень параметрів для прямокутника зеленого кольору. Відштовхуємося знову від параметрів стіни та відстані між будинками.
3. До циклу з параметром додаємо виклик функції побудови фундаменту. Не забуваємо, що координата х для фундамента кожного разу буде зміщуватися праворуч, збільшуючись так само, як і при побудові наступного будинка.
4. Виконаємо оновлений програмний код, вводячи на запит довільні цілі значення для параметрів стіни, відступу між будинку та їх кількості.
Вікно виконання має такий вигляд:
Оновлений програмний код
Вдосконаленню коду немає меж: спробуйте внести зміни до програмного коду так, щоб колір фундаменту кожного будинку був іншим.
І посадіть між будинками квіточку)