1. Trabalhando com as células do campo de jogo
É ótimo podermos dividir o campo de jogo em células. Mas o que podemos fazer com as próprias células?
Para cada célula do campo de jogo, podemos definir:
- cor da célula (a cor de fundo da célula);
- texto (pode ser um texto ou um número);
- cor do texto;
- tamanho do texto como uma porcentagem do tamanho da célula.
Vamos considerar métodos para trabalhar com as células do campo de jogo:
void setCellColor(int x, int y, Color color)
define a cor da célula com coordenadas (x, y)
iguais a color
.
Exemplos:
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 as coordenadas (x, y)
.
Exemplo:
Color myColor = getCellColor(2, 0);
void setCellValue(int x, int y, String value)
atribui o texto String value
à célula com as coordenadas (x, y)
.
Exemplos:
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 as coordenadas (x, y)
.
Exemplos:
String s = getCellValue(3, 3);
System.out.println(getCellValue(4, 1));
void setCellTextSize(int x, int y, int size)
define o tamanho do texto na célula com coordenadas (x, y)
, onde size
é a altura do texto como uma porcentagem da altura da célula.
Exemplo:
setCellTextSize(2, 0, 70); // 70% of the cell height
int getCellTextSize(int x, int y)
retorna o tamanho do conteúdo na célula com coordenadas (x, y)
.
Exemplo:
int size = getCellTextSize(2 , 0);
void setCellNumber(int x, int y, int value)
atribui o número int value
à célula com as coordenadas (x, y)
.
Exemplos:
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, ela retornará 0.
Exemplos:
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) da célula com coordenadas (x, y)
.
Exemplos:
setCellTextColor(2, 1, Color.GREEN);
setCellTextColor(0, 1, Color.NONE);
Color getCellTextColor(int x, int y)
retorna a cor do conteúdo (texto) da célula com coordenadas (x, y)
.
Exemplo:
Color textColor = getCellTextColor(1, 3);
Para sua conveniência, existem vários setCellValueEx()
métodos com diferentes conjuntos de parâmetros:
void setCellValueEx(int x, int y, Color cellColor, String value)
define a cor de fundo e o texto da célula com coordenadas (x, y)
iguais a cellColor
e value
, respectivamente.
Exemplo:
setCellValueEx(0, 2, Color.BLUE, "56");
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)
define a cor de fundo, o texto e a cor do texto da célula com coordenadas (x, y)
iguais a cellColor
, value
e textColor
, respectivamente.
Exemplo:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize);
define a cor de fundo, o texto, a cor do texto e o tamanho do texto da célula com coordenadas (x, y)
iguais a cellColor
, value
, textColor
e textSize
, respectivamente.
Exemplo:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
2. Trabalhando com cores
O mecanismo de jogo CodeGym tem um Color
tipo especial que contém valores exclusivos para 148 cores. Também possui um NONE
valor especial que representa a ausência de cor.
Exemplos de como trabalhar com cores
Color myColor = Color.WHITE; // The color white is assigned to the myColor variable.
Color redColor = Color.RED; // The color red is assigned to the redColor variable.
Color blueColor = Color.BLUE; // The color blue is assigned to the blueColor variable.
Você pode colorir uma célula de vermelho usando o comando:
setCellColor(0, 2, Color.RED);
Você pode verificar se uma célula tem uma determinada cor com um comando como:
if (getCellColor(0,2) == Color.GREEN)
{
}
Às vezes, pode ser necessário obter uma matriz de todas as cores possíveis. Para fazer isso, use o values()
método.
Exemplo:
// An array containing every available color is assigned to the colors variable.
Color[] colors = Color.values();
Obter o índice de uma cor na paleta de cores é muito fácil — basta usar o ordinal()
método:
Color color = Color.RED;
int redIndex = color.ordinal(); // Index of the color red
int blueIndex = Color.BLUE.ordinal(); // Index of the color blue
Você também pode facilmente obter uma cor por seu índice:
// The color whose index is 10 in the Color enum is assigned to the color variable.
Color color = Color.values()[10];
3. Caixas de diálogo
No final do jogo, precisamos informar ao jogador se ele ganhou ou perdeu. Para esta e outras ocasiões, o game engine CodeGym possui o void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
método especial, que exibe uma caixa de diálogo com a message
mensagem.
Os parâmetros deste método são:
cellColor
é a cor de fundo da caixa de diálogomessage
é o texto da mensagemtextColor
é a cor do texto da mensagemtextSize
é o tamanho do texto da mensagem
A caixa de diálogo se fecha automaticamente se o usuário pressionar a barra de espaço ou clicar na caixa de diálogo com o mouse.
Exemplo de chamada deste método:
// Display a dialog box with a message
showMessageDialog(Color.BLACK, "EPIC FAIL", Color.RED, 80);
4. Métodos utilitários
Ao escrever jogos, você usará números aleatórios com frequência. Para facilitar a obtenção de números aleatórios, você pode usar os métodos utilitários do mecanismo de jogo:
int getRandomNumber(int max)
retorna um número aleatório de 0
até (max–1)
inclusive.
int getRandomNumber(int min, int max)
retorna um número aleatório de min
até (max–1)
inclusive.
5. JDK 11+
Ao executar seu programa a partir do IntelliJ IDEA, uma classe que herda a classe Game pode gerar o seguinte erro:
Error: JavaFX runtime components are missing, and are required to run this application
Nesse caso, para cada classe, você precisa executar estas etapas uma vez:
- Abra Executar → EditarConfiguração
- Para o valor de VM options , insira o seguinte:
--module-path ./lib/javafx-sdk-16/lib --add-modules=javafx.controls,javafx.fxml,javafx.base
ATENÇÃO:
Nas versões recentes do IntelliJ IDEA, o campo "VM options" não é exibido por padrão. Para exibi-lo, pressione ALT+V
- Pressione: Aplicar → OK
- Execute o jogo.
GO TO FULL VERSION