- Вступ
- Ініціалізація гри
- Створення ігрового поля
- Примітивна програма
- Робота з клітинами ігрового поля
- Робота з кольором
- Діалогові вікна
- Утилітні методи
- Обмеження ігрового рушія
1. Введення
У реалізації комп'ютерної гри з боку розробника є три стадії:- Ініціалізація гри - це підготовчі дії: встановлення розміру та промальовування ігрового поля, створення та встановлення ігрових об'єктів у початкове положення, а також інші дії, які необхідно виконати на початку гри.
- Ігровий процес. До нього відносяться рух ігрових об'єктів, дії гравця, облік зароблених очок, а також інші дії, які необхідно виконувати з певною періодичністю або натисканням кнопок.
- Завершення гри. До нього відносяться зупинка анімації, повідомлення про перемогу чи поразку, а також інші дії, які необхідно виконати наприкінці гри.
2. Ініціалізація гри
Ініціалізація гри складається лише з двох кроків:Крок 1: створюємо основний клас гри.
Для розробки своєї гри на основі ігрового движка JavaRush вам потрібно створити клас і успадкувати його від класу Game (com.codegym.engine.cell.Game). Це дасть вашому класу можливість викликати методи ігрового движка, а движку - викликати ваші методи. Приклад:import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
...
}
Крок 2: перевизначаємо метод initialize().
У цьому методі відбуватимуться всі дії, необхідні старту гри: створення ігрового поля, створення ігрових об'єктів, тощо. Вам потрібно просто оголосити цей метод у класі, успадкованому від класу Game . Приклад:import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Тут выполняем все действия по инициализации игры и ее об'єктов
}
}
Метод initialize() - це аналог методу main() : саме з нього починає виконуватися весь код, написаний для гри.
3. Створення ігрового поля
Створення ігрового поля теж складається лише з двох кроків.Крок 1: ділимо ігрове поле на клітини.
Все ігрове поле ділиться ігровим рушієм на клітини. Мінімальний розмір – 3x3, максимальний – 100x100. Ігровий екран має постійний розмір. Його можна поділити на різну кількість клітин. Наприклад, ширина 7 і висота 9:import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// задали размер поля 7x9 клеток
setScreenSize(7, 9);
...
}
}
При написанні гри може знадобитися отримати поточну ширину та висоту ігрового поля. Для цього знадобляться методи int getScreenWidth() та int getScreenHeight() .
Крок 2: вмикаємо або вимикаємо сітку (необов'язково).
Якщо вам не подобається, що на ігровому полі відображається чорна сітка, що розділяє комірки, її можна вимкнути. Метод void showGrid(boolean isShow) включає та вимикає сітку, що розділяє клітини. За промовчанням сітка відображається. Щоб її вимкнути, викличте цей метод із параметром false:showGrid(false);
Результат:
showGrid(true);
4. Примітивна програма
Приклад програми:public class MySuperGame extends Game {
@Override
public void initialize() {
// Создаем игровое поле 3x3 клетки
setScreenSize(3, 3);
// Выключаем отображение сетки
showGrid(false);
// Меняем фон центральной клетки на синий, и отображаем в ней “Х”
setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
}
}
У цьому прикладі ігровому полю визначається розмір 3х3, відключається відображення сітки і по центру встановлюється помаранчевий символ «Х» розміром у половину клітини на синьому тлі. Це буде перше, що побачить гравець під час запуску гри.
5. Робота з клітинами ігрового поля
Те, що ми можемо поділити ігрове поле на осередки - це добре, а що ми можемо робити з самими осередками? Кожній клітинці ігрового поля можна задати:- колір клітини (колір фону осередку);
- текст (текст чи число);
- колір тексту;
- розмір тексту у відсотках щодо розміру клітини.
-
setCellColor(int x, int y, Color color) - встановлює клітині з координатами (x, y) колір color:
setCellColor(0, 0, Color.RED); setCellColor(3, 6, Color.BLACK); setCellColor(6, 8, Color.NONE);
-
Color getCellColor(int x, int y) - повертає колір клітини з координатами (x, y):
Color myColor = getCellColor(2, 0);
-
setCellValue(int x, int y, String value) — поміщає в клітинку з координатами (x, y) текст value:
setCellValue(3, 3, "text"); setCellValue(0, 8, "W"); setCellValue(4, 1, "2222"); setCellValue(6, 6, "");
-
String getCellValue(int x, int y) - повертає текст, що міститься в клітині з координатами (x, y):
String s = getCellValue(3, 3); System.out.println(getCellValue(4, 1));
-
setCellTextSize(int x, int y, int size) — встановлює розмір контенту в клітині з координатами (x, y). size – висота тексту у відсотках від висоти клітини:
setCellTextSize(2 , 0, 70); // 70% высоты клетки
-
int getCellTextSize(int x, int y) - повертає розмір контенту в клітині з координатами (x, y):
int size = getCellTextSize(2 , 0);
-
setCellNumber(int x, int y, int value) — поміщає в клітинку з координатами (x, y) число value:
setCellNumber(3, 3, 40); setCellNumber(0, 8, -8); setCellNumber(4, 1, 2222); setCellNumber(6, 6, 0);
-
int getCellNumber(int x, int y) - повертає число, що міститься в клітині з координатами (x, y). Якщо в клітині міститься не число, повертає 0:
int i = getCellNumber(3, 3); System.out.println(getCellNumber(4, 1));
-
setCellTextColor(int x, int y, Color color) - встановлює колір контенту (тексту) в клітці з координатами (x, y):
setCellTextColor(2, 1, Color.GREEN); setCellTextColor(0, 1, Color.NONE);
-
Color getCellTextColor(int x, int y) — повертає колір контенту (тексту) у клітині з координатами (x, y):
Color textColor = getCellTextColor(1, 3);
-
setCellValueEx(int x, int y, Color cellColor, String value) - встановлює клітині з координатами (x, y) колір фону cellColor і контент value:
setCellValueEx(0, 2, Color.BLUE, "56");
-
setCellValueEx(int x, int y, Color cellColor, String value, Color textColor) — встановлює клітині з координатами (x, y) колір фону cellColor, контент value і колір контенту textColor:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);
-
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize); — встановлює клітині з координатами (x, y) колір тла cellColor, контент value, колір контенту textColor та розмір контенту textSize:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
6. Робота з кольором
За кольори в ігровому движку відповідає enum Color , який містить унікальні значення для 148 кольорів. А також спеціальне значення NONE – відсутність кольору. Приклад роботи з кольором:Color myColor = Color.WHITE; // переменной myColor присваивается белый цвет.
Color redColor = Color.RED; // переменной redColor присваивается красный цвет.
Color blueColor = Color.BLUE; // переменной blueColor присваивается синий цвет.
Іноді може знадобитися масив всіх існуючих кольорів. Для цього використовуйте метод values() . Наприклад:
// переменной colors присваивается массив, содержащий все доступные цвета.
Color[] colors = Color.values();
Отримати номер кольору на панелі дуже просто:
Color color = Color.RED;
int redIndex = color.ordinal()
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ