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;
}
}