Гра "Змійка" - опис програми
|
| | | | | 8.080403.3157з 18 | Лист | | | | | | | | 30 | | Зм. | Лист | №Док. | Підпис | Дата | | | | |
Зміст - Анотація 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) Зміна поточних даних новими public void paintComponent(Graphics g) - малювання панелі Клас class Snake - змійка Змінні: int colElements - кількість елементів final int maxLen - максимально можлива довжина SnakeElement elem[] - масив частин змійки int xNextSpeed, yNextSpeed - напрям руху на наступному кроці final int startLives - початкова кількість життів private static int lives - зберігає кількість життів змійки Методи public Snake(int c, int xPos, int yPos) - створення змійки довжини с з заданими координатами public void increment(SnakeElement lastElem) додавання до змійки нового елемента public boolean isMaxLong() - перевірка досягнення змійкою максимальної довжини public boolean isKilled() - перевірка, чи «жива» змійка public void decrementLive() - забирає життя в змійки Клас class SnakeElement - елемент змійки Змінні: int xSpeed - швидкість елемента змійки по горизонталі int ySpeed - швидкість елемента змійки по вертикалі int xPos - позиція елемента змійки по горизонталі int yPos - позиція елемента змійки по вертикалі public SnakeElement(int xPos, int yPos) - конструктор задає координати елемента public void move() - рухає елемент public void setSpeed(int x, int y) - встановлення швидкості елемента Клас class GameSquare - клітка ігрового поля Змінні: int w, h - розміри boolean used - використання boolean isBorder - перепона Методи public void setSize(int w, int h) - встановлює розміри public void setBorder(boolean b) - робить клітинку перепоною public void setUsed(boolean b) - робить клітинкою зайнятою/незайнятою public void paintComponent(Graphics g) - малювання клітинки Клас public class MenuString - строка меню Змінні: - пункти меню і підменю JMenu Game; JMenuItem mi_NewGame, mi_PauseGame, mi_StopGame, mi_ExitGame; JMenu Options, Speed; JMenuItem mi_S1, mi_S2, mi_S3; JMenu Help; JMenuItem mi_About; 2.5. КодуванняКодування проведено згідно викладеного проекту на об'єктно орієнтованій мові Java. Мова Java є об'єктно-орієнтовнованою дозволяє реалізувати запроектовані класи, їх взаємодію та сприяє написанню надійних програм і спрощує їх реалізацію. Існує багато інших мов підтримуючих ООП технологію програмування. Це такі мови програмування, як С++, Object Pascal, Python та ін. Мова Java завдяки широким можливостям та бібліотекам класів має велику гнучкість і забезпечує можливість реалізації дуже великих проектів за мінімальний час,
Страницы: 1, 2, 3
|