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 value
la 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 size
es 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 value
a 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 cellColor
y 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
, value
y 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
, textColor
y textSize
, respectivamente.
Ejemplo:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
2. Trabajar con color
El motor de juego CodeGym tiene un Color
tipo especial que contiene valores únicos para 148 colores. También tiene un NONE
valor 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 message
mensaje.
Los parámetros de este método son:
cellColor
es el color de fondo del cuadro de diálogomessage
es el texto del mensajetextColor
es el color del texto del mensajetextSize
es 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 0
a (max–1)
inclusive.
int getRandomNumber(int min, int max)
devuelve un número aleatorio de min
a (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:
- Abra Ejecutar → Editar configuración
- 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
- Presione: Aplicar → Aceptar
- Ejecuta el juego.
GO TO FULL VERSION