Компоненти програми
Взагалі компонентів не так вже й багато: поле для лабіринту, стінки, позначка пройденого шляху, та сам шлях між стінками. На основі цього і можна побудувати класи, що є на рисунку 2.2.
Клас Maze – є головним класом, тому він і містить в собі віртуальну функцію Generate, а саме тому ми можемо його вважати абстрактним. Також цей клас має в собі дві рядкові зміні:
b – рядковий масив, що є як раз і полем нашого лабіринту.
t – рядкова зміна, що приймає значення “p”, для запиту, щодо перегляду проходження шляху.
Рисунок 2.1. – Загальний алгоритм роботи програми
Рисунок 2.2 – Діаграма класів
Клас Area є похідним класом від абстрактного Maze, та має доступ до приватних до приватних змінних, за допомогою protected. Він містить в собі цілочисловий масив для обрахунку стінок та шляху(с) у вигляді одиничок та двійок. Також змінні ширини (оо) та висоти (іі), які за допомогою функції Set, користувач вводить через клавіатуру. І вже цілочислові зміні, показників стінок (а), пустих місць (k) та пройденого шляху (c1).
А тепер пройдемося по функціям даного класу, їх всього чотири:
Set
Generate
Print
Passage
Як вже сказав до цього Set приймає значення висоти та ширини, які вводить користувач.
Generate – віртуальна функція від головного класу, який спочатку перевіряє введену ширину та висоту на непарність, та при помилці виводить помилку, щодо невірного вводу. Після цього використовуючи алгоритм Ейлера генеруємо лабіринт з стінками, та пустими місцями між стінками, тупики та вхід з виходом.
Print – не тяжко здогадатися, що ця функція саме і виводить нам згенерований лабіринт із усіма компонентами.
Passage – функція, яка спочатку питає у користувача, чи потрібно показати проходження лабіринту, чи ні. Та описується алгоритм за «Правилом руки», для пошуку виходу з нашого згенерованого лабіринту.
Достарыңызбен бөлісу: |