Paste Search Dynamic
Recent pastes
Morpion
  1. @@@package pack;
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class Morpion {
  6.  
  7.         static Plateau plateau = new Plateau(creerPlateau());
  8.         static int joueurActif = 1;
  9.  
  10.         public static void main(string[] args) {
  11.                
  12.                 while(plateau.isWon()==0) {
  13.                         creerPlateau();
  14.                         afficherPlateau();
  15.                         jouerCase(demanderCase(), joueurActif);
  16.                         joueurActif = joueurSuivant(joueurActif);
  17.                 }
  18.                 afficherPlateau();
  19.                 system.out.println("nFélicitations au joueur " + joueurSuivant(joueurActif) + " qui a gagné !");
  20.                
  21.         }
  22.        
  23.        
  24.         static case[][] creerPlateau(){
  25.                 /*Crée un tableau à deux dimensions de 3*3 cases contenant
  26.                  * chacune une nouvelle instance de la classe case
  27.                  */
  28.                
  29.                 case[][] plateau = new case[3][3];
  30.                 for (int i = 0; i < plateau.length; i++) {
  31.                         for (int j = 0; j < plateau.length; j++) {
  32.                                 plateau[i][j] = new case(0);
  33.                         }
  34.                 }
  35.                 return plateau;
  36.         }
  37.        
  38.        
  39.         static string demanderCase() {
  40.                 Scanner scan = new Scanner(system.in);
  41.                 system.out.println("nJoueur " + joueurActif + ", choisissez votre case: ");
  42.                 return scan.nextLine().toLowerCase();
  43.         }
  44.        
  45.         static void jouerCase(string caseDemandee, int joueur) {
  46.                 /*Vérifie que la case entrée est bien présente dans la
  47.                  * grille, vérifie qu'elle n'est pas déjà jouée et, si
  48.                  * ce n'est pas le cas, la joue en lui donnant la valeur
  49.                  * du joueur actif (1 ou 2).
  50.                  */
  51.                
  52.                 int row = caseDemandee.charAt(0) - 97;
  53.                 int col = (int)caseDemandee.charAt(1) - 49;
  54.                
  55.                 if(0<=row && row<3 && 0<=col && col<3) {
  56.                         if(!plateau.cases[row][col].isPlayed()) {
  57.                                 plateau.cases[row][col].value = joueur;
  58.                         }
  59.                         else {
  60.                                 system.out.println("nCase incorrecte ! Recommencez.");
  61.                                 jouerCase(demanderCase(), joueurActif);
  62.                         }
  63.                 }
  64.                 else {
  65.                         system.out.println("nCase incorrecte ! Recommencez.");
  66.                         jouerCase(demanderCase(), joueurActif);
  67.                 }
  68.         }
  69.        
  70.        
  71.         static int joueurSuivant(int joueur) {
  72.                 /*Inverse le joueur: renvoie 1 si joueur=2
  73.                  * et 2 si joueur=1
  74.                  */
  75.                
  76.                 if(joueur == 1) {
  77.                         return 2;
  78.                 }
  79.                 else {
  80.                         return 1;
  81.                 }
  82.         }
  83.        
  84.         static void afficherPlateau() {
  85.                 /*Afffiche e plateau de jeu
  86.                  */
  87.                
  88.                 for(int i = 0; i < 3; i++) {
  89.                         for(int j =0; j<3; j++) {
  90.                                 if(plateau.cases[i][j].value == 1) {
  91.                                         system.out.print("tX");
  92.                                 }
  93.                                 else if(plateau.cases[i][j].value == 2) {
  94.                                         system.out.print("tO");
  95.                                 }
  96.                                 else {
  97.                                         system.out.print("t-");
  98.                                 }
  99.                         }
  100.                         system.out.println("");
  101.                 }
  102.                
  103.         }
  104.        
  105.        
  106.        
  107. }
  108.  
  109.  
  110. class case {
  111.        
  112.         int value;
  113.        
  114.         public case(int value) {
  115.                 this.value = value;
  116.         }
  117.        
  118.         boolean isPlayed() {
  119.                 /*Vérifie si la case est déjà jouée
  120.                  */
  121.                
  122.                 if(this.value!=0) {
  123.                         return true;
  124.                 }
  125.                 return false;
  126.         }
  127.        
  128. }
  129.  
  130.  
  131. class Plateau {
  132.        
  133.         case[][] cases;
  134.        
  135.         public Plateau(case[][] cases) {
  136.                 this.cases = cases;
  137.         }
  138.        
  139.         int isWon() {
  140.                 /*Vérifie si un joueur a gagné
  141.                  */
  142.                
  143.                 if(this.cases[0][0].value == this.cases[0][1].value && this.cases[0][0].value == this.cases[0][2].value
  144.                                 && this.cases[0][0].value != 0) {
  145.                         return this.cases[0][0].value;
  146.                 }
  147.                
  148.                 else if(this.cases[1][0].value == this.cases[1][1].value && this.cases[1][0].value == this.cases[1][2].value
  149.                                 && this.cases[1][0].value != 0) {
  150.                         return this.cases[1][0].value;
  151.                 }
  152.                
  153.                 else if(this.cases[2][0].value == this.cases[2][1].value && this.cases[2][0].value == this.cases[2][2].value
  154.                                 && this.cases[2][0].value != 0) {
  155.                         return this.cases[2][0].value;
  156.                 }
  157.                
  158.                 else if(this.cases[0][0].value == this.cases[1][0].value && this.cases[0][0].value == this.cases[2][0].value
  159.                                 && this.cases[0][0].value != 0) {
  160.                         return this.cases[0][0].value;
  161.                 }
  162.                
  163.                 else if(this.cases[0][0].value == this.cases[1][0].value && this.cases[0][0].value == this.cases[2][0].value
  164.                                 && this.cases[0][0].value != 0) {
  165.                         return this.cases[0][0].value;
  166.                 }
  167.                
  168.                 else if(this.cases[0][1].value == this.cases[1][1].value && this.cases[0][1].value == this.cases[2][1].value
  169.                                 && this.cases[0][1].value != 0) {
  170.                         return this.cases[0][1].value;
  171.                 }
  172.                
  173.                 else if(this.cases[0][2].value == this.cases[1][2].value && this.cases[0][2].value == this.cases[2][2].value
  174.                                 && this.cases[0][2].value != 0) {
  175.                         return this.cases[0][2].value;
  176.                 }
  177.                
  178.                 else if(this.cases[0][0].value == this.cases[1][1].value && this.cases[0][0].value == this.cases[2][2].value
  179.                                 && this.cases[0][0].value != 0) {
  180.                         return this.cases[0][0].value;
  181.                 }
  182.                
  183.                 else if(this.cases[2][0].value == this.cases[1][1].value && this.cases[2][0].value == this.cases[0][2].value
  184.                                 && this.cases[2][0].value != 0) {
  185.                         return this.cases[2][0].value;
  186.                 }
  187.                
  188.                 return 0;
  189.         }
  190.        
  191.        
  192.        
  193.        
  194. }
Parsed in 0.067 seconds