我真的输了,我在构建这个游戏时遇到了麻烦。我需要你的帮助。几天来一直在努力解决这个问题。我有三个类,Driver,Board和Player。我有司机,我认为董事会班得到了控制。我主要是在与球员一起挣扎。这样做的目的是让计算机播放器能够随机输入到阵列中,然后让玩家能够输入他们想要播放的位置。
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!");
}
}
}
和Player类一样,这是我最挣扎的那个。
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()
{
}
}
打印
null | null | null
----------
null | null | null
----------
null | null | null
答案 0 :(得分:1)
我想也许这可以帮到你。
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()
然后扫描玩家移动并打印棋盘。
------------- UPDATE --------------
哦,你想初始化你的电路板?
,你可以用双倍 for(i=0;i<row;i++){
for(j=0;j<column;j++){
//here you can set the value you want
theBoard[i][j]=0;
}
}
答案 1 :(得分:0)
不确定我是否理解了您的问题,您可以重新说出来或给我一个例子吗?
根据我的理解,您希望在您的播放器类中使用您的电路板方法是正确的吗?
如果你创建了一个棋盘类并且给了它所需要的任何特性,那么在你的玩家类中你可以创建一个新的“it”类,然后通过它的名称调用它来检索你给它的任何特征。