Comment faire pour créer Turn-Basé Jeux

Le développement du jeu peut être amusant et excitant. Cependant, il est aussi un formidable défi avec une courbe d'apprentissage abrupte. Alors que l'ancien deux joueurs Tic Tac Toe peut ne pas être aussi excitant que Quake ou guerre Advance, il introduit quelques principes fondamentaux du travail de conception de jeu au tour par tour. L'entrée doit être pris dans du lecteur, traité selon les règles du jeu, et la sortie à nouveau dans une forme que le joueur peut comprendre.

Choses que vous devez

  • Ordinateur
  • Java Development Kit
  • Java Runtime Environment
  • IDE Java

Instructions

  1. Créer une nouvelle classe appelée TicTacToeGame. Si vous utilisez un IDE Java comme Netbeans ou Eclipse, ce sera traitée automatiquement pour vous. Si vous utilisez un éditeur de texte et le compilateur de ligne de commande, alors vous aurez besoin pour créer un fichier nommé TicTacToeGame.java et insérez le squelette de classe suivante en elle:

    / **

    • Cette classe représente un jeu de 2 joueurs de TicTacToe.
      * /
      classe TicTacToeGame {
      &# 9 - // Tout autre code dans le tutoriel ira dans cet espace!
      }
    • Définissez vos variables. Il ya quelques manières que vous pourriez le faire, mais la façon dont ce tutoriel choisit est un tableau 2D simple des caractères uniques pour représenter le conseil, avec le joueur actif, soit X ou O, stockée en tant que personnage. Aussi, pour assurer la cohérence et améliorer la lisibilité de votre code plus tard, définir quelques constantes pour les caractères utilisés pour X, O, et vide. Insérer le texte suivant:

      / **
      * Le tableau. L'omble chevalier est soit 'X', 'O' ou ''. Ceux-ci sont définis dans les constantes.
      * /
      omble privé [] [] pension = new char [3] [3]

      GO

      omble currentPlayer

      GO

      omble finale public static X = 'X'

      GO

      omble finale O public static = 'O'

      GO

      public static final omble NONE = ''

      GO

      Chaque fois qu'une valeur est stockée sur la carte, par rapport à une autre valeur sur la carte, ou stocké dans currentPlayer, vous devez utiliser l'vos constantes déclarées X, Y et NONE. Comme mentionné plus haut, ceci améliore la lisibilité et la robustesse de code.

    • Initialiser le jeu. Un seul constructeur est nécessaire pour notre conseil TicTacToe.

      / **

      • Initialise la carte.
        * /
        TicTacToeBoard publique () {
        &# 9 - // Vous pouvez également utiliser un double imbriquée boucle for pour remplir le plateau.
        &# 9 de bord [0] [0] = NONE
        GO

        carte [0] [1] = NONE

        GO

        carte [0] [2] = NONE

        GO

        carte [1] [0] = NONE

        GO

        carte [1] [1] = NONE

        GO

        carte [1] [2] = NONE

        GO

        Conseil [2] [0] = NONE

        GO

        Conseil [2] [1] = NONE

        GO

        Conseil [2] [2] = NONE

        GO

        // Définir le joueur courant égal à la constante de X vous avez défini précédemment.
        currentPlayer = X

        GO
        }

      • Ajouter la "makeMove" Procédé. Cette méthode devrait prendre trois arguments: le xCoord, coordY et lecteurEnCours.

         / **
        * Faites un déménagement.
        *param CoordX x coord pour marquer
        *param CoordY l'y coord pour marquer
        * Lecteurparam le joueur à utiliser. Cela devrait être l'une des constantes: X, O
        *return True si déménagement a eu lieu. Si faux mouvement est interdit parce que la place est pleine.
        * /
        booléen makeMove (int xCoord, int coordY, joueur de char) {
        si (conseil [xCoord] [coordY] == NONE) {
        conseil [xCoord] [coordY] = joueur

        GO

        return true

        GO

        } Else {
        return false

        GO

        }
        }

        Rappelez-vous de toujours définir vos commentaires JavaDoc.

      • Créez une méthode pour dessiner la carte. Il ya un certain nombre de façons de le faire, mais la manière la plus élégante est une boucle simple, double imbriqué.




         / **
        * Dessine le conseil d'administration actuel de la console en utilisant System.out
        * /
        vide drawBoard () {
        for (int x = 0- x lt; board.length- x ++) {
        for (int y = y 0- lt; conseil [x] .length- y ++) {
        &# 9 - // Dessinez le X et S sur la carte jusqu'à présent (ainsi que les espaces vides).
        &# 9-System.out.print ("- "- + carte [x] [y] + "- "-)

        GO

        &# 9 - // Dessinez les lignes verticales entre les colonnes.
        si (y lt; 2)
        System.out.print ("-
        }
        System.out.println ()

        GO

        // Dessine des lignes horizontales entre les rangées.
        System.out.println (" ---- + --- + --- "-)

        GO

        }

        }

      • Écrivez votre boucle de jeu. Tous les jeux contiennent une sorte de boucle de jeu qui définit le début du jeu, exécute les règles du jeu, et des tests pour un gagnant de jeu ou condition de fin. Voici la boucle de jeu pour le jeu TicTacToe:

         jeu void () {
        jeu booléen = true

        GO

        BufferedReader dans = new BufferedReader (nouvelle InputStreamReader (System.in))

        GO

        while (jouer) {

        try {
        booléen validMove = false

        GO

        // Continuez à poser le joueur pour les coordonnées jusqu'à ce qu'elle donne une réponse valide!
        while (! validMove) {
        drawBoard ()

        GO

        System.out.println ("-actuel joueur est: "- + currentPlayer)

        GO

        System.out.println ("-Que coordonnée X? "-)

        GO

        // LIRE COORDONNEES
        int xCoord = new Integer (in.readLine ())

        GO

        System.out.println ("-Que coordonnée y? "-)

        GO

        int coordY = new Integer (in.readLine ())

        GO

        validMove = makeMove (xCoord, coordY, currentPlayer)

        GO

        if (! validMove) System.out.println ("-erreur: Invalid mouvement "-)

        GO

        }

        // Change le joueur actif.
        if (currentPlayer == X) {
        currentPlayer = O

        GO

        } Else {
        currentPlayer = X

        GO

        }

        // Si nous avons un gagnant, puis de les féliciter et de terminer le jeu!
        if (this.testWinner ()! = NONE) {
        drawBoard ()

        GO

        System.out.println ("-gagnant est: "- + this.testWinner ())

        GO

        retour

        GO

        }
        // Test erreurs de saisie à partir du clavier, et les informations de débogage impression si l'on se rencontre. Ceci est non seulement une bonne idée, il est requis par la fonction in.ReadLine ().
        } Catch (IOException e) {
        e.printStackTrace ()



        GO

        }
        }

        (Voir les références 1)

      • Il existe une fonction mentionnée dans la boucle play () qui n'a pas encore été écrit: testWinner (). Il est la fonction la plus difficile de tous, et il ya plusieurs façons d'aller sur le test pour le gagnant TicTacToe. Ce qui suit est la plus évidente, mais pas la plus efficace, la solution au problème:

        / **

         * Cette fonction permettra de tester la carte pour voir si il ya un gagnant.
        *return X si X a gagné la partie. O si O a gagné la partie. NONE si aucun n'a gagné la partie. Celui-ci utilise les constantes fournies par la classe.
        * /
        omble testWinner () {

        // TOP ROW

        si (conseil [1] [0] == conseil [0] [0] &Amp&Amp
        carte [1] [0] == bord [2] [0]) {
        conseil retourner [1] [0]

        GO

        }

        // Rangée horizontale MOYEN

        si (conseil [1] [1] == conseil [0] [1] &Amp&Amp
        carte [1] [1] == bord [2] [1]) {
        conseil retourner [1] [1]

        GO

        }

        // Rangée du bas

        si (conseil [1] [2] == conseil [0] [2] &Amp&Amp
        carte [1] [2] == bord [2] [2]) {
        conseil retourner [1] [2]

        GO

        }

        // GAUCHE ROW

        si (conseil [0] [1] == conseil [0] [0] &Amp&Amp
        carte [0] [0] == conseil [0] [2]) {
        conseil retourner [0] [0]

        GO

        }

        // Médian vertical ROW

        si (conseil [1] [1] == bord [1] [0] &Amp&Amp
        carte [1] [0] == bord [1] [2]) {
        conseil retourner [1] [1]

        GO

        }

        // Rangée à droite

        si (conseil [2] [1] == bord [2] [0] &Amp&Amp
        Conseil [2] [0] == bord [2] [2]) {
        conseil retourner [2] [0]

        GO

        }

        // TOP diagonale gauche

        si (conseil [0] [0] == bord [1] [1] &Amp&Amp
        carte [0] [0] == bord [2] [2]) {
        conseil retourner [0] [0]

        GO

        }

        // TOP diagonale droite

        si (conseil [0] [2] == bord [1] [1] &Amp&Amp
        carte [0] [2] == bord [2] [0]) {
        conseil retourner [0] [2]

        GO

        }

        // Si elle devient ici, personne n'a gagné cette manche.

        retourner NONE

        GO

        }

        Il passe simplement à travers le conseil d'administration, tester chaque combinaison gagnante possible de carrés et de voir si l'un des joueurs dont il dispose.

      • Créer la fonction principale. Enfin, vous aurez besoin pour créer une fonction principale de donner à votre programme un endroit pour commencer. Cette fonction principale sera très simple: Il va juste initialiser votre classe TicTacToeGame et commencer la méthode play (). Insérez la fonction suivante dans votre classe:

        main (String [] args) {public static void
        TicTacToeGame jeu = new TicTacToeGame ()
        GO
        jeu.Jouer ()
        GO
        }

        Maintenant vous avez un jeu de morpion fonctionnement!

      » » » » Comment faire pour créer Turn-Basé Jeux