1. Trabajar con las células del campo de juego

Es genial que podamos dividir el campo de juego en celdas. Pero, ¿qué podemos hacer con las propias células?

Para cada celda del campo de juego, podemos establecer:

  • color de celda (el color de fondo de la celda);
  • texto (puede ser texto o un número);
  • color de texto;
  • tamaño del texto como porcentaje del tamaño de la celda.

Consideremos métodos para trabajar con las celdas del campo de juego:

void setCellColor(int x, int y, Color color)establece el color de la celda con coordenadas (x, y)iguales a color.

Ejemplos:

setCellColor(0, 0, Color.RED);
setCellColor(3, 6, Color.BLACK);
setCellColor(6, 8, Color.NONE);

Color getCellColor(int x, int y)devuelve el color de la celda con coordenadas (x, y).

Ejemplo:

Color myColor = getCellColor(2, 0);

void setCellValue(int x, int y, String value)asigna el texto a String valuela celda con coordenadas (x, y).

Ejemplos:

setCellValue(3, 3, "text");
setCellValue(0, 8, "W");
setCellValue(4, 1, "2222");
setCellValue(6, 6, "");

String getCellValue(int x, int y)devuelve el texto contenido en la celda con coordenadas (x, y).

Ejemplos:

String s = getCellValue(3, 3);
System.out.println(getCellValue(4, 1));

void setCellTextSize(int x, int y, int size)establece el tamaño del texto en la celda con coordenadas (x, y), donde sizees la altura del texto como un porcentaje de la altura de la celda.

Ejemplo:

setCellTextSize(2, 0, 70); // 70% of the cell height

int getCellTextSize(int x, int y)devuelve el tamaño del contenido en la celda con coordenadas (x, y).

Ejemplo:

int size = getCellTextSize(2 , 0);

void setCellNumber(int x, int y, int value)asigna el número int valuea la celda con coordenadas (x, y).

Ejemplos:

setCellNumber(3, 3, 40);
setCellNumber(0, 8, -8);
setCellNumber(4, 1, 2222);
setCellNumber(6, 6, 0);

int getCellNumber(int x, int y)devuelve el número contenido en la celda con coordenadas (x, y). Si la celda no contiene un número, devuelve 0.

Ejemplos:

int i = getCellNumber(3, 3);
System.out.println(getCellNumber(4, 1));

void setCellTextColor(int x, int y, Color color)establece el color del contenido (texto) de la celda con coordenadas (x, y).

Ejemplos:

setCellTextColor(2, 1, Color.GREEN);
setCellTextColor(0, 1, Color.NONE);

Color getCellTextColor(int x, int y)devuelve el color del contenido (texto) de la celda con coordenadas (x, y).

Ejemplo:

Color textColor = getCellTextColor(1, 3);

Para su comodidad, existen varios setCellValueEx()métodos con diferentes conjuntos de parámetros:

void setCellValueEx(int x, int y, Color cellColor, String value)establece el color de fondo y el texto de la celda con coordenadas (x, y)iguales a cellColory value, respectivamente.

Ejemplo:

setCellValueEx(0, 2, Color.BLUE, "56");

void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)establece el color de fondo, el texto y el color del texto de la celda con coordenadas (x, y)iguales a cellColor, valuey textColor, respectivamente.

Ejemplo:

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

void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize);establece el color de fondo, el texto, el color del texto y el tamaño del texto de la celda con coordenadas (x, y)iguales a cellColor, value, textColory textSize, respectivamente.

Ejemplo:

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


2. Trabajar con color

El motor de juego CodeGym tiene un Colortipo especial que contiene valores únicos para 148 colores. También tiene un NONEvalor especial que representa la ausencia de color.

Ejemplos de trabajo con color.

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.

Puedes colorear una celda de rojo usando el comando:

setCellColor(0, 2, Color.RED);

Puede verificar si una celda es de cierto color con un comando como:

if (getCellColor(0,2) == Color.GREEN)
{
}

A veces es posible que necesite obtener una matriz de todos los colores posibles. Para hacer esto, use el values()método.

Ejemplo:

// An array containing every available color is assigned to the colors variable.
Color[] colors = Color.values();

Obtener el índice de un color en la paleta de colores es muy fácil de hacer, solo use el 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

También puede obtener fácilmente un color por su índice:

 // The color whose index is 10 in the Color enum is assigned to the color variable.
Color color = Color.values()[10];


3. Cuadros de diálogo

Al final del juego, debemos informar al jugador si ganó o perdió. Para esta y otras ocasiones, el motor del juego CodeGym cuenta con el void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)método especial, que muestra un cuadro de diálogo con el messagemensaje.
Los parámetros de este método son:

  • cellColores el color de fondo del cuadro de diálogo
  • messagees el texto del mensaje
  • textColores el color del texto del mensaje
  • textSizees el tamaño del texto del mensaje

El cuadro de diálogo se cierra solo si el usuario presiona la barra espaciadora o hace clic en el cuadro de diálogo con el mouse.

Ejemplo de llamar a este método:

// Display a dialog box with a message
showMessageDialog(Color.BLACK, "EPIC FAIL", Color.RED, 80);


4. Métodos de utilidad

Al escribir juegos, usará números aleatorios con frecuencia. Para facilitar la obtención de números aleatorios, puede utilizar los métodos de utilidad del motor del juego:

int getRandomNumber(int max)devuelve un número aleatorio de 0a (max–1)inclusive.

int getRandomNumber(int min, int max)devuelve un número aleatorio de mina (max–1)inclusive.


5. JDK 11+

Al ejecutar su programa desde IntelliJ IDEA, una clase que hereda la clase Game puede generar el siguiente error:

Error: JavaFX runtime components are missing, and are required to run this application

En este caso, para cada clase, debe realizar estos pasos una vez:
  1. Abra EjecutarEditar configuración
  2. Para el valor de las opciones de VM , ingrese lo siguiente:
    --module-path ./lib/javafx-sdk-16/lib --add-modules=javafx.controls,javafx.fxml,javafx.base

    ATENCIÓN:

    En versiones recientes de IntelliJ IDEA, el campo "Opciones de VM" no se muestra de forma predeterminada. Para mostrarlo, presione ALT+V

  3. Presione: AplicarAceptar
  4. Ejecuta el juego.