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 cellColore 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, valuee 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, textColore textSize, respectivamente.

Exemplo:

setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);


2. Trabalhando com cores

O mecanismo de jogo CodeGym tem um Colortipo especial que contém valores exclusivos para 148 cores. Também possui um NONEvalor 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 messagemensagem.
Os parâmetros deste método são:

  • cellColoré a cor de fundo da caixa de diálogo
  • messageé o texto da mensagem
  • textColoré a cor do texto da mensagem
  • textSizeé 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 0até (max–1)inclusive.

int getRandomNumber(int min, int max)retorna um número aleatório de minaté (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:
  1. Abra ExecutarEditarConfiguração
  2. 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

  3. Pressione: AplicarOK
  4. Execute o jogo.