1. Introducción
Para el desarrollador, hay tres etapas en la implementación de un juego de computadora:-
Inicialización del juego : esta etapa consta de acciones preparatorias: establecer el tamaño del campo de juego, dibujar el campo de juego, crear objetos del juego y colocarlos en sus posiciones iniciales, y otras acciones que deben realizarse al comienzo del juego.
-
Proceso de juego. Esta etapa incluye mover objetos del juego, acciones del jugador, llevar la puntuación y otras acciones que deben realizarse con cierta frecuencia o cuando se presionan los botones.
-
Finalización del juego. Esta etapa incluye detener la animación, informar una ganancia o una pérdida y otras acciones que deben realizarse al final del juego.
2. Inicialización del juego
La inicialización del juego consta de solo dos pasos: Paso 1: Crear la clase principal del juego. Para desarrollar su propio juego con el motor de juego CodeGym, debe crear una clase que herede laGame
clase (com.codegym.engine.cell.Game). Esto le da a su clase la capacidad de llamar a los métodos del motor del juego y le da al motor la capacidad de llamar a sus métodos. Por ejemplo:
import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
...
}
Paso 2: invalide el método de inicialización (). Todas las acciones requeridas para iniciar el juego ocurrirán en este método: crear el campo de juego, crear objetos del juego, etc. Simplemente necesita declarar este método en la clase que hereda la Game
clase. Por ejemplo:
import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Here we perform all actions to initialize the game and its objects
}
}
El initialize()
método es análogo al main()
método: es el punto de partida para todo el código escrito para el juego.
3. Crear un campo de juego
La creación de un campo de juego también consta de solo dos pasos. Paso 1: divide el campo de juego en celdas. Todo el campo de juego está dividido en celdas por el motor del juego. El tamaño mínimo es 3x3; el máximo es 100x100. Las dimensiones de la pantalla del juego son constantes. Se puede dividir en diferentes números de celdas. Por ejemplo, 7 celdas de ancho por 9 celdas de alto: tenga en cuenta que las celdas están numeradas a partir de la esquina superior izquierda. Para establecer el tamaño del campo de juego, use elvoid setScreenSize(int width, int height)
método. Establece el tamaño del campo de juego. Sus parámetros representan el número de celdas horizontalmente (ancho) y verticalmente (alto). Por lo general, se llama una vez cuando se inicia el juego. Por ejemplo:
import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Set the field size to 7 cells x 9 cells
setScreenSize(7, 9);
...
}
}
Al escribir un juego, es posible que deba obtener el ancho y la altura actuales del campo de juego. Para hacer esto, los métodos int getScreenWidth()
y int getScreenHeight()
serán útiles. Paso 2: Encienda o apague la cuadrícula (opcional). Si no le gusta la cuadrícula negra que separa las celdas en el campo de juego, puede desactivarla. El void showGrid(boolean isShow)
método enciende y apaga la cuadrícula. De forma predeterminada, se muestra la cuadrícula. Para desactivarlo, llame a este método con false como argumento:
showGrid(false);
Resultado: para volver a encender la red, llame a:
showGrid(true);
4. Un programa primitivo
He aquí un ejemplo de un programa:public class MySuperGame extends Game {
@Override
public void initialize() {
// Create a playing field that is 3 cells x 3 cells
setScreenSize(3, 3);
// Turn off the grid
showGrid(false);
// Change the background of the center cell to blue, and display an "X" in it.
setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
}
}
En este ejemplo, el campo del juego está configurado en 3x3, la cuadrícula está apagada y una "X" naranja de la mitad del tamaño de la celda está configurada sobre un fondo azul en la celda central. Esto será lo primero que vea el jugador cuando comience el juego.
5. Trabajar con células del campo de juego
El hecho de que podamos dividir el campo de juego en celdas es genial, pero ¿qué podemos hacer con las celdas mismas? Puede establecer las siguientes propiedades para cada celda del campo de juego:- color de celda (color de fondo de celda);
- texto (texto o número);
- color de texto;
- tamaño del texto como porcentaje del tamaño de la celda.
-
void setCellColor(int x, int y, Color color)
— establece el color de la celda con coordenadas (x, y):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):Color myColor = getCellColor(2, 0);
-
void setCellValue(int x, int y, String value)
— establece el texto de la celda con coordenadas (x, y) igual a la cadena en el parámetro de valor: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):String s = getCellValue(3, 3); System.out.println(getCellValue(4, 1));
-
void setCellTextSize(int x, int y, int size)
— establece el tamaño del contenido de la celda con coordenadas (x, y). El parámetro de tamaño es la altura del texto como porcentaje de la altura de la celda:setCellTextSize(2 , 0, 70); // 70% of the cell height
-
int getCellTextSize(int x, int y)
— devuelve el tamaño del contenido de la celda con coordenadas (x, y):int size = getCellTextSize(2 , 0);
-
void setCellNumber(int x, int y, int value)
— establece el texto de la celda con coordenadas (x, y) igual al número en el parámetro de valor: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: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):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):Color textColor = getCellTextColor(1, 3);
setCellValueEx()
métodos con diferentes conjuntos de parámetros:
-
void setCellValueEx(int x, int y, Color cellColor, String value)
— establece el color de fondo (cellColor) y el contenido (valor) de la celda con coordenadas (x, y):setCellValueEx(0, 2, Color.BLUE, "56");
-
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)
— establece el color de fondo (cellColor), el contenido (value) y el color del texto (textColor) de la celda con coordenadas (x, y):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 (cellColor), el contenido (value), el color del texto (textColor) y el tamaño del texto (textSize) de la celda con coordenadas (x, y):setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
6. Trabajar con color
ElColor enum
es responsable de los colores en el motor del juego. Tiene valores únicos para 148 colores. También tiene un valor especial (NONE) que representa ningún color. He aquí un ejemplo de trabajo con color:
Color myColor = Color.WHITE; // The myColor variable is set to white.
Color redColor = Color.RED; // The redColor variable is set to red.
Color blueColor = Color.BLUE; // The blueColor variable is set to light blue.
A veces, es posible que necesite obtener una matriz de todos los colores existentes. Para ello, utilice el values()
método. Por ejemplo:
Color[] colors = Color.values(); // The colors variable is assigned an array containing all available colors.
Es muy fácil obtener el índice de un color en la paleta:
Color color = Color.RED;
int redIndex = color.ordinal(); // Index of red
int blueIndex = Color.BLUE.ordinal(); // Index of blue
También puede obtener un color por su índice:
Color color = Color.values()[10]; // The color variable is assigned the color with index 10 in the Color enum.
7. Cuadros de diálogo
Al final del juego, debe informar al jugador sobre una victoria o una derrota. Para ello, existe un método especial que muestra un cuadro de diálogo en la pantalla del juego:void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
Aquí:
cellColor
es el color de fondo del cuadro de diálogo;message
es el texto del mensaje;textColor
es el color del texto del mensaje;textSize
es el tamaño del texto del mensaje.
8. Métodos de utilidad
Al escribir juegos, los números aleatorios se usan mucho. Para facilitar la obtención de números aleatorios, puede utilizar los siguientes métodos de utilidad proporcionados por el motor del juego:-
int getRandomNumber(int max)
— devuelve un número entero aleatorio de 0 a (max-1) inclusive. -
int getRandomNumber(int min, int max)
— devuelve un número entero aleatorio de min a (max-1) inclusive.