1. Travailler avec la souris
Le moteur de jeu dispose de deux méthodes pour travailler avec la souris :void onMouseLeftClick(int x, int y);
void onMouseRightClick(int x, int y);
Game
et y écrivez n'importe quel code. Et le moteur de jeu lui-même les appellera lorsque l'utilisateur appuie sur les boutons de la souris.
onMouseLeftClick(int x, int y)
— appelé par le moteur lorsque vous cliquez sur le bouton gauche de la souris. Comme arguments, il reçoit les coordonnées de la cellule du terrain de jeu où le clic a eu lieu. La cellule en haut à gauche a les coordonnées (0,0). Pour utiliser cette méthode, elle doit être remplacée.onMouseRightClick(int x, int y)
- appelé lorsque vous faites un clic droit. Fonctionne de manière similaire à la méthodeonMouseLeftClick(int x, int y)
.
import com.javarush.engine.cell.Color;
import com.javarush.engine.cell.Game;
import com.javarush.engine.cell.Key;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Устанавливаем размер игрового поля 3x3
setScreenSize(3, 3);
// Закрашиваем игровое поле белым цветом
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) {
// Ставим символ "X" в клетку по которой кликнули левой кнопкой мыши
setCellValue(x, y, "X");
}
@Override
public void onMouseRightClick(int x, int y) {
// Очищаем клетку по которой кликнули правой кнопкой мыши
setCellValue(x, y, "");
}
}
2. Travailler avec le clavier
Le moteur de jeu propose deux méthodes pour travailler avec le clavier :void onKeyPress(Key key);
void onKeyReleased(Key key);
onKeyPress (Key key)
- appelé lorsqu'une touche du clavier est enfoncée. La valeur de la touche enfoncée (ou Key.UNKNOWN) est transmise à la méthode comme argument clé.onKeyReleased (Key key)
- appelé lorsqu'une touche du clavier est relâchée. L'argument key prend la valeur de la clé correspondante (ou Key.UNKNOWN).
import com.javarush.engine.cell.Color;
import com.javarush.engine.cell.Game;
import com.javarush.engine.cell.Key;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Устанавливаем размер игрового поля 3x3
setScreenSize(3, 3);
// Закрашиваем игровое поле белым цветом
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) {
// При нажатии пробела, центральная клетка становится желтой
if (key == Key.SPACE) {
setCellColor(1, 1, Color.YELLOW);
}
}
@Override
public void onKeyReleased(Key key) {
// При отпускании пробела, центральной клетке возвращается белый цвет
if (key == Key.SPACE) {
setCellColor(1, 1, Color.WHITE);
}
}
}
Important! Dans la version actuelle du moteur, le type Key ne peut accepter qu'un ensemble limité de valeurs (9 pièces) :
Signification | Ce sur quoi l'utilisateur a cliqué |
---|---|
Clé.ENTER | L'utilisateur a appuyé sur le bouton Entrée |
Clé.ESCAPE | L'utilisateur a appuyé sur le bouton Échap |
Touche.PAUSE | L'utilisateur a cliqué sur le bouton Pause |
Clé.ESPACE | L'utilisateur a appuyé sur Espace |
Clé.GAUCHE | L'utilisateur a appuyé sur la flèche gauche |
Clé.DROITE | L'utilisateur a appuyé sur la flèche droite |
Clé.UP | L'utilisateur a appuyé sur la flèche vers le haut |
Touche Bas | L'utilisateur a appuyé sur la flèche vers le bas |
Clé.INCONNUE | N'importe quelle clé sauf celles listées ci-dessus |
3. Travailler avec la minuterie
De nombreux jeux se déroulent en temps réel, ce qui signifie que même si l'utilisateur ne fait rien, les événements du jeu sont toujours exécutés. Afin que vous puissiez implémenter de tels jeux, nous avons ajouté une fonctionnalité de minuterie au moteur de jeu. Cela fonctionne à peu près comme ceci : vous allumez la minuterie et définissez la période après laquelle elle doit s'éteindre. Par exemple, 500 millisecondes. Après cela, toutes les demi-secondes, le moteur de jeu appelle le fichieronTurnTimer()
. Un nombre infini de fois jusqu'à ce que la minuterie soit éteinte. Comment utiliser le minuteur ?
-
Allumez la minuterie.
Il existe une méthode spéciale pour cela
void setTurnTimer(int timeMs)
. Comme argument, la méthode prend la durée de l'intervalle entre les appels en millisecondes (1/1000 de seconde). Il suffit de l'appeler une fois et le moteur de jeu commencera à appeler la méthodeonTurn()
à chaque fois en millisecondes. -
Nous remplaçons la méthode onTurn(int).
Pour ce faire, vous devez déclarer une méthode
void onTurn(int step)
dans une classe héritée de la classeGame
. Cette méthode sera appelée par le moteur de jeu. Dans ce cas, le moteur transférera à chaque fois le numéro de série d'un tel appel (1,2,3, ...) à la méthode. -
Éteignez la minuterie.
Si le chronomètre n'est plus nécessaire, lorsque, par exemple, l'utilisateur a terminé le jeu, il peut être désactivé. Pour ce faire, il vous suffit d'appeler le
stopTurnTimer()
. -
Accélérez ou modifiez la minuterie.
Dans certains jeux, les événements s'accélèrent constamment, il serait donc pratique d'accélérer notre chronomètre (réduire le temps entre les appels). Il n'y a rien de plus simple : rappelez
setTurnTimer(int timeMs)
, avec une nouvelle valeur, et le temps entre les appelsonTurn()
changera.
import com.javarush.engine.cell.Color;
import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
…
@Override
public void initialize() {
// Создаем игровое поле 3x3 клетки
setScreenSize(3, 3);
showGrid(false);
setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
setTurnTimer(500); //Включаем таймер, интервал между вызовами – 500мс.
}
@Override
public void onTurn(int step) {
if(step == 100) {
stopTurnTimer(); // если прошло 100 тактов, выключаем таймер
}
if (step % 2 == 1) {
// Если данный такт нечётный, установить клетке красный фон
setCellColor(1, 1, Color.RED);
} else {
//если данный такт чётный, установить клетке синий фон
setCellColor(1, 1, Color.BLUE);
}
}
…
}
Dans cet exemple simple, nous avons créé un champ de 3x3 cellules. Ensuite, nous avons activé une minuterie qui appellera la méthode toutes les demi-secondes onTurn()
. Toutes les demi-secondes, la couleur de la cellule changera, mais son contenu ne changera pas. Après 50 secondes, la couleur cessera de changer. C'est tout! Si vous souhaitez en savoir plus sur la section Jeux, voici une documentation utile qui peut vous aider :
GO TO FULL VERSION