
1. Trabajar con el ratón
El motor del juego tiene dos métodos para trabajar con el mouse:-
void onMouseLeftClick(int x, int y);
-
void onMouseRightClick(int x, int y);
Game
y agrega cualquier código que desee. El motor del juego los llamará cuando el usuario haga clic en los botones del mouse.
-
onMouseLeftClick(int x, int y)
— llamado por el motor cuando se hace clic en el botón izquierdo del ratón. Sus parámetros son las coordenadas de la celda del campo de juego donde ocurrió el clic. La celda superior izquierda tiene coordenadas (0, 0). Debe anular este método para usarlo. -
onMouseRightClick(int x, int y)
— se llama cuando se hace clic con el botón derecho del mouse. Este método funciona como elonMouseLeftClick(int x, int y)
método.
import com.codegym.engine.cell.Color;
import com.codegym.engine.cell.Game;
import com.codegym.engine.cell.Key;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Set the size of the playing field to 3x3
setScreenSize(3, 3);
// Paint the playing field white
for (int x = 0; x < 3; x++) {
for (int y = 0; y < 3; y++) {
setCellColor(x, y, Color.WHITE);
}
}
}
@Override
public void onMouseLeftClick(int x, int y) {
// Set "X" in the cell where the left mouse click occurred
setCellValue(x, y, "X");
}
@Override
public void onMouseRightClick(int x, int y) {
// Clear the cell where the right mouse click occurred
setCellValue(x, y, "");
}
}
2. Trabajar con el teclado
El motor del juego tiene dos métodos para trabajar con el teclado:-
void onKeyPress(Key key);
-
void onKeyReleased(Key key);
-
onKeyPress(Key key)
— llamado cuando se presiona cualquier tecla. El parámetro clave es la tecla presionada (o Key.UNKNOWN). -
onKeyReleased(Key key)
— se llama cuando se suelta cualquier tecla. El parámetro clave es la clave correspondiente (o Key.UNKNOWN).
import com.codegym.engine.cell.Color;
import com.codegym.engine.cell.Game;
import com.codegym.engine.cell.Key;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Set the size of the playing field to 3x3
setScreenSize(3, 3);
// Paint the playing field white
for (int x = 0; x < 3; x++) {
for (int y = 0; y < 3; y++) {
setCellColor(x, y, Color.WHITE);
}
}
}
@Override
public void onKeyPress(Key key) {
// When the space bar is pressed, the center cell turns yellow
if (key == Key.SPACE) {
setCellColor(1, 1, Color.YELLOW);
}
}
@Override
public void onKeyReleased(Key key) {
// When the space bar is released, the center cell changes back to white
if (key == Key.SPACE) {
setCellColor(1, 1, Color.WHITE);
}
}
}
¡Importante! En la versión actual del motor del juego, el tipo de clave tiene un conjunto limitado de nueve valores:Valor | Tecla presionada por el usuario |
---|---|
Tecla.ENTER | El usuario presionó Enter |
Clave.ESCAPE | El usuario presionó Esc |
Tecla.PAUSA | El usuario presionó Pausa |
Clave.ESPACIO | El usuario presionó Espacio |
Clave.IZQUIERDA | El usuario presionó la tecla de flecha izquierda |
Clave.DERECHA | El usuario presionó la tecla de flecha derecha |
Tecla Arriba | El usuario presionó la tecla de flecha hacia arriba |
Tecla.ABAJO | El usuario presionó la tecla de abajo |
Clave.DESCONOCIDA | El usuario presionó una tecla diferente a las anteriores |
3. Trabajar con el temporizador
Muchos juegos suceden en tiempo real, es decir, incluso si el usuario no hace nada, los eventos aún ocurren en el juego. Para permitirle implementar dichos juegos, agregamos un temporizador al motor del juego. Funciona de la siguiente manera: enciende el temporizador y establece el intervalo del temporizador. Por ejemplo, 500 milisegundos. Luego, cada medio segundo, el motor del juego llama alonTurnTimer()
método. Una y otra vez para siempre, hasta que se apague el temporizador. Entonces, ¿cómo se usa el temporizador?
-
Enciende el temporizador.
Para hacer esto, hay un
void setTurnTimer(int timeMs)
método especial. El método toma como argumento el intervalo entre llamadas en milisegundos (1 milisegundo = 1/1000 segundo). Solo necesita llamarlo una vez, y el motor del juego comenzará a llamar alonTurn()
método cada vez, ms milisegundos. -
Anula el método onTurn(int).
Para hacer esto, debe declarar un
void onTurn(int step)
método en la clase que heredaGame
. Este método será llamado por el motor del juego. Además, con cada llamada, el motor del juego pasará al método un identificador secuencial para la llamada (1, 2, 3, …). -
Apague el temporizador.
Si ya no se necesita el temporizador, por ejemplo, cuando el usuario completa el juego, puede apagarlo. Para hacer esto, simplemente necesita llamar al
stopTurnTimer()
método. -
Acelerar o cambiar el temporizador.
En algunos juegos, la velocidad a la que ocurren los eventos se acelera constantemente, por lo que sería conveniente acelerar nuestro temporizador (reducir el tiempo entre llamadas). Nada podría ser más fácil: llame
setTurnTimer(int timeMs)
una vez más con un nuevo valor y el tiempo entreonTurn()
llamadas cambiará.
import com.codegym.engine.cell.Color;
import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
…
@Override
public void initialize() {
// Create a playing field that is 3 cells x 3 cells
setScreenSize(3, 3);
showGrid(false);
setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
setTurnTimer(500); // Turn on the timer, the interval between calls is 500ms.
}
@Override
public void onTurn(int step) {
if(step == 100) {
stopTurnTimer(); // If 100 calls have been made, turn off the timer
}
if (step % 2 == 1) {
// If this call is odd, set the cell background to red
setCellColor(1, 1, Color.RED);
}
else {
// If this call is even, set the cell background to blue
setCellColor(1, 1, Color.BLUE);
}
}
…
}
En este ejemplo simple, creamos un campo de 3 celdas x 3 celdas. Luego iniciamos un temporizador que llamará al onTurn()
método cada medio segundo. Cada medio segundo, el color de la celda cambiará, pero su contenido no cambiará. Después de 50 segundos, el color ya no cambiará. ¡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:
GO TO FULL VERSION