Question: public class Player { private boolean human; private String name; private Player ( boolean human, String name ) { this.human = human; this.name = name;

public class Player {
private boolean human;
private String name;
private Player(boolean human, String name){
this.human = human;
this.name = name;
}
public static Player createHuman(String name){
return new Player(true, name);
}
public static Player createComputer(){
return new Player(false,"AI");
}
public boolean isHuman(){
return human;
}
public String getName(){
return name;
}
}
public class TestGames {
public static void main(String[] args){
TwoPlayerBoardGame game;
game = new TicTacToe(Player.createHuman("Student"), Player.createComputer());
game.play();
game = new TicTacToe(Player.createHuman("Roy"), Player.createHuman("Moss"));
game.play();
game = new ConnectFour(Player.createHuman("Student"), Player.createComputer());
game.play();
game = new ConnectFour(Player.createHuman("Jen"), Player.createHuman("Moss"));
game.play();
}
}
public final class TicTacToe extends TwoPlayerBoardGame {
private char XO ='X';
private int row;
private int col;
public TicTacToe(Player p1, Player p2){
super(null,0, p1, p2);
}
public String toString(){
return "";
}
protected void askForMove(){
}
protected void receiveMove(){
row = console.nextInt();
col = console.nextInt();
}
protected void generateMove(){
row = Math.abs(random.nextInt())%3;
col = Math.abs(random.nextInt())%3;
}
protected boolean validMove(){
return true;
}
protected void applyMove(){
}
protected boolean someoneWon(){
return false;
}
protected void celebrateMove(){
}
protected void prepareForNextMove(){
}
}
------------------
import java.util.Scanner;
import java.util.Random;
public abstract class TwoPlayerBoardGame {
protected static final Scanner console = new Scanner(System.in);
protected static final Random random = new Random();
protected final char[][] board;
private final int MAX_MOVES;
protected Player current;
private Player other;
protected TwoPlayerBoardGame(char[][] board, int MAX_MOVES, Player p1, Player p2){
this.board = board;
this.MAX_MOVES = MAX_MOVES;
this.current = p1;
this.other = p2;
}
public final void play(){
for (int i =0; i MAX_MOVES; ++i){
System.out.println(this);
do {
if (current.isHuman()){
askForMove();
receiveMove();
}
else {
generateMove();
}
}
while (!validMove());
applyMove();
if (someoneWon()){
System.out.println(this);
celebrateMove();
return;
}
else {
prepareForNextMove();
}
}
System.out.println(this);
System.out.println("It's a draw.");
}
protected abstract void askForMove();
protected abstract void receiveMove();
protected abstract void generateMove();
protected abstract boolean validMove();
protected abstract void applyMove();
protected abstract boolean someoneWon();
protected abstract void celebrateMove();
protected void prepareForNextMove(){
Player tmp = current;
current = other;
other = tmp;
}
}
public final class ConnectFour extends TwoPlayerBoardGame {
private char RY ='R';
private int col;
private static final int ROWS =6;
private static final int COLS =7;
public ConnectFour(Player p1, Player p2){
super(null,0, p1, p2);
}
public String toString(){
return "";
}
protected void askForMove(){
}
protected void receiveMove(){
}
protected void generateMove(){
}
protected boolean validMove(){
return true;
}
protected void applyMove(){
}
protected boolean someoneWon(){
return false;
}
protected void celebrateMove(){
}
protected void prepareForNextMove(){
}
}
Open TestGames.java. Understand what it accomplishes.
(a) Once you have edited TicTacToe.java and ConnectFour.java, this file will allow you to
play Tic-Tac-Toe and Connect Four against unimpressive AI.
(b) It'll also let two humans play the games against one another.
This will help you to test your games for bugs.
Confirm that you can compile TestGames.java (which forces the compilation of Player.java,
TwoPlayerBoardGame.java, TicTacToe.java, and ConnectFour.java). As you edit TicTacToe.
java and ConnectFour.java, you should frequently recompile and run Test

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!