2016-10-20 4 views
-2

私はチックタックのつま先ゲームを作っています。その1つの要件は、ゲームをランダムに決定することです。私はMath.random()を使用する必要があると仮定しますが、実装する方法はわかりません。誰もが、Randomジェネレータクラスを使用して、しかしとしてチック・タックが2人のだけのプレーヤーを持っている、これは単に行うことができますなど、これを行うには多くの方法があるかもしれません私のコードのおかげで:)Tic Tac Toe gamaの最初のプレイヤーをランダムに選択する

import java.util.Scanner; 
public class TicTacToe 
{ 
    public static void main(String[] args) 
    { 
     Scanner console = new Scanner (System.in); 

     Game ticTacToe = new Game(); 

     String no = "no"; 
     System.out.println("~~~Tic Tac Toe~~~"); 
     System.out.println("Would you like to play?"); 
     String playerAnswer = console.nextLine(); 
     while(!playerAnswer.equals(no)) 
     { 
      ticTacToe.play(); 
      System.out.println("Thanks for playing"); 
      System.out.println("Would you like to play again? Press any key for yes, type no if you don't "); 
      playerAnswer=console.nextLine(); 
     } 
    } 
} 
class Game 
{ 
    private final int empty = 0; 
    private final int player = 1; 
    private final int com = 2; 
    private final int size = 3; 
    private int[][] board; 

    public void printScreen() 
    { 
     int col; 
     int row; 
     System.out.println(); 
     System.out.print(" "); 
     for (col = 0; col < size; col ++) 
     { 
      System.out.print(" " + (col+1)); 
     } 
     System.out.println(); 
     System.out.print(" "); 
     for (col = 0; col < size; col ++) 
     { 
      System.out.print("--"); 
     } 
     System.out.println("-"); 
     for (row = 0; row < size; row ++) 
     { 
      System.out.print((row+1) + "|"); 
      for (col = 0; col < size; col ++) 
      { 
       if (board[row][col] == empty) 
       { 
        System.out.print(" "); 
       } 
       else if (board[row][col] == player) 
       { 
        System.out.print("X"); 
       } 
       else if (board[row][col] == com) 
       { 
        System.out.print("O"); 
       } 
       System.out.print("|"); 
      } 
      System.out.println(); 
      System.out.print(" "); 
      for (col = 0; col < size; col ++) 
      { 
       System.out.print("--"); 
      } 
      System.out.println("-"); 
     } 
    } 

    public void clear() 
    { 
     int col; 
     int row; 
     board = new int[size][size]; 
     for (row = 0; row < size; row ++) 
     { 
      for (col = 0; col < size; col ++) 
      { 
       board[row][col] = empty; 
      } 
     } 
    } 

    public void computerMove() 
    { 
     int col; 
     int row; 
     int count; 
     int select; 
     count = 0; 
     for (row = 0; row < size; row ++) 
      for (col = 0; col < size; col ++) 
       if (board[row][col] == empty) 
        count ++; 
     select = (int) (Math.random() * count); 
     count = 0; 
     for (row = 0; row < size; row ++) 
     { 
      for (col = 0; col < size; col ++) 
      { 
       if (board[row][col] == empty) 
       { 
        if (count == select) 
        { 
         board[row][col] = com; 
         System.out.println("The computer selects row" + (row+1) + " column " + (col+1) + "."); 
        } 
        count ++; 
       } 
      } 
     } 
    } 

    public void playerMove() 
    { 
     Scanner console = new Scanner (System.in); 
     boolean a; 
     int col; 
     int row; 
     a = true; 
     while (a) 
     { 
      System.out.println("What is your move? Select a row number from 1 to " + size + " and a column number from 1 to " + size + "."); 
      row = console.nextInt(); 
      col = console.nextInt(); 
      if ((row < 1) || (row > size) || (col < 1) || (col > size)) 
      { 
       System.out.println("Invalid choice, row " + row + " or column " + col + " must be from 1 to " + size + "."); 
      } 
      else 
      { 
       row --; 
       col --; 
       if (board[row][col] != empty) 
       { 
        System.out.println("That spot is already filled"); 
        printScreen(); 
       } 
       else 
       { 
        board[row][col] =player; 
        a = false; 
       } 
      } 
     } 
    } 

    public boolean checkWinner() 
    { 
     int col; 
     int row; 
     int count; 
     int win; 
     win = empty; 
     for (row = 0; row < size; row ++) 
     { 
      count = 0; 
      if (board[row][0] != empty) 
       for (col = 0; col < size; col ++) 
        if (board[row][0] == board[row][col]) 
         count ++; 
      if (count == size) 
       win = board[row][0]; 
     } 
     for (col = 0; col < size; col ++) 
     { 
      count = 0; 
      if (board[0][col] != empty) 
       for (row = 0; row < size; row ++) 
        if (board[0][col] == board[row][col]) 
         count ++; 
      if (count == size) 
       win = board[0][col]; 
     } 
     count = 0; 
     if (board[0][0] != empty) 
      for (row = 0; row < size; row ++) 
       if (board[0][0] == board[row][row]) 
        count ++; 
     if (count == size) 
      win = board[0][0]; 
     count = 0; 
     if (board[0][size-1] != empty) 
      for (row = 0; row < size; row ++) 
       if (board[0][size-1] == board[row][size-row-1]) 
        count ++; 
     if (count == size) 
      win = board[0][size-1]; 
     if (win != empty) 
     { 
      if (win == player) 
       System.out.println("Congratz you won"); 
      else if(win == 3) 
       System.out.println("you lost"); 
      return true; 
     } 
     count = 0; 
     for (row = 0; row < size; row ++) 
      for (col = 0; col < size; col ++) 
       if (board[row][col] == empty) 
        count ++; 
     if (count == 0) 
     { 
      System.out.println("Its a tie!"); 
      return true; 
     } 
     return false; 
    } 

    public void play() 
    { 
     boolean e; 
     clear(); 
     e=false; 
     while (!e) 
     { 
      printScreen(); 
      playerMove(); 
      printScreen(); 
      e = checkWinner(); 
      if (!e) 
      { 
       computerMove(); 
       e = checkWinner(); 
       if (e) 
        printScreen(); 
      } 
     } 
    } 
} 

答えて

1

を調整する助けてくださいすることができた場合あなたのプレイ方法を変更する必要があり、これを実現するために、ブール

boolean player1Starts = (System.currentTimeMillis() % 2) == 0; 
1

を得ます。これはプレイヤーが起動した場合に最初に決定された何

public void play() 
{ 
    boolean playerTurn = Math.random() <= .5 
//this function returns a value between 0 an 1 exclusive 
    clear(); 
    printScreen(); 
    while (!checkWinner()) 
    { 
     if (playerTurn) { 
      playerMove; 
     } else { 
      computerMove(); 
     } 
     playerTurn = !playerTurn; 
     printScreen(); 
    } 
} 
  1. 次に、空のボードをクリアしてプリントします。
  2. 勝者
  3. がある場合、我々はループに入り、そのプレイヤーは、彼らが他のコンピュータに移動する
  4. を移動回すならば、そして、我々はplayerTurnを更新勝者が存在しない場合には、それはチェックをループそれはそれとは反対のものになります。
  5. 次に、画面を印刷して移動を確認します。受賞者たちはループを終了し、私はこれで私のコードを調整する際のプレイ方法
+0

を終えるがある場合

  • は、ボードプリントアウトしてからゲームが、私はそれを固定 – edolores28

  • +0

    終了します。チェックウインドウ()だったはずです。 –