3.4. Опис основних функцій
Програма складається з функцій, опис яких наведений в таблиці 3.4.1.
Таблиця 3.4.1 – Функції програми
Ім'я |
Характеристика |
Призначення |
__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner){} |
Головна |
Забезпечує інтерфейс користувача |
void __fastcall TForm1::Timer1Timer(TObject *Sender){} |
Спрацьовує при натисканні кнопки "Новая игра" |
Прослуховує клавіатуру та координує змійку в потрібному напрямку |
void makeRandomSnake (void){} |
Спрацьовує при натисканні кнопки "Новая игра" |
Виставляє змійку в випадковому місці на ігровому полі |
void render(void){} |
Спрацьовує при натисканні кнопки "Новая игра" |
Займається побудовою ігрового світу |
void music(void){} |
Спрацьовує при натисканні кнопки "Новая игра" |
Забезпечує фонову музику |
void clearAll (void) {} |
Спрацьовує при натисканні кнопки "Новая игра" |
Забезпечує очистку поля |
void gameOver (void) {} |
Спрацьовує при програшу |
Виводить повідомлення про програш |
void makeRandomFood (void) {} |
Спрацьовує при натисканні кнопки "Новая игра" |
Відповідає за розстановку їжі на полі |
void makeRandomPoison (void) {} |
Спрацьовує при натисканні кнопки "Новая игра" |
Відповідає за розстановку стін на полі |
void Exit(void) {} |
Спрацьовує при натисканні кнопки "Выход" |
Забезпечує вихід із програми |
void Win(void) {} |
Спрацьовує при виграшу |
Відповідає за виграш |
void step (void) {} |
Викликається автоматично таймером |
Відповідає за кожен крок змії |
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) |
Спрацьовує при натисненні певних клавіш |
Відповідає за направлення змії по ігровому полю |
void __fastcall TForm1::Button1Click(TObject *Sender) |
Спрацьовує при натисканні кнопки "Новая игра" |
Відповідає за початок нової гри |
Продовження таблиці 3.4.1 – Функції програми
4. Реалізація курсової роботи
Програма реалізує об'єктно-орієнтований варіант інтерфейсу, в середовищі C++ Builder. Інтерфейс забезпечується повідомленнями користувачеві, зразки яких, джерело виникнення та опис ситуації наведені у таблиці 4.1.
Таблиця 4.1 – Повідомлення користувачеві
Повідомлення |
Джерело |
Опис ситуації |
Игра окончена |
void gameOver (void) {} |
Координати змійки збіглися з границею поля |
Поздравляем, вы прошли уровень!!! |
void Win(void) {} |
Ви пройшли рівень гри |
Інтерфейс гри "Сапер"
Програма має такий вигляд (Рисунок 4.1)
Рисунок 4.1 - Інтерфейс програми
П
ри
натисканні клавіш-стрілок, змія
повертається у відповідний напрямок.
Коли координати змії співпадають з
координатами яблука, змія росте.
Рисунок 4.2 - Ігровий процес
Коли гравець програє, то виведеться таке повідомлення:
Рисунок 4.3 - Виведення повідомлення про програш
Коли гравець виграє , то виведеться таке повідомлення:
Рисунок 4.4 - Виведення повідомлення про виграш
У цьому проекті не використовуються вхідні дані тобто користувач нічого не вводить з клавіатури .
Використовуються допоміжні змінні :
int world[25][25] |
Ігрове поле |
int east, south, relativeE, relativeS, wrappedE, wrappedS; |
Змінні, які відповідають за частини ігрового поля |
int snakeE[650], snakeS[650], snakeHeadE, snakeHeadS, snakeTailE, snakeTailS, segment; |
Позиції кожного сегменту змійки |
int snakeLength; |
Довжина змійки |
int direction, lastDirection, reverseDirection; |
Напрямок змійки |
int w=0; |
Кількість пройдених рівнів |
int maxSize = 25. |
Максимальний розмір поля |
Вихідні дані
Повідомлення |
Джерело |
Опис ситуації |
Игра окончена. Размер змеи: |
void gameOver (void) {} |
Координати змійки збіглися з границею поля |
Поздравляем, вы прошли уровень!!! |
void Win(void) {} |
Ви пройшли рівень гри |
Спочатку з'являється форма, яка відображає меню гри. За меню відповідає функція __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner).
Потім при натисканні клавіші нової гри, об’являються змінні які потім використовуватимуться для роботи програми.
bool ateFood = false; //їжа
// світ
int world[25][25];
// змінні які відповідають за частини ігрового поля
int east, south, relativeE, relativeS, wrappedE, wrappedS;
// позиції кожного сегменту змійки
int snakeE[650], snakeS[650];
int snakeHeadE, snakeHeadS;
int snakeTailE, snakeTailS;
int snakeLength;
int segment;
int direction, lastDirection, reverseDirection; //напрямок
int w=0; //вінрейт
int maxSize = 25; //максимальний розмір поля
Наступною частиною є головна функція
void __fastcall TForm1::Timer1Timer(TObject *Sender){}
яка працює по запуску таймера та повністю відповідає за рух та напрямок змійки, використовуючи допоміжні функції які знаходяться в наступній частині программи :
void music(void) {}
Відповідає за музику на фоні
void render(void) {}
Формує ігрове поле рівня
void makeRandomSnake (void) {}
Генерує випадкову позицію змійки
void clearAll (void) {}
Очищає поле
void Win(void) {}
Функція, яка відповідає за виведення повідомлення про виграш
void gameOver (void) {}
Закінчує гру.
void makeRandomFood (void) {}
Виставляє на полі їжу.
void makeRandomPoison (void) {}
Виставляє стіни.
void Exit(void) {}
Вихід.
void step (void) {}
Відповідає за кожну дію змійки.
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
Прослуховує натиснуті клавіші.
void __fastcall TForm1::N5Click(TObject *Sender)
Пауза (зупинка таймера).
void __fastcall TForm1::N6Click(TObject *Sender)
Продовження гри.
void __fastcall TForm1::N7Click(TObject *Sender)
Виведення інформації.
void __fastcall TForm1::Button1Click(TObject *Sender)
Клавіша, яка відповідає за початок нової гри або за перехід на новий рівень.
