CodeGym /Blog Java /Random-ES /Sección de juegos en CodeGym: Game engine
John Squirrels
Nivel 41
San Francisco

Sección de juegos en CodeGym: Game engine

Publicado en el grupo Random-ES
"Juegos" de CodeGym es una nueva sección con grandes tareas que implican escribir juegos de computadora populares. Son más fáciles de crear de lo que parece: cada proyecto se divide en veinte subtareas. Al completar las tareas paso a paso, escribirá su propio juego y luego podrá agregar características únicas y compartirlo con amigos. Sección "Juegos" en CodeGym: motor de juego - 1Los juegos utilizan el sencillo motor de juego CodeGym . En este artículo, describiremos sus características clave y cómo es el proceso de escritura del juego.

1. Introducción

Para el desarrollador, hay tres etapas en la implementación de un juego de computadora:
  1. 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.

  2. 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.

  3. 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 la Gameclase (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 Gameclase. 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: Sección "Juegos" en CodeGym: motor de juego - 2tenga 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 el void 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: Sección "Juegos" en CodeGym: Game engine - 3para 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.
Veamos los métodos para trabajar con las celdas del campo de juego :
  1. 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);
    

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

    
    Color myColor = getCellColor(2, 0);
    

  3. 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, "");
    

  4. 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));
    

  5. 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
    

  6. int getCellTextSize(int x, int y)— devuelve el tamaño del contenido de la celda con coordenadas (x, y):

    
    int size = getCellTextSize(2 , 0);
    

  7. 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);
    

  8. 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));
    

  9. 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);
    

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

    
    Color textColor = getCellTextColor(1, 3);
    
Para mayor comodidad, existen varios setCellValueEx()métodos con diferentes conjuntos de parámetros:
  1. 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");
    

  2. 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);
    

  3. 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

El Color enumes 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í:
  • 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.

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:
  1. int getRandomNumber(int max)— devuelve un número entero aleatorio de 0 a (max-1) inclusive.

  2. int getRandomNumber(int min, int max)— devuelve un número entero aleatorio de min a (max-1) inclusive.

¡Eso es todo por ahora! Si desea obtener más información sobre la sección "Juegos", aquí hay una documentación útil que puede ayudar:
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION