Зміст
1.Аналіз предметної області, постановка задачі5
1.2.Аналіз предметної області6
3.1.4.Файл InformPanel.java. 23
3.1.6.Файл SnakeElement.java. 26
3.1.7.Файл GameSquare.java. 27
3.1.8.Файл MenuString.java. 28
Гра «Змійка» - це гра, в якій уявна змійка рухається по ігровому полю оминаючи перепони і їй потрібно влучити в ціль. Програма є нескладною і доступна для виконання на багатьох ЕОМ в різних операційних системах з встановленою Virtual Java Machine. Вона розрахована на широке коло користувачів завдяки своїй простоті.
Провести аналіз, розробити проект, скласти опис і специфікацію, провести кодування програми-гри «Змійка» використовуючи методи об’єктно-орієнтованого програмування.
Комп’ютерні ігри для людини – це не лише засіб розважитись. Вони допомагають розвинути людську реакцію, інтелект, знання в певних галузях і областях. Гра змійка – одна з таких ігор. Рівень, до якого дійде гравець, залежить лише від швидкості його реакції на поточні обставини гри, які динамічно змінюватимуться в сторону збільшення з кожним новим раундом, що також сприятиме збільшенню реакції. Провівши частину вільного часу за грою, можна отримати задоволення від набраних очок і пройдених рівнів. Якщо людина ніколи не працювала з комп’ютером, то гра допоможе набути мінімальних навиків з клавіатурою без необхідності розбиратись з складними правилами великих ігор та програм.
Правила гри такі: на прямокутному ігровому полі створюється змійка, яка має декілька життів і складається з кількох частин. На полі також знаходяться клітки-перепони та ціль, в яку змійка має влучити. Змійка починає рухатися в довільному напрямку на найнижчій швидкості, яка відповідає першому рівню гри. Коли гравець натискатиме клавіші курсору, то напрям руху першої частини змійки – «голови» змінюватиметься відповідно до натиснутої клавіші. Коли голова змійки вийде за межі ігрового поля чи влучить в одну з перепон, то в залежності від того, залишились чи ні життя, в змійки або ж буде відняте одне життя, або ж гру буде припинено. Коли голова змійки «врізається» в ціль, то вона стане новою головою і рух змійки продовжиться. Коли довжина змійки перевищує максимально можливу, то даний рівень буде пройдено і гра перейде на наступний. В наступному рівні швидкість руху збільшується.
Гру «змійка» можна було б реалізувати в текстовому режимі, зображуючи всі об’єкти різними текстовими символами, наприклад, границі – підкреслюванням «_ і |», перепони хрестиками «Х», змійку прямокутниками.
Але в іграх, що вже існують і подібні до даної, використовуються побудови в графічному режимі, хоч і максимально прості. Проте поряд з простотою в них застосовуються анімації для зображення руху, наприклад у грі в танки, ці танки рухаються по екрану, імітуючи рух справжнього танку.
У грі для створення інтерфейсу користувача - виводу вікна гри, ігрових меню та кнопок, можна використати стандартні засоби мови JAVA - компоненти бібліотек AWT (застаріла) чи Swing (більш нова, що є частиною API – Java Foundation Classes), і тому її використання цієї бібліотеки дає більше можливостей для графічного оформлення гри – побудова найпростіших геометричних фігур, розфарбовування областей екрану та інше.
Розробити проект гри, з допомогою який можна програмно реалізувати, провівши кодування на об’єктно-орієнтованій мові програмування, скласти специфікацію.
На основі того, що необхідно розробити гру змійка, можна виділити головний об’єкт ієрархії – «Гра Змійка». Вона складається з «ігрового поля» та «меню».
Об’єкти-пункти меню: «Гра» з вкладеними підпунктами «нова гра» - розпочинає нову гру, «пауза» - тимчасово припиняє гру, «зупинити гру» - зупиняє поточну гру, «вихід» - дозволяє вийти з програми. Підменю «швидкість гри» з меню «Настроювання» дозволяє змінити швидкість руху змійки.
Об’єкт «ігрове поле» складається з об’єктів «ціль», «змійка», «перепона», «межі», «поле інформації» та «повідомлення». «Ціль» це клітка на ігровому полі, у яку має влучити змійка. «Змійка» складається з «частин» і згідно описаних вище правил рухається по ігровому полі. «Перепони» - це клітки на ігровому полі, які змійка має оминати. «Межі» ігрового поля встановлюють границі, за які змійка не може вийти. Влучання змійки в перепони чи вихід за ігрове поле зменшують її кількість гравців.
«Поле інформації» інформуватиме гравця про стан гри: «Повідомлення» - якій будуть видаватися різноманітні текстові повідомлення про події в грі та вказівки гравцю (наприклад, повідомлення про те, що гру закінчено, про перехід в наступний тур або виграш у грі). «Індикатор життів» - об’єкт, який показуватиме про кількість життів змійки. «Індикатор рівня» буде показувати номер рівня, на якому знаходиться гра. «Індикатор довжини» відображатиме довжину змійки, щоб гравець орієнтувався, скільки цілей поцілено – згідно вказаних правил для переходу на наступний рівень, потрібно поцілити в певну кількість цілей.
Рисунок 1 – ієрархія об’єктів гри Змійка
Рисунок 2 – Ієрархія класів
Рисунок 3 - Діаграма станів гри
Клас 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 - позиція елемента змійки по горизонталі