|
Зміст
- Анотація 3
- Завдання: 4
- 1. Аналіз предметної області, постановка задачі 5
- 1.1. Формулювання проблеми 5
- 1.2. Аналіз предметної області 6
- 1.3. Постановка задачі 6
- 2. Проект програми 7
- 2.1. Ієрархія об'єктів 7
- 2.2. Ієрархія наслідування 9
- 2.3. Діаграма станів гри 10
- 2.4. Специфікація 11
- 2.5. Кодування 14
- 3. Додаток 15
- 3.1. Тексти файлів проекту 15
- 3.1.1. Файл GameSnake.java 15
- 3.1.2. Файл GameFrame.java 16
- 3.1.3. Файл GameField.java 17
- 3.1.4. Файл InformPanel.java 23
- 3.1.5. Файл Snake.java 24
- 3.1.6. Файл SnakeElement.java 26
- 3.1.7. Файл GameSquare.java 27
- 3.1.8. Файл MenuString.java 28
- 3.2. Знімок вікна програми: 30
- 4. Література 31
Анотація
Гра «Змійка» - це гра, в якій уявна змійка рухається по ігровому полю оминаючи перепони і їй потрібно влучити в ціль. Програма є нескладною і доступна для виконання на багатьох ЕОМ в різних операційних системах з встановленою Virtual Java Machine. Вона розрахована на широке коло користувачів завдяки своїй простоті.
Завдання:
Провести аналіз, розробити проект, скласти опис і специфікацію, провести кодування програми-гри «Змійка» використовуючи методи об'єктно-орієнтованого програмування.
1. Аналіз предметної області, постановка задачі
1.1. Формулювання проблеми
Комп'ютерні ігри для людини - це не лише засіб розважитись. Вони допомагають розвинути людську реакцію, інтелект, знання в певних галузях і областях. Гра змійка - одна з таких ігор. Рівень, до якого дійде гравець, залежить лише від швидкості його реакції на поточні обставини гри, які динамічно змінюватимуться в сторону збільшення з кожним новим раундом, що також сприятиме збільшенню реакції. Провівши частину вільного часу за грою, можна отримати задоволення від набраних очок і пройдених рівнів. Якщо людина ніколи не працювала з комп'ютером, то гра допоможе набути мінімальних навиків з клавіатурою без необхідності розбиратись з складними правилами великих ігор та програм.
Правила гри такі: на прямокутному ігровому полі створюється змійка, яка має декілька життів і складається з кількох частин. На полі також знаходяться клітки-перепони та ціль, в яку змійка має влучити. Змійка починає рухатися в довільному напрямку на найнижчій швидкості, яка відповідає першому рівню гри. Коли гравець натискатиме клавіші курсору, то напрям руху першої частини змійки - «голови» змінюватиметься відповідно до натиснутої клавіші. Коли голова змійки вийде за межі ігрового поля чи влучить в одну з перепон, то в залежності від того, залишились чи ні життя, в змійки або ж буде відняте одне життя, або ж гру буде припинено. Коли голова змійки «врізається» в ціль, то вона стане новою головою і рух змійки продовжиться. Коли довжина змійки перевищує максимально можливу, то даний рівень буде пройдено і гра перейде на наступний. В наступному рівні швидкість руху збільшується.
1.2. Аналіз предметної області
Гру «змійка» можна було б реалізувати в текстовому режимі, зображуючи всі об'єкти різними текстовими символами, наприклад, границі - підкреслюванням «_ і |», перепони хрестиками «Х», змійку прямокутниками.
Але в іграх, що вже існують і подібні до даної, використовуються побудови в графічному режимі, хоч і максимально прості. Проте поряд з простотою в них застосовуються анімації для зображення руху, наприклад у грі в танки, ці танки рухаються по екрану, імітуючи рух справжнього танку.
У грі для створення інтерфейсу користувача - виводу вікна гри, ігрових меню та кнопок, можна використати стандартні засоби мови JAVA - компоненти бібліотек AWT (застаріла) чи Swing (більш нова, що є частиною API - Java Foundation Classes), і тому її використання цієї бібліотеки дає більше можливостей для графічного оформлення гри - побудова найпростіших геометричних фігур, розфарбовування областей екрану та інше.
1.3. Постановка задачі
Розробити проект гри, з допомогою який можна програмно реалізувати, провівши кодування на об'єктно-орієнтованій мові програмування, скласти специфікацію.
2. Проект програми
2.1. Ієрархія об'єктів
На основі того, що необхідно розробити гру змійка, можна виділити головний об'єкт ієрархії - «Гра Змійка». Вона складається з «ігрового поля» та «меню».
Об'єкти-пункти меню: «Гра» з вкладеними підпунктами «нова гра» - розпочинає нову гру, «пауза» - тимчасово припиняє гру, «зупинити гру» - зупиняє поточну гру, «вихід» - дозволяє вийти з програми. Підменю «швидкість гри» з меню «Настроювання» дозволяє змінити швидкість руху змійки.
Об'єкт «ігрове поле» складається з об'єктів «ціль», «змійка», «перепона», «межі», «поле інформації» та «повідомлення». «Ціль» це клітка на ігровому полі, у яку має влучити змійка. «Змійка» складається з «частин» і згідно описаних вище правил рухається по ігровому полі. «Перепони» - це клітки на ігровому полі, які змійка має оминати. «Межі» ігрового поля встановлюють границі, за які змійка не може вийти. Влучання змійки в перепони чи вихід за ігрове поле зменшують її кількість гравців.
«Поле інформації» інформуватиме гравця про стан гри: «Повідомлення» - якій будуть видаватися різноманітні текстові повідомлення про події в грі та вказівки гравцю (наприклад, повідомлення про те, що гру закінчено, про перехід в наступний тур або виграш у грі). «Індикатор життів» - об'єкт, який показуватиме про кількість життів змійки. «Індикатор рівня» буде показувати номер рівня, на якому знаходиться гра. «Індикатор довжини» відображатиме довжину змійки, щоб гравець орієнтувався, скільки цілей поцілено - згідно вказаних правил для переходу на наступний рівень, потрібно поцілити в певну кількість цілей.
Рисунок 1 - ієрархія об'єктів гри Змійка
2.2. Ієрархія наслідування
Рисунок 2 - Ієрархія класів
2.3. Діаграма станів гри
Рисунок 3 - Діаграма станів гри
2.4. Специфікація
Клас public class Game - головний клас проекту необхідний для запуску гри
Метод public static void main(String[] args) - з нього починається виконання програми
Клас public class GameFrame реалізує вікно для відображення ігрового поля та даних гри
Метод public GameFrame() - конструктор вікна гри в якому встановлюються його параметри.
Метод public void newGame() - метод запускає новий сеанс гри
Метод public void pauseGame() - метод створює паузу
Метод public void stopGame() - метод зупиняє гру
Клас public class GameField - ігрове поле
Змінні:
Snake snake - змійк
GameFrame frame - змінна для доступу до вікна гри
InformPanel informPanel - інформаційна панель
protected boolean isGameRun = істина, якщо йде гра
protected boolean isGamePause - істина під час паузи
int gameSpeed - швидкість гри
protected int colObstacles - Кількість перепон
protected int delay - Затримка при русі змійки
final int w = 35, h = 25 - розміри ігрового поля
protected GameSquare square[][] - ігрові клітки
boolean keyBlocked - істина, коли заблокована клавіатура
Методи
public GameField(GameFrame owner) - конструктор
public void setDefault() - встановлення в початковий стан
public void clearSquares()- відмічення всіх кліток вільними
protected void createSnake() - створення змійки
protected void createBorders() - Створює межі поля
protected void createObstacles(int col) - створює col перепон на ігровому полі
protected void createTarget() - створення мішені для змійки
public void paintComponent(Graphics g) - малювання компонентів поля
public void run () - обробка подій гри
public void cheeckWin() - перевірка перемоги в грі
public void processCrash() - перевірка влучання в перепону
public void newGame() - Запуск нової гри
public void pauseGame() - пауза в грі
public void stopGame( ) - зупинка гри
public void setGameSpeed(int s) - задання швидкості гри
Клас public class InformPanel
Змінні:
protected int lives, len, speed, obstacles - кількість життів, довжина змійки, швидкість змійки, кількість перепон;
Методи
public InformPanel(final GameField field) - Конструктор
public void updateInfo(int lives, int len, int speed, int obstacles) Зміна поточних даних новими
При использовании материалов активная ссылка на источник обязательна.