2016-12-13 3 views
0

저는 자바 초보자입니다. 정말 도움이 필요합니다. 저는 Tic-Tac-Toe 게임을 만들고 싶습니다. 오류는 없지만 아무 것도 표시하지 않습니다. 다른 것을 시도했기 때문에 콘솔이 완벽하게 작동하지만 실제로 문제가 어디 있는지 알지 못합니다. 영어로 오류가 발생하면 죄송합니다. 모국어가 아닙니다.프로그램을 실행할 때 아무 것도 나타나지 않습니다

감사합니다.

package tictacto; 

public class Jeu { 

    public static void main(String[] args) { 
     Board grille = new Board(); 
     Joueur player = new Joueur("cc"); 
     boolean test; 
     //char c; 
     int i = 0; 
     int[] tab; 

     test = grille.checkBoard(); 
     System.out.println(test); 
     player.choixSigne(); 
     //c = player.getSigne(); 
     while ((test == false) && (i < 9)) { 
      grille.afficheBoard(); 
      player.seDeplacer(); 
      tab = player.getMove(); 
      grille.InsererMouvement(tab); 
      i++; 
      test = grille.checkBoard(); 
     } 

    } 

} 

...

package tictacto; 

import java.util.Scanner; 

public class Joueur { 
    // attributes 

    protected final String pseudo; 
    protected int score; 
    private char signe; 
    private int[] move = new int[2]; 
    // méthodes 
    Scanner sc = new Scanner(System.in); 

    Joueur(String psd) { 
     this.signe = ' '; 
     this.pseudo = psd; 
     this.score = 0; 
     this.move[0] = 0; 
     this.move[1] = 0; 
    } 

    public void choixSigne() { 
     String s = new String(); 
     boolean test = false; 
     while (test == false) { 
      System.out.println("veuillez choisir votre signe"); 
      String sgne = sc.nextLine(); 
      char c = sgne.charAt(0); 
      s = c + ""; 
      if (s.equals('X') || s.equals('O')) { 
       test = true; 
       System.out.println("Le Choix de signe est effectué avec succes "); 
       signe = s.charAt(0); 
      } else { 
       test = false; 
       System.out.println("Veuillez refaire votre choix"); 
      } 
     } 

    } 

    public char getSigne() { 
     return signe; 
    } 

    public int[] getMove() { 
     return move; 
    } 

    public void seDeplacer() { 
     System.out.println("Veuillez choisir la ligne"); 
     int a = sc.nextInt(); 
     move[0] = a; 
     System.out.println("Veuillez choisir la colonne"); 
     int b = sc.nextInt(); 
     move[1] = b; 

    } 

} 

는 ..

package tictacto; 

class Board { 

    public char[][] Board = new char[3][3]; 
    protected Joueur J; 

    Board() { 
     for (int k = 0; k <= 2; k++) { 
      for (int j = 0; j <= 2; j++) { 
       Board[k][j] = ' '; 
      } 
     } 

    } 

    public void afficheBoard() { 

     System.out.println("\t The Board"); 
     System.out.print("\n"); 
     for (int i = 0; i <= 2; i++) { 

      System.out.print("\t |"); 
      System.out.print(Board[0][i]); 
      System.out.print("|"); 
      System.out.print(Board[1][i]); 
      System.out.print("|"); 
      System.out.print(Board[2][i]); 
      System.out.print("|"); 
      System.out.print("\n"); 

     } 
    } 

    // Ajouter un mouvement à la grille 
    public boolean InsererMouvement(int[] tab) { 
     if (Board[tab[0]][tab[1]] == ' ') { 
      Board[tab[0]][tab[1]] = J.getSigne(); 
      System.out.println("Next move"); 
      return (true); 
     } else { 
      System.out.println("Try again"); 
     } 
     return false; 
    } 

    public char[][] getBoard() { 
     return Board; 
    } 

    // Check Board 
    public boolean checkBoard() { 
     boolean a = false; 
     boolean b = false; 
     // vérifier les lignes 
     while (a == false) { 
      for (int i = 0; i <= 2; i++) { 
       if ((Board[i][0] == 'X') && (Board[i][1] == 'X') && (Board[i][2] == 'X') || (Board[i][0] == 'O') && (Board[i][1] == 'O') && (Board[i][2] == 'O') 
         || ((Board[0][i] == 'X') && (Board[1][i] == 'X') && (Board[2][i] == 'X') 
         || (Board[0][i] == 'O') && (Board[1][i] == 'O') && (Board[2][i] == 'O'))) { 
        a = true; 
       } else { 
        a = false; 
       } 
      } 
     } 
     // vérifier les diagonales 

     if ((Board[0][0] == 'X') && (Board[1][1] == 'X') && (Board[2][2] == 'X') 
       || (Board[0][0] == 'O') && (Board[1][1] == 'O') && (Board[2][2] == 'O') 
       || (Board[2][0] == 'X') && (Board[1][1] == 'X') && (Board[0][2] == 'X') 
       || (Board[2][0] == 'O') && (Board[1][1] == 'O') && (Board[0][2] == 'O')) { 
      b = true; 
     } else { 
      b = false; 
     } 
     if (a || b) { 
      return (true); 
     } else { 
      return (false); 
     } 
    } 

} 
+0

시작 작은. 작은 변화를 만들 때, 당신의 프로그램을 깨뜨리는 것을 쉽게 발견 할 수 있습니다. – Kayaman

+0

클래스 중 하나에있는 메서드 중 하나에 문제가 있다고 생각합니다. afficheBoard()는 자체적으로 시도했기 때문에 괜찮습니다. 이제는 choixSigne()에 대한 의문점이 있습니다. – Karmoussfull

+0

이 루프 while while a == false) {'a'가 항상'false'이기 때문에 결코 끝나지 않습니다. –

답변

1

당신의 프로그램에 많은 오류가있는 것 같습니다. 그들 모두를 정확히 지적하는 것은 여기서 많은 작업입니다. 그래서 나는 당신이 문제를 해결하기 위해 내가 한 변화를 지켜 보길 권한다. 프로그램 개선을 위해 개선 할 수 있습니다.

package tictacto; 

public class Jeu { 

    public static void main(String[] args) { 
     Board grille = new Board(); 
     Joueur player = new Joueur("cc"); 
     boolean test = false; 
     //char c; 
     int i = 0; 
     int[] tab; 

     //test = grille.checkBoard(); 
     System.out.println(test); 
     player.choixSigne(); 
     //c = player.getSigne(); 
     while ((test == false) && (i < 9)) { 
      grille.afficheBoard(); 
      player.seDeplacer(); 
      tab = player.getMove(); 
      grille.InsererMouvement(tab,player); 
      i++; 
      test = grille.checkBoard(); 
     } 

    } 

} 

...

package tictacto; 

class Board { 

    public char[][] Board = new char[3][3]; 
    //protected Joueur J = new Joueur("cc"); 

    Board() { 
     for (int k = 0; k <= 2; k++) { 
      for (int j = 0; j <= 2; j++) { 
       Board[k][j] = ' '; 
      } 
     } 

    } 

    public void afficheBoard() { 

     System.out.println("\t The Board"); 
     System.out.print("\n"); 
     for (int i = 0; i <= 2; i++) { 

      System.out.print("\t |"); 
      System.out.print(Board[0][i]); 
      System.out.print("|"); 
      System.out.print(Board[1][i]); 
      System.out.print("|"); 
      System.out.print(Board[2][i]); 
      System.out.print("|"); 
      System.out.print("\n"); 

     } 
    } 

    // Ajouter un mouvement à la grille 
    public boolean InsererMouvement(int[] tab,Joueur J) { 
     if (Board[tab[0]][tab[1]] == ' ') { 
      Board[tab[0]][tab[1]] = J.getSigne(); 

      System.out.println("Next move"); 
      return true; 
     } else { 
      System.out.println("Try again"); 
     } 
     return false; 
    } 

    public char[][] getBoard() { 
     return Board; 
    } 

    // Check Board 
    public boolean checkBoard() { 
     boolean a = false; 
     boolean b = false; 
     // vérifier les lignes 
     for (int i = 0; i <= 2; i++) { 
      if ((Board[i][0] == 'X') && (Board[i][1] == 'X') && (Board[i][2] == 'X') || (Board[i][0] == 'O') && (Board[i][1] == 'O') && (Board[i][2] == 'O') 
        || ((Board[0][i] == 'X') && (Board[1][i] == 'X') && (Board[2][i] == 'X') 
        || (Board[0][i] == 'O') && (Board[1][i] == 'O') && (Board[2][i] == 'O'))) { 

       a = true; 
      } else { 
       a = false; 
      } 
     } 

     // vérifier les diagonales 
     if ((Board[0][0] == 'X') && (Board[1][1] == 'X') && (Board[2][2] == 'X') 
       || (Board[0][0] == 'O') && (Board[1][1] == 'O') && (Board[2][2] == 'O') 
       || (Board[2][0] == 'X') && (Board[1][1] == 'X') && (Board[0][2] == 'X') 
       || (Board[2][0] == 'O') && (Board[1][1] == 'O') && (Board[0][2] == 'O')) { 

      b = true; 
     } else { 
      b = false; 
     } 

     if (a || b) { 
      return (true); 
     } else { 
      return (false); 
     } 
    } 

} 

...

package tictacto; 

import java.util.Scanner; 

public class Joueur { 
    // attributes 

    protected final String pseudo; 
    protected int score; 
    private char signe; 
    private int[] move = new int[2]; 
    // méthodes 
    Scanner sc = new Scanner(System.in); 

    Joueur(String psd) { 
     this.signe = ' '; 
     this.pseudo = psd; 
     this.score = 0; 
     this.move[0] = 0; 
     this.move[1] = 0; 
    } 

    public void choixSigne() { 
     String s = new String(); 
     boolean test = false; 
     while (test == false) { 
      System.out.println("veuillez choisir votre signe"); 
      String sgne = sc.nextLine(); 
      char c = sgne.charAt(0); 
      s = c + ""; 
      if (s.equals("X") || s.equals("O")) { 
       test = true; 
       System.out.println("Le Choix de signe est effectué avec succes "); 
       signe = s.charAt(0); 
      } else { 
       test = false; 
       System.out.println("Veuillez refaire votre choix"); 
      } 
     } 

    } 

    public char getSigne() { 
     return signe; 
    } 

    public int[] getMove() { 
     return move; 
    } 

    public void seDeplacer() { 
     System.out.println("Veuillez choisir la ligne"); 
     int a = sc.nextInt(); 
     move[0] = a; 
     System.out.println("Veuillez choisir la colonne"); 
     int b = sc.nextInt(); 
     move[1] = b; 

    } 

} 
+0

콘솔 출력에 요청 (입력)을 요청하는 프랑스어 메시지가 표시되어 실제로 디버그 할 수 없으므로 영어 만 이해합니다. –

관련 문제