Продовження створення консольного клону 'Flappy Bird'.
Цілі підкурсу 'Console Game Engine - Flappy Bird - Основа
Цілі підкурсу - правила гри Flappy Bird
Правила та результат:
Пташка (Bird):
- Гравець керує пташкою за допомогою пробілу: натиснувши пробіл, пташка рухається вгору.
- За замовчуванням, пташка падає вниз з плином часу.
Геймплей (GamePlay):
- Основна мета полягає у униканні зіткнень пташки з перешкодами - блоками, які знаходяться зверху та знизу.
- Кожне зіткнення пташки з блоком призводить до завершення гри.
- Завдання полягає в тому, щоб пролетіти між блоками, набираючи якнайбільшу кількість балів.
Блоки (Blocks) та Пари блоків (Block Pairs):
- Блоки є перешкодами, через які потрібно пролетіти пташці.
- Пари блоків складаються з блоків, один зверху, інший - знизу, утворюючи прохід для пташки.
Рахунок (Score):
- Гравець отримує бали за кожне успішне пролітання між парою блоків без зіткнення.
- Рахунок збільшується з кожним успішним проходженням через проміжок між блоками.
Завершення гри (Game Over):
- Гра завершується, якщо пташка зіткнеться з будь-яким блоком.
Бінарії завершеної гри, приклад того що має вийти після її розробки.
Цілі підкурсу 'Console Game Engine - Flappy Bird - Класи та файли
Структура проєкту, його файли та класи.
Бінарії завершеної гри, приклад того що має вийти після її розробки.
Опис та структура файлів проєкту гри:
- .
- Bird.cs
- BlockPair.cs
- FlappyBirdTest.csproj
- GameBlock.cs
- GamePlayer.cs
- Program.cs
- Public.cs
Класи проєкту гри:
GamePlayer.cs:
Схема класу GamePlayer:
Конструктори:
- GamePlayer(): Створює новий об'єкт гравця за замовчуванням.
- GamePlayer(int x, int y): Створює новий об'єкт гравця з заданими координатами x та y.
Методи:
Control(UserInputManager userInputManager, GameBoard gameBoard):
- Аргументи:
- userInputManager: Об'єкт для керування вводом користувача.
- gameBoard: Ігрова дошка, на якій знаходиться гравець.
- Віртуальний метод, призначений для управління гравцем. Потребує перевизначення в підкласах.
- Залишений порожнім для подальшого розширення у підкласах.
- Аргументи:
OneTick():
- Віртуальний метод.
- Лічильник тиків збільшується на одиницю.
- Перевіряється, чи лічильник досягнув максимального значення. Якщо так, лічильник обнуляється.
Поля:
- TickCounter: Лічильник тиків для відстеження часу або подій у гравця.
Цей клас встановлює загальний функціонал для гравців у грі. Метод Control залишений порожнім для можливості розширення та налаштування у підкласах, тоді як метод OneTick відслідковує часові події або дії, які повинні відбуватися певним чином для всіх гравців у грі.
Bird.cs:
Клас Bird успадковує клас GamePlayer і представляє птаха в грі Flappy Bird на основі рушія Console Game Engine.
Схема класу Bird:
Конструктори:
- Bird(int x, int y): Створює новий об'єкт птаха з заданими координатами x та y.
- Bird(): Створює новий об'єкт птаха за замовчуванням.
Методи:
Control(UserInputManager userInputManager, GameBoard gameBoard):
- Аргументи:
- userInputManager: Об'єкт для керування вводом користувача.
- gameBoard: Ігрова дошка, на якій знаходиться птах.
- Перевизначений метод для керування птахом.
- Перевіряє, чи може птах здійснити стрибок вгору та чи натиснута клавіша "Spacebar".
- Якщо умови виконуються, птах здійснює стрибок вгору.
- Аргументи:
OneTick(GameBoard gameBoard):
- Аргумент:
- gameBoard: Ігрова дошка, на якій знаходиться птах.
- Виконує одну ітерацію руху птаха.
- Підраховує та перевіряє лічильник тиків для руху птаха вниз.
- Якщо пройшло достатньо часу для руху та птах не знаходиться за межами гральної дошки, птах рухається вниз на один крок.
- Аргумент:
Поля:
- TickCounter: Лічильник тиків для відстеження часу між рухами птаха.
Цей клас відповідає за управління птахом у грі Flappy Bird. Метод Control обробляє ввід користувача для стрибків вгору, а метод OneTick відповідає за рух птаха вниз з певною частотою та відслідковує, чи птах не виходить за межі ігрової дошки.
GameBlock.cs:
Клас GameBlock успадковує клас GameObject і представляє блок у грі. Він має властивості для визначення висоти та ширини блоку, значення для відображення на ігровій дошці, а також методи для малювання блоку, переміщення його по координатах і перевірки на зіткнення з іншим об'єктом.
Схема класу GameBlock:
Властивості:
- Height: Висота блоку (з можливістю отримання та задання значення).
- Width: Ширина блоку (з можливістю отримання та задання значення).
- DrawValue: Значення для відображення блоку (з можливістю отримання та задання значення).
Методи:
DrawOnGameBoard(GameBoard gameBoard):
- Аргумент:
- gameBoard: Ігрова дошка, на якій має бути намальований блок.
- Малює блок на ігровій дошці, використовуючи метод
SetReactangleіз заданими координатами, шириною, висотою та значенням відображення.
- Аргумент:
Move(int x, int y):
- Аргументи:
- x: Кількість пікселів для переміщення по осі X.
- y: Кількість пікселів для переміщення по осі Y.
- Здійснює переміщення блоку на вказану кількість пікселів по осях X та Y.
- Аргументи:
IsCollidingWith(GameObject gameObject):
- Аргумент:
- gameObject: Об'єкт, з яким перевіряється зіткнення.
- Перевіряє, чи відбувається зіткнення з іншим об'єктом на основі координат та розмірів об'єктів.
- Аргумент:
Конструктори:
GameBlock() : base(): Конструктор без параметрів, викликає конструктор базового класу GameObject.
GameBlock(int x, int y, int width, int height, byte drawValue) : base(x, y):
- Аргументи:
- x: Початкова координата по осі X.
- y: Початкова координата по осі Y.
- width: Ширина блоку.
- height: Висота блоку.
- drawValue: Значення для відображення блоку.
- Конструктор із заданими параметрами координат, ширини, висоти та значення для відображення блоку.
- Аргументи:
Цей клас представляє блок у грі, надаючи можливість малювання його на ігровій дошці, переміщення та перевірку на зіткнення з іншими об'єктами у грі.
BlockPair.cs:
Клас BlockPair представляє пару блоків у грі Flappy Bird, де верхній та нижній блоки утворюють перешкоду, яку гравець повинен обійти. Клас має методи для переміщення блоків, малювання їх на ігровій дошці, перевірки на зіткнення з іншими об'єктами та два конструктори для створення пари блоків.
Схема класу BlockPair:
Властивості:
- TopBlock: Верхній блок пари (з можливістю отримання та задання значення).
- BottomBlock: Нижній блок пари (з можливістю отримання та задання значення).
Методи:
MoveBlocks(int x):
- Аргумент:
- x: Кількість пікселів для переміщення блоків по осі X.
- Переміщує верхній та нижній блоки на вказану кількість пікселів по осі X та повертає результат переміщення.
- Перевіряє, чи верхній блок залишається видимим на екрані.
- Аргумент:
DrawBlocksOnGameBoard(GameBoard gameBoard):
- Аргумент:
- gameBoard: Ігрова дошка, на якій мають бути намальовані блоки.
- Малює верхній та нижній блоки пари на ігровій дошці.
- Аргумент:
IsCollidingWith(GameObject gameObject):
- Аргумент:
- gameObject: Об'єкт, з яким перевіряється зіткнення.
- Перевіряє, чи відбувається зіткнення пари блоків з іншим об'єктом на основі перевірки зіткнення верхнього та нижнього блоків.
- Аргумент:
Конструктори:
BlockPair(GameBlock topBlock, GameBlock bottomBlock):
- Аргументи:
- topBlock: Верхній блок пари.
- bottomBlock: Нижній блок пари.
- Конструктор, що приймає два блоки як параметри і ініціалізує властивості TopBlock та BottomBlock.
- Аргументи:
BlockPair(GameBoard gameBoard):
- Аргумент:
- gameBoard: Ігрова дошка, на основі розмірів якої буде створена пара блоків.
- Конструктор, що створює пару блоків на основі розмірів ігрової дошки та додатково виводить інформацію про висоту блоків і розмір ігрової дошки у текстовому форматі.
- Аргумент:
Цей клас представляє пару блоків, які утворюють перешкоду у грі, дозволяючи взаємодіяти з ними, малювати на ігровій дошці та перевіряти зіткнення з іншими об'єктами.
Цілі підкурсу 'Console Game Engine - Flappy Bird - Діаграми
Структура проєкту у вигляді діаграм.
Бінарії завершеної гри, приклад того що має вийти після її розробки.
GamePlayer:

Bird:

GameBlock:

BlockPair:

Public:

Структура функцій Program:

build info
- compiler
- 2.0.5.1 · 4054EF9BF6C4510A
- built
- 2026-11-08 14:31:25 UTC
WebUniverse