1. Въведение
За разработчика има три етапа за внедряване на компютърна игра:-
Инициализация на играта — Този етап се състои от подготвителни действия: задаване на размера на игралното поле, чертане на игралното поле, създаване на игрови обекти и поставянето им в първоначалните им позиции и други действия, които трябва да бъдат извършени в началото на играта.
-
Процес на игра. Този етап включва преместване на игрални обекти, действия на играча, запазване на резултата и други действия, които трябва да се извършват на определена честота or при натискане на бутони.
-
Завършване на играта. Този етап включва спиране на анимация, отчитане на печалба or загуба и други действия, които трябва да бъдат извършени в края на играта.
2. Инициализация на играта
Инициализирането на играта се състои само от две стъпки: Стъпка 1: Създайте основния клас на играта. За да разработите своя собствена игра с помощта на игровия двигател CodeGym, трябва да създадете клас, който наследяваGame
класа (com.codegym.engine.cell.Game). Това дава на вашия клас възможността да извиква методите на двигателя на играта и дава възможност на двигателя да извиква вашите методи. Например:
import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
...
}
Стъпка 2: Заменете метода за инициализация(). Всички действия, необходими за стартиране на играта, ще се извършват в този метод: създаване на игрално поле, създаване на игрови обекти и т.н. Просто трябва да декларирате този метод в класа, който наследява класа Game
. Например:
import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Here we perform all actions to initialize the game and its objects
}
}
Методът initialize()
е аналогичен на main()
метода: той е отправната точка за целия code, написан за играта.
3. Създаване на игрално поле
Създаването на игрално поле също се състои само от две стъпки. Стъпка 1: Разделете игралното поле на клетки. Цялото игрално поле е разделено на клетки от двигателя на играта. Минималният размер е 3x3; максимумът е 100х100. Размерите на екрана на играта са постоянни. Тя може да бъде разделена на различен брой клетки. Например 7 клетки широки и 9 клетки високи: Имайте предвид, че клетките са номерирани, започвайки от горния ляв ъгъл. За да зададете размера на игралното поле, използвайтеvoid setScreenSize(int width, int height)
метода. Той определя размера на игралното поле. Параметрите му представляват броя на клетките хоризонтално (ширина) и вертикално (височина). Обикновено се извиква веднъж при стартиране на играта. Например:
import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Set the field size to 7 cells x 9 cells
setScreenSize(7, 9);
...
}
}
Когато пишете игра, може да се наложи да получите текущата ширина и височина на игралното поле. За да направите това, методите int getScreenWidth()
и int getScreenHeight()
ще ви бъдат полезни. Стъпка 2: Включете or изключете решетката (по избор). Ако не ви харесва черната решетка, разделяща клетките на игралното поле, можете да я изключите. Методът void showGrid(boolean isShow)
включва и изключва мрежата. По подразбиране се показва мрежата. За да го изключите, извикайте този метод с false като аргумент:
showGrid(false);
Резултат: За да включите отново мрежата, обадете се на:
showGrid(true);
4. Примитивна програма
Ето пример за програма:
public class MySuperGame extends Game {
@Override
public void initialize() {
// Create a playing field that is 3 cells x 3 cells
setScreenSize(3, 3);
// Turn off the grid
showGrid(false);
// Change the background of the center cell to blue, and display an "X" in it.
setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
}
}
В този пример полето за игра е зададено на 3x3, решетката е изключена и оранжево „X“ на половината от размера на клетката е зададено на син фон в централната клетка. Това ще бъде първото нещо, което играчът вижда, когато играта започне.
5. Работа с клетки на игралното поле
Фактът, че можем да разделим игралното поле на клетки, е страхотен, но Howво можем да направим със самите клетки? Можете да зададете следните свойства за всяка клетка на игралното поле:- цвят на клетката (цвят на фона на клетката);
- текст (текст or число);
- цвят на текста;
- размер на текста като процент от размера на клетката.
-
void setCellColor(int x, int y, Color color)
— задава цвета на клетката с координати (x, y):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);
-
void setCellValue(int x, int y, String value)
— задава текста на клетката с координати (x, y), равни на низа в параметъра стойност: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));
-
void setCellTextSize(int x, int y, int size)
— задава размера на съдържанието на клетката с координати (x, y). Параметърът за размер е височината на текста като процент от височината на клетката:setCellTextSize(2 , 0, 70); // 70% of the cell height
-
int getCellTextSize(int x, int y)
— връща размера на съдържанието на клетката с координати (x, y):int size = getCellTextSize(2 , 0);
-
void setCellNumber(int x, int y, int value)
— задава текста на клетката с координати (x, y), равни на числото в параметъра стойност: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));
-
void 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()
метода с различни набори от параметри:
-
void setCellValueEx(int x, int y, Color cellColor, String value)
— задава цвета на фона (cellColor) и съдържанието (стойността) на клетката с координати (x, y):setCellValueEx(0, 2, Color.BLUE, "56");
-
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)
— задава цвета на фона (cellColor), съдържанието (value) и цвета на текста (textColor) на клетката с координати (x, y):setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);
-
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize)
— задава цвета на фона (cellColor), съдържанието (value), цвета на текста (textColor) и размера на текста (textSize) на клетката с координати (x, y):setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
6. Работа с цвят
ОтговаряColor enum
за цветовете в двигателя на играта. Има уникални стойности за 148 цвята. Освен това има специална стойност (NONE), която не представлява цвят. Ето пример за работа с цвят:
Color myColor = Color.WHITE; // The myColor variable is set to white.
Color redColor = Color.RED; // The redColor variable is set to red.
Color blueColor = Color.BLUE; // The blueColor variable is set to light blue.
Понякога може да се наложи да получите набор от всички съществуващи цветове. За да направите това, използвайте values()
метода. Например:
Color[] colors = Color.values(); // The colors variable is assigned an array containing all available colors.
Много е лесно да получите индекс на цвят в палитрата:
Color color = Color.RED;
int redIndex = color.ordinal(); // Index of red
int blueIndex = Color.BLUE.ordinal(); // Index of blue
Можете също да получите цвят по неговия индекс:
Color color = Color.values()[10]; // The color variable is assigned the color with index 10 in the Color enum.
7. Диалогови прозорци
В края на играта трябва да съобщите за победа or загуба на играча. За да направите това, има специален метод, който показва диалогов прозорец на екрана на играта:
void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
Тук:
cellColor
е цветът на фона на диалоговия прозорец;message
е текстът на съобщението;textColor
е цветът на текста на съобщението;textSize
е размерът на текста на съобщението.
8. Полезни методи
При писането на игри често се използват произволни числа. За да улесните получаването на случайни числа, можете да използвате следните помощни методи, предоставени от двигателя на играта:-
int getRandomNumber(int max)
— връща произволно цяло число от 0 до (max-1) включително. -
int getRandomNumber(int min, int max)
— връща произволно цяло число от min до (max-1) включително.
GO TO FULL VERSION