- Introdução
- Inicialização do jogo
- Criando um campo de jogo
- Programa primitivo
- Trabalhando com as células do campo de jogo
- Trabalhando com cores
- Caixa de diálogo
- Métodos utilitários
- Limitações do mecanismo de jogo
1. Introdução
Existem três etapas na implementação de um jogo de computador por parte do desenvolvedor:- A inicialização do jogo consiste em ações preparatórias: definir o tamanho e desenho do campo de jogo, criar e instalar objetos do jogo na posição inicial, entre outras ações que devem ser realizadas no início do jogo.
- Processo do jogo. Isso inclui o movimento dos objetos do jogo, as ações do jogador, a contabilização dos pontos ganhos, bem como outras ações que devem ser realizadas em determinados intervalos ou pressionando botões.
- Terminando o jogo. Isso inclui interromper animações, anunciar vitória ou derrota e outras ações que precisam ser realizadas no final do jogo.
2. Inicialização do jogo
A inicialização do jogo consiste em apenas duas etapas:Passo 1: crie a classe principal do jogo.
Para desenvolver seu jogo baseado no motor de jogo JavaRush, você precisa criar uma classe e herdá-la da classe Game (com.javarush.engine.cell.Game). Isso dará à sua classe a capacidade de chamar métodos no mecanismo de jogo e a capacidade do mecanismo chamar seus métodos. Exemplo:import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
...
}
Etapa 2: substitua o método inicialize().
Neste método ocorrerão todas as ações necessárias para iniciar o jogo: criação do campo de jogo, criação de objetos do jogo, etc. Você só precisa declarar esse método em uma classe que herda da classe Game . Exemplo:import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Тут выполняем все действия по инициализации игры и ее an objectов
}
}
O método inicialize() é análogo ao método main() : é onde todo o código escrito para o jogo começa a ser executado.
3. Criando um campo de jogo
A criação de um campo de jogo também consiste em apenas duas etapas.Passo 1: divida o campo de jogo em células.
Todo o campo de jogo é dividido em células pelo motor de jogo. O tamanho mínimo é 3x3, o máximo é 100x100. A tela do jogo tem um tamanho constante. Pode ser dividido em diferentes números de células. Por exemplo, largura 7 e altura 9:import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// задали размер поля 7x9 клеток
setScreenSize(7, 9);
...
}
}
Ao escrever um jogo, pode ser necessário obter a largura e a altura atuais do campo de jogo. Os métodos int getScreenWidth() e int getScreenHeight() são úteis para isso .
Passo 2: Ligue ou desligue a grade (opcional).
Se você não gosta da grade preta que separa as células no campo de jogo, pode desativá-la. O método void showGrid(boolean isShow) ativa e desativa a grade que separa as células. Por padrão, a grade é exibida. Para desligá-lo, chame este método com o parâmetro false:showGrid(false);
Resultado:
showGrid(true);
4. Programa primitivo
Exemplo de programa:public class MySuperGame extends Game {
@Override
public void initialize() {
// Создаем игровое поле 3x3 клетки
setScreenSize(3, 3);
// Выключаем отображение сетки
showGrid(false);
// Меняем фон центральной клетки на синий, и отображаем в ней “Х”
setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
}
}
Neste exemplo, o tamanho do campo de jogo é definido como 3x3, a exibição da grade está desativada e um símbolo “X” laranja do tamanho de meia célula é definido no centro em um fundo azul. Esta será a primeira coisa que o jogador verá ao iniciar o jogo.
5. Trabalhando com células do campo de jogo
O fato de podermos dividir o campo de jogo em células é ótimo, mas o que podemos fazer com as próprias células? Cada célula do campo de jogo pode ser definida:- cor da célula (cor de fundo da célula);
- texto (texto ou número);
- cor do texto;
- tamanho do texto como uma porcentagem em relação ao tamanho da célula.
-
void setCellColor(int x, int y, Color color) — define a cor da célula com coordenadas (x, y):
setCellColor(0, 0, Color.RED); setCellColor(3, 6, Color.BLACK); setCellColor(6, 8, Color.NONE);
-
Color getCellColor(int x, int y) - retorna a cor da célula com coordenadas (x, y):
Color myColor = getCellColor(2, 0);
-
void setCellValue(int x, int y, String value) - coloca o valor do texto na célula com coordenadas (x, y):
setCellValue(3, 3, "text"); setCellValue(0, 8, "W"); setCellValue(4, 1, "2222"); setCellValue(6, 6, "");
-
String getCellValue(int x, int y) - retorna o texto contido na célula com coordenadas (x, y):
String s = getCellValue(3, 3); System.out.println(getCellValue(4, 1));
-
void setCellTextSize(int x, int y, int size) - define o tamanho do conteúdo da célula com coordenadas (x, y). size – altura do texto como uma porcentagem da altura da célula:
setCellTextSize(2 , 0, 70); // 70% высоты клетки
-
int getCellTextSize(int x, int y) - retorna o tamanho do conteúdo da célula com coordenadas (x, y):
int size = getCellTextSize(2 , 0);
-
void setCellNumber(int x, int y, int value) - coloca o valor do número na célula com coordenadas (x, y):
setCellNumber(3, 3, 40); setCellNumber(0, 8, -8); setCellNumber(4, 1, 2222); setCellNumber(6, 6, 0);
-
int getCellNumber(int x, int y) - retorna o número contido na célula com coordenadas (x, y). Se a célula não contiver um número, retorna 0:
int i = getCellNumber(3, 3); System.out.println(getCellNumber(4, 1));
-
void setCellTextColor(int x, int y, Color color) — define a cor do conteúdo (texto) na célula com coordenadas (x, y):
setCellTextColor(2, 1, Color.GREEN); setCellTextColor(0, 1, Color.NONE);
-
Color getCellTextColor(int x, int y) - retorna a cor do conteúdo (texto) em uma célula com coordenadas (x, y):
Color textColor = getCellTextColor(1, 3);
-
void setCellValueEx(int x, int y, Color cellColor, String value) — define a célula com coordenadas (x, y), cor de fundo cellColor e valor do conteúdo:
setCellValueEx(0, 2, Color.BLUE, "56");
-
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor) — define a célula com coordenadas (x, y) cor de fundo cellColor, valor do conteúdo e cor do conteúdo textColor:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);
-
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize); — define a célula com coordenadas (x, y), cor de fundo cellColor, valor do conteúdo, cor do conteúdo textColor e tamanho do conteúdo textSize:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
6. Trabalhando com cores
As cores no mecanismo de jogo são controladas pela enumeração Color , que contém valores exclusivos para 148 cores. E também o valor especial NENHUMA – ausência de cor. Exemplo de trabalho com cores:Color myColor = Color.WHITE; // переменной myColor присваивается белый цвет.
Color redColor = Color.RED; // переменной redColor присваивается красный цвет.
Color blueColor = Color.BLUE; // переменной blueColor присваивается синий цвет.
Às vezes você pode querer obter uma matriz de todas as cores existentes. Para fazer isso, use o método valores() . Por exemplo:
// переменной colors присваивается массив, содержащий все доступные цвета.
Color[] colors = Color.values();
Obter o número da cor na paleta é muito simples:
Color color = Color.RED;
int redIndex = color.ordinal(); // Номер красного цвета
int blueIndex = Color.BLUE.ordinal(); // Номер синего цвета
Você também pode obter uma cor pelo seu número:
// переменной color присваивается цвет с индексом 10 из enum Color.
Color color = Color.values()[10];
7. Caixas de diálogo
Ao final do jogo, o jogador deve ser informado da vitória ou derrota. Existe um método especial para isso que exibe uma caixa de diálogo na tela do jogo:void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
Aqui:
- cellColor — cor de fundo da caixa de diálogo;
- mensagem — texto da mensagem;
- textColor — cor do texto da mensagem;
- textSize — tamanho do texto da mensagem.
8. Métodos utilitários
Números aleatórios são frequentemente usados ao escrever jogos. Para facilitar a obtenção de números aleatórios, você pode usar métodos de mecanismo de sucata:- int getRandomNumber(int max) - retorna um número inteiro aleatório de 0 a (max–1) inclusive.
- int getRandomNumber(int min, int max) - retorna um número inteiro aleatório de min a (max–1) inclusive.
GO TO FULL VERSION