JavaRush /Blog Java /Random-FR /Rubrique "Jeux" sur JavaRush : Moteur de jeu

Rubrique "Jeux" sur JavaRush : Moteur de jeu

Publié dans le groupe Random-FR
« Jeux » de JavaRush est une nouvelle section qui contient de grands projets de tâches pour l'écriture de jeux informatiques populaires. Les réaliser est plus facile qu'il n'y paraît : chaque projet est divisé en deux douzaines de sous-tâches. En accomplissant les tâches étape par étape, vous écrirez votre jeu, puis vous pourrez y ajouter des « fonctionnalités » uniques et le partager avec des amis. ChapitreLes jeux utilisent le simple moteur de jeu JavaRush . Dans cet article, nous parlerons de ses principales caractéristiques et de ce à quoi ressemble le processus d'écriture d'un jeu.
  1. Introduction
  2. Initialisation du jeu
  3. Créer un terrain de jeu
  4. Programme primitif
  5. Travailler avec les cellules du terrain de jeu
  6. Travailler avec la couleur
  7. Boîtes de dialogue
  8. Méthodes utilitaires
  9. Limites du moteur de jeu

1. Introduction

Il y a trois étapes dans la mise en œuvre d'un jeu informatique par le développeur :
  1. L'initialisation du jeu correspond à des actions préparatoires : définition de la taille et du dessin du terrain de jeu, création et installation des objets de jeu dans la position initiale, ainsi que d'autres actions qui doivent être effectuées au début du jeu.

  2. Processus de jeu. Cela inclut le mouvement des objets du jeu, les actions des joueurs, la comptabilisation des points gagnés, ainsi que d'autres actions qui doivent être effectuées à certains intervalles ou en appuyant sur des boutons.

  3. Fin du jeu. Cela inclut l'arrêt des animations, l'annonce de la victoire ou de la défaite et d'autres actions qui doivent être effectuées à la fin de la partie.

2. Initialisation du jeu

L'initialisation du jeu ne comprend que deux étapes :

Étape 1 : créer la classe principale du jeu.

Pour développer votre jeu basé sur le moteur de jeu JavaRush, vous devez créer une classe et en hériter de la classe Game (com.javarush.engine.cell.Game). Cela donnera à votre classe la possibilité d'appeler des méthodes sur le moteur de jeu et la possibilité pour le moteur d'appeler vos méthodes. Exemple:
import com.javarush.engine.cell.Game;

public class MySuperGame extends Game {
    ...
}

Étape 2 : remplacez la méthode initialize().

Dans cette méthode, toutes les actions nécessaires au démarrage du jeu auront lieu : création du terrain de jeu, création des objets de jeu, etc. Il vous suffit de déclarer cette méthode dans une classe qui hérite de la classe Game . Exemple:
import com.javarush.engine.cell.Game;

public class MySuperGame extends Game {

    @Override
    public void initialize() {
        //  Тут выполняем все действия по инициализации игры и ее an objectов
    }
}
La méthode initialize() est un analogue de la méthode main() : c'est là que tout le code écrit pour le jeu commence à être exécuté.

3. Créer un terrain de jeu

La création d’un terrain de jeu ne comprend également que deux étapes.

Étape 1 : divisez le terrain de jeu en cellules.

L'ensemble du terrain de jeu est divisé en cellules par le moteur de jeu. La taille minimale est de 3x3, la taille maximale est de 100x100. L'écran de jeu a une taille constante. Il peut être divisé en différents nombres de cellules. Par exemple, largeur 7 et hauteur 9 :
Chapitre
Veuillez noter que la numérotation des cellules commence dans le coin supérieur gauche. Pour définir la taille du terrain de jeu, utilisez la méthode void setScreenSize(int width, int height) . Il fixe la taille du terrain de jeu. Il prend comme paramètres le nombre de cellules horizontalement (largeur) et verticalement (hauteur). Il est généralement appelé une fois au début du jeu. Exemple:
import com.javarush.engine.cell.Game;

public class MySuperGame extends Game {

    @Override
    public void initialize() {
       //  задали размер поля 7x9 клеток
       setScreenSize(7, 9);
        ...
    }
}
Lors de l'écriture d'un jeu, vous devrez peut-être obtenir la largeur et la hauteur actuelles du terrain de jeu. Les méthodes int getScreenWidth() et int getScreenHeight() sont utiles pour cela .

Étape 2 : Activez ou désactivez la grille (facultatif).

Si vous n'aimez pas la grille noire qui sépare les cellules sur le terrain de jeu, vous pouvez la désactiver. La méthode void showGrid(boolean isShow) active et désactive la grille séparant les cellules. Par défaut, la grille est affichée. Pour le désactiver, appelez cette méthode avec le paramètre false :
showGrid(false);
Résultat:
Chapitre
Pour réactiver la grille, appelez :
showGrid(true);

4. Programme primitif

Exemple de programme :
public class MySuperGame extends Game {

    @Override
    public void initialize() {

        //  Создаем игровое поле 3x3 клетки
        setScreenSize(3, 3);
        //  Выключаем отображение сетки
        showGrid(false);
        //  Меняем фон центральной клетки на синий, и отображаем в ней “Х”
        setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
    }
}
Dans cet exemple, la taille du terrain de jeu est définie sur 3x3, l'affichage de la grille est désactivé et un symbole « X » orange de la taille d'une demi-cellule est placé au centre sur un fond bleu. Ce sera la première chose que le joueur verra au démarrage du jeu.

5. Travailler avec les cellules du terrain de jeu

Le fait que nous puissions diviser le terrain de jeu en cellules est formidable, mais que pouvons-nous faire avec les cellules elles-mêmes ? Chaque cellule du terrain de jeu peut être définie :
  • couleur de la cellule (couleur d'arrière-plan de la cellule) ;
  • texte (texte ou numéro);
  • couleur du texte ;
  • taille du texte en pourcentage par rapport à la taille de la cellule.
Considérons les méthodes pour travailler avec les cellules du terrain de jeu :
  1. void setCellColor(int x, int y, Color color) — définit la couleur de la cellule avec les coordonnées (x, y) :

    setCellColor(0, 0, Color.RED);
    setCellColor(3, 6, Color.BLACK);
    setCellColor(6, 8, Color.NONE);

  2. Color getCellColor(int x, int y) - renvoie la couleur de la cellule avec les coordonnées (x, y) :

    Color myColor = getCellColor(2, 0);

  3. void setCellValue(int x, int y, String value) - place la valeur du texte dans la cellule avec les coordonnées (x, y) :

    setCellValue(3, 3, "text");
    setCellValue(0, 8, "W");
    setCellValue(4, 1, "2222");
    setCellValue(6, 6, "");

  4. String getCellValue(int x, int y) - renvoie le texte contenu dans la cellule avec les coordonnées (x, y) :

    String s = getCellValue(3, 3);
    System.out.println(getCellValue(4, 1));

  5. void setCellTextSize(int x, int y, int size) - définit la taille du contenu de la cellule avec les coordonnées (x, y). size – hauteur du texte en pourcentage de la hauteur de la cellule :

    setCellTextSize(2 , 0, 70); //  70% высоты клетки

  6. int getCellTextSize(int x, int y) - renvoie la taille du contenu de la cellule avec les coordonnées (x, y) :

    int size = getCellTextSize(2 , 0);

  7. void setCellNumber(int x, int y, int value) - place la valeur numérique dans la cellule avec les coordonnées (x, y) :

    setCellNumber(3, 3, 40);
    setCellNumber(0, 8, -8);
    setCellNumber(4, 1, 2222);
    setCellNumber(6, 6, 0);

  8. int getCellNumber(int x, int y) - renvoie le nombre contenu dans la cellule avec les coordonnées (x, y). Si la cellule ne contient pas de nombre, renvoie 0 :

    int i = getCellNumber(3, 3);
    System.out.println(getCellNumber(4, 1));

  9. void setCellTextColor(int x, int y, Color color) — définit la couleur du contenu (texte) dans la cellule avec les coordonnées (x, y) :

    setCellTextColor(2, 1, Color.GREEN);
    setCellTextColor(0, 1, Color.NONE);

  10. Color getCellTextColor(int x, int y) - renvoie la couleur du contenu (texte) dans une cellule avec les coordonnées (x, y) :

    Color textColor = getCellTextColor(1, 3);
Pour plus de commodité, il existe plusieurs méthodes setCellValueEx() avec différents ensembles de paramètres :
  1. void setCellValueEx(int ​​​​x, int y, Color cellColor, String value) — définit la cellule avec les coordonnées (x, y), la couleur d'arrière-plan cellColor et la valeur du contenu :

    setCellValueEx(0, 2, Color.BLUE, "56");

  2. void setCellValueEx(int ​​​​x, int y, Color cellColor, String value, Color textColor) — définit la cellule avec les coordonnées (x, y) la couleur d'arrière-plan cellColor, la valeur du contenu et la couleur du contenu textColor :

    setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);

  3. void setCellValueEx(int ​​​​x, int y, Color cellColor, String value, Color textColor, int textSize); - définit la cellule avec les coordonnées (x, y), la couleur d'arrière-plan cellColor, la valeur du contenu, la couleur du contenu textColor et la taille du contenu textSize :

    setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);

6. Travailler avec la couleur

Les couleurs du moteur de jeu sont contrôlées par l'énumération Color , qui contient des valeurs uniques pour 148 couleurs. Et aussi la valeur particulière NONE - absence de couleur. Exemple de travail avec la couleur :
Color myColor = Color.WHITE;  //  переменной myColor присваивается белый цвет.
Color redColor = Color.RED; //  переменной redColor присваивается красный цвет.
Color blueColor = Color.BLUE; //  переменной blueColor присваивается синий цвет.
Parfois, vous souhaiterez peut-être obtenir une gamme de toutes les couleurs existantes. Pour ce faire, utilisez la méthode Values() . Par exemple:
//  переменной colors присваивается массив, содержащий все доступные цвета.
Color[] colors = Color.values();
Obtenir le numéro de couleur dans la palette est très simple :
Color color = Color.RED;
int redIndex = color.ordinal(); //  Номер красного цвета

int blueIndex = Color.BLUE.ordinal(); //  Номер синего цвета
Vous pouvez également obtenir une couleur par son numéro :
//  переменной color присваивается цвет с индексом 10 из enum Color.
Color color = Color.values()[10];

7. Boîtes de dialogue

A la fin de la partie, le joueur doit être informé de la victoire ou de la défaite. Il existe une méthode spéciale pour cela qui affiche une boîte de dialogue sur l'écran de jeu :
void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
Ici:
  • cellColor — couleur d'arrière-plan de la boîte de dialogue ;
  • message — texte du message ;
  • textColor — couleur du texte du message ;
  • textSize — taille du texte du message.
La boîte de dialogue se ferme d'elle-même si l'utilisateur appuie sur la barre d'espace.

8. Méthodes utilitaires

Les nombres aléatoires sont souvent utilisés lors de l’écriture de jeux. Pour faciliter l'obtention de nombres aléatoires, vous pouvez utiliser les méthodes du moteur de récupération :
  1. int getRandomNumber(int max) - renvoie un entier aléatoire de 0 à (max–1) inclus.

  2. int getRandomNumber(int min, int max) - renvoie un entier aléatoire de min à (max–1) inclus.

9. Limites du moteur de jeu

Pour exécuter des jeux sur le site, ils sont traduits en JavaScript sur le serveur. À cet égard, certaines restrictions surviennent. En particulier, lors de l'écriture de jeux à l'aide du moteur JavaRush, vous ne pouvez pas travailler avec des fichiers, ni utiliser toutes les méthodes de la classe System , à l'exception de currentTimeMillis() , setOut() , setErr() , arrayscopy() . Vous pouvez également utiliser les champs err et out . En violant ces restrictions, le jeu peut bien sûr être compilé et exécuté, mais il ne sera pas possible de le publier. Vous ne pourrez pas non plus publier un jeu avec des boucles infinies. C'est tout! Si vous souhaitez en savoir plus sur la section Jeux, voici une documentation utile qui peut vous aider :
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION