CodeGym /Cursos /All lectures for PT purposes /Mergulhe fundo no mecanismo de jogo

Mergulhe fundo no mecanismo de jogo

All lectures for PT purposes
Nível 1, Lição 1126
Disponível

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 Executar → EditarConfiguraçã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: Aplicar → OK
  4. Execute o jogo.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION