Tic Tac Toe:Java

Tic Tac Toe:Java,java,arrays,class,2d,Java,Arrays,Class,2d,我真的迷路了,我很难建立这个游戏。我需要你们的帮助。为了弄明白这一点,我已经挣扎了好几天了。我有三个班,司机,董事会和球员。我有司机,我认为董事会级别在控制之下。我主要是在与球员阶级斗争。这样做的目的是让计算机播放器能够随机输入数组,然后让播放器能够输入他们想要玩的地方的选择 public class Driver { public static void main(String[] args) { //new tic-tac-toe board

我真的迷路了,我很难建立这个游戏。我需要你们的帮助。为了弄明白这一点,我已经挣扎了好几天了。我有三个班,司机,董事会和球员。我有司机,我认为董事会级别在控制之下。我主要是在与球员阶级斗争。这样做的目的是让计算机播放器能够随机输入数组,然后让播放器能够输入他们想要玩的地方的选择

public class Driver
{
    public static void main(String[] args)
    {
        //new tic-tac-toe board
        Board board = new Board();

        //two new players (conputer and human)
        Player computer = new Player(board, "X");   //Give computer player access to board and assign as X.
        Player human = new Player(board, "O");      //Give human player access to board and assign as O.
        board.print();
        computer.computerMove();

        //while the game is not over
        while(!board.gameOver())
        {
            //let computer move first
            computer.computerMove();

            //print tic-tac-toe board
            board.print();

            //if the game is not over yet
            if (!board.gameOver())
            {
                //let the human make a move
                human.humanMove();

                //if the game is over
                if (board.gameOver())
                {
                    //print the board
                    board.print();
                }
            }
        } 

        //print out the winner (if there is one) of the game
        board.printWinner();
    }
}
板级

public class Board
{
    private String player = "X";
    private String cpu = "O";
    int row = 3;
    int column = 3;
    private String[][] theBoard = new String[row][column] ;

    public Board()
    {
        theBoard = theBoard;
    }

    public boolean gameOver()
    { 
       if  (theBoard[0][0] == player && theBoard[0][1] == player && theBoard[0][2] == player || // 1st row
            theBoard[1][0] == player && theBoard[1][1] == player && theBoard[1][2] == player || // 2nd row
            theBoard[2][0] == player && theBoard[2][1] == player && theBoard[2][2] == player || // 3rd row
            theBoard[0][0] == player && theBoard[1][0] == player && theBoard[2][0] == player || // 1st col.
            theBoard[0][1] == player && theBoard[1][1] == player && theBoard[2][1] == player || // 2nd col.
            theBoard[0][2] == player && theBoard[1][2] == player && theBoard[2][2] == player || // 3rd col.
            theBoard[0][0] == player && theBoard[1][1] == player && theBoard[2][2] == player || // Diagonal          \ 
            theBoard[2][0] == player && theBoard[1][1] == player && theBoard[0][2] == player) //   Diagonal      /
            {
                return false;
            }
        else if (theBoard[0][0] == cpu && theBoard[0][1] == cpu && theBoard[0][2] == cpu || // 1st row
            theBoard[1][0] == cpu && theBoard[1][1] == cpu && theBoard[1][2] == cpu || // 2nd row
            theBoard[2][0] == cpu && theBoard[2][1] == cpu && theBoard[2][2] == cpu || // 3rd row
            theBoard[0][0] == cpu && theBoard[1][0] == cpu && theBoard[2][0] == cpu || // 1st col.
            theBoard[0][1] == cpu && theBoard[1][1] == cpu && theBoard[2][1] == cpu || // 2nd col.
            theBoard[0][2] == cpu && theBoard[1][2] == cpu && theBoard[2][2] == cpu || // 3rd col.
            theBoard[0][0] == cpu && theBoard[1][1] == cpu && theBoard[2][2] == cpu || // Diagonal          \ 
            theBoard[2][0] == cpu && theBoard[1][1] == cpu && theBoard[0][2] == cpu) //   Diagonal      /

            {
                return false;
            }
       else{

           return true;
        }
    }

    public void print()
    {

        System.out.println(theBoard[0][0] + " | " + theBoard[0][1]+ " | " + theBoard[0][2] + "\n----------");

        System.out.println(theBoard[1][0] + " | " + theBoard[1][1]+ " | " + theBoard[1][2] + "\n----------");

        System.out.println(theBoard[2][0] + " | " + theBoard[2][1]+ " | " + theBoard[2][2] + "\n");

    }

    public void printWinner()
    {
       if  (theBoard[0][0] == player && theBoard[0][1] == player && theBoard[0][2] == player || // 1st row
            theBoard[1][0] == player && theBoard[1][1] == player && theBoard[1][2] == player || // 2nd row
            theBoard[2][0] == player && theBoard[2][1] == player && theBoard[2][2] == player || // 3rd row
            theBoard[0][0] == player && theBoard[1][0] == player && theBoard[2][0] == player || // 1st col.
            theBoard[0][1] == player && theBoard[1][1] == player && theBoard[2][1] == player || // 2nd col.
            theBoard[0][2] == player && theBoard[1][2] == player && theBoard[2][2] == player || // 3rd col.
            theBoard[0][0] == player && theBoard[1][1] == player && theBoard[2][2] == player || // Diagonal          \ 
            theBoard[2][0] == player && theBoard[1][1] == player && theBoard[0][2] == player) //   Diagonal      /
            {
                System.out.println("X - won!");
            }
        else if (theBoard[0][0] == cpu && theBoard[0][1] == cpu && theBoard[0][2] == cpu || // 1st row
            theBoard[1][0] == cpu && theBoard[1][1] == cpu && theBoard[1][2] == cpu || // 2nd row
            theBoard[2][0] == cpu && theBoard[2][1] == cpu && theBoard[2][2] == cpu || // 3rd row
            theBoard[0][0] == cpu && theBoard[1][0] == cpu && theBoard[2][0] == cpu || // 1st col.
            theBoard[0][1] == cpu && theBoard[1][1] == cpu && theBoard[2][1] == cpu || // 2nd col.
            theBoard[0][2] == cpu && theBoard[1][2] == cpu && theBoard[2][2] == cpu || // 3rd col.
            theBoard[0][0] == cpu && theBoard[1][1] == cpu && theBoard[2][2] == cpu || // Diagonal          \ 
            theBoard[2][0] == cpu && theBoard[1][1] == cpu && theBoard[0][2] == cpu) //   Diagonal      /

            {
                System.out.println("O - won!");
            }


    }
}
球员级别,这是我最为挣扎的一个

import java.util.Scanner;
import java.util.Random;
import java.util.Arrays;
public class Player

{
    String player = "X";
    String cpu = "O";
    private Board ticTac;
    public static Scanner scan = new Scanner(System.in);
    public Player(Board board, String inBoard )
    {
        ticTac = board;
    }
public void randomPlace()
    {
        for(int i = 0; i < 3; i ++)
        {
            for(int j = 0; j < 3; j++)
            {

            }
        }
    }
    public void computerMove()
    {


    }        

    public void humanMove()
    {

    }
}

我不知道我是否理解你的问题,你能重说一遍或给我举个例子吗

据我所知,您希望在您的玩家类中使用board方法,对吗


如果你创建了一个棋盘类,并赋予它所需的任何特征,那么在你的玩家类中,你可以创建一个新的“it”类,然后用它的名字来检索你赋予它的任何特征。

我想这可能会对你有所帮助

import java.util.Scanner;
import java.util.Random;
import java.util.Arrays;
public class Player

{
    String player = "X";
    String cpu = "O";

    int row = 3;
    int column = 3;

    private Board ticTac;


    public static Scanner scan = new Scanner(System.in);
    public Player(Board board, String inBoard )
    {
        //here you have the board in player
        tictac = board;
    }

    public void computerMove()
    {   //here you can code something like this
        tictac.put(tictac.getRandomFreePlace(),cpu);
    }        

    public void humanMove(Position position)
    {
        tictac.put(position, human);
    }
}
您必须在板上编写put(Position,String)和getRandomFreePlace()代码

然后扫描玩家移动并打印棋盘

-------------更新--------------

哦,你想初始化你的电路板吗?你可以用双人床来做

  for(i=0;i<row;i++){
       for(j=0;j<column;j++){
        //here you can set the value you want
        theBoard[i][j]=0;
        }
    }

for(i=0;我认为Board(大写B)无法转换为java.lang.String[])。感谢您的尝试,尽管我很欣赏您的想法。谢谢,但您认为我可以不编辑驱动程序就完成吗?哦,nvm,我知道您做了什么;)是的,您可以,我只更改了humanMove,但是你可以不带参数地使用它,并询问里面的玩家的移动。谢谢你的帮助,我想我的主要困惑是如何让ticTac用于棋盘。我是2d阵列新手。你问了一个类似的问题:
  for(i=0;i<row;i++){
       for(j=0;j<column;j++){
        //here you can set the value you want
        theBoard[i][j]=0;
        }
    }