( JAVA ) Write a JAVA program where a user plays a games of Tic Tac Toe against
ID: 3662236 • Letter: #
Question
( JAVA )
Write a JAVA program where a user plays a games of Tic Tac Toe against the computer, and tries to remains undefeated for as long as possible.
The program should display the board before every turn
The user enters coordinates to place their piece
The game should keep prompting for coordinates if the space is already occupied or it is a non-negative, invalid input
If the user enters a negative number they quit and the computer wins
The computer then randomly selects an empty space and places their piece
If there are no available spaces (“CAT”) then the game is over but the player does not lose
If the player wins the computer demands a rematch. This will happen until the player loses or quits.
Once the user loses they are asked to enter their name so it can be recorded to a high score file. Then the file’s contents are displayed in game.
The user can then choose to enter the tournament again or quit.
Example Dialog:
Welcome to Tic Tac Toe Tourney! How many games can you win in a row?
| 0 | 1 | 2 |
__________________________________________________
0| | | |
__________________________________________________
1| | | |
__________________________________________________
2| | | |
__________________________________________________
Enter the coordinates to place an "X". Row then Column.
Or enter a negative number to quit
1
1
Computer's Turn
| 0 | 1 | 2 |
__________________________________________________
0| | | |
__________________________________________________
1| | X| |
__________________________________________________
2| | | O|
__________________________________________________
Enter the coordinates to place an "X". Row then Column.
Or enter a negative number to quit
2
0
Computer's Turn
| 0 | 1 | 2 |
__________________________________________________
0| | | O|
__________________________________________________
1| | X| |
__________________________________________________
2| X| | O|
__________________________________________________
Enter the coordinates to place an "X". Row then Column.
Or enter a negative number to quit
1
2
Computer's Turn
| 0 | 1 | 2 |
__________________________________________________
0| O| | O|
__________________________________________________
1| | X| X|
__________________________________________________
2| X| | O|
__________________________________________________
Enter the coordinates to place an "X". Row then Column.
Or enter a negative number to quit
2
1
Computer's Turn
| 0 | 1 | 2 |
__________________________________________________
0| O| O| O|
__________________________________________________
1| | X| X|
__________________________________________________
2| X| X| O|
__________________________________________________
You lost
You lost but you won 0 in a row
Enter your name to record your score
JJ
JJ 0
Would you like to play again? Yes or no
yes
| 0 | 1 | 2 |
__________________________________________________
0| | | |
__________________________________________________
1| | | |
__________________________________________________
2| | | |
__________________________________________________
Enter the coordinates to place an "X". Row then Column.
Or enter a negative number to quit
1
1
Computer's Turn
| 0 | 1 | 2 |
__________________________________________________
0| | | |
__________________________________________________
1| | X| |
__________________________________________________
2| | | O|
__________________________________________________
Enter the coordinates to place an "X". Row then Column.
Or enter a negative number to quit
0
2
Computer's Turn
| 0 | 1 | 2 |
__________________________________________________
0| | | X|
__________________________________________________
1| | X| |
__________________________________________________
2| O| | O|
__________________________________________________
Enter the coordinates to place an "X". Row then Column.
Or enter a negative number to quit
2
1
Computer's Turn
| 0 | 1 | 2 |
__________________________________________________
0| | | X|
__________________________________________________
1| O| X| |
__________________________________________________
2| O| X| O|
__________________________________________________
Enter the coordinates to place an "X". Row then Column.
Or enter a negative number to quit
0
1
Computer's Turn
| 0 | 1 | 2 |
__________________________________________________
0| | X| X|
__________________________________________________
1| O| X| O|
__________________________________________________
2| O| X| O|
__________________________________________________
You win!
The computer demands a rematch!
| 0 | 1 | 2 |
__________________________________________________
0| | | |
__________________________________________________
1| | | |
__________________________________________________
2| | | |
__________________________________________________
Enter the coordinates to place an "X". Row then Column.
Or enter a negative number to quit
1
1
Computer's Turn
| 0 | 1 | 2 |
__________________________________________________
0| | | |
__________________________________________________
1| O| X| |
__________________________________________________
2| | | |
__________________________________________________
Enter the coordinates to place an "X". Row then Column.
Or enter a negative number to quit
0
0
Computer's Turn
| 0 | 1 | 2 |
__________________________________________________
0| X| | O|
__________________________________________________
1| O| X| |
__________________________________________________
2| | | |
__________________________________________________
Enter the coordinates to place an "X". Row then Column.
Or enter a negative number to quit
2
2
Computer's Turn
| 0 | 1 | 2 |
__________________________________________________
0| X| O| O|
__________________________________________________
1| O| X| |
__________________________________________________
2| | | X|
__________________________________________________
You win!
The computer demands a rematch!
| 0 | 1 | 2 |
__________________________________________________
0| | | |
__________________________________________________
1| | | |
__________________________________________________
2| | | |
__________________________________________________
Enter the coordinates to place an "X". Row then Column.
Or enter a negative number to quit
2
2
Computer's Turn
| 0 | 1 | 2 |
__________________________________________________
0| O| | |
__________________________________________________
1| | | |
__________________________________________________
2| | | X|
__________________________________________________
Enter the coordinates to place an "X". Row then Column.
Or enter a negative number to quit
1
2
Computer's Turn
| 0 | 1 | 2 |
__________________________________________________
0| O| | |
__________________________________________________
1| | | X|
__________________________________________________
2| O| | X|
__________________________________________________
Enter the coordinates to place an "X". Row then Column.
Or enter a negative number to quit
0
2
Computer's Turn
| 0 | 1 | 2 |
__________________________________________________
0| O| | X|
__________________________________________________
1| | O| X|
__________________________________________________
2| O| | X|
__________________________________________________
You win!
The computer demands a rematch!
| 0 | 1 | 2 |
__________________________________________________
0| | | |
__________________________________________________
1| | | |
__________________________________________________
2| | | |
__________________________________________________
Enter the coordinates to place an "X". Row then Column.
Or enter a negative number to quit
1
1
Computer's Turn
| 0 | 1 | 2 |
__________________________________________________
0| | | O|
__________________________________________________
1| | X| |
__________________________________________________
2| | | |
__________________________________________________
Enter the coordinates to place an "X". Row then Column.
Or enter a negative number to quit
1
0
Computer's Turn
| 0 | 1 | 2 |
__________________________________________________
0| | | O|
__________________________________________________
1| X| X| |
__________________________________________________
2| | | O|
__________________________________________________
Enter the coordinates to place an "X". Row then Column.
Or enter a negative number to quit
1
2
Computer's Turn
| 0 | 1 | 2 |
__________________________________________________
0| O| | O|
__________________________________________________
1| X| X| X|
__________________________________________________
2| | | O|
__________________________________________________
You win!
The computer demands a rematch!
| 0 | 1 | 2 |
__________________________________________________
0| | | |
__________________________________________________
1| | | |
__________________________________________________
2| | | |
__________________________________________________
Enter the coordinates to place an "X". Row then Column.
Or enter a negative number to quit
2
2
Computer's Turn
| 0 | 1 | 2 |
__________________________________________________
0| | O| |
__________________________________________________
1| | | |
__________________________________________________
2| | | X|
__________________________________________________
Enter the coordinates to place an "X". Row then Column.
Or enter a negative number to quit
1
2
Computer's Turn
| 0 | 1 | 2 |
__________________________________________________
0| | O| |
__________________________________________________
1| | O| X|
__________________________________________________
2| | | X|
__________________________________________________
Enter the coordinates to place an "X". Row then Column.
Or enter a negative number to quit
1
0
Computer's Turn
| 0 | 1 | 2 |
__________________________________________________
0| | O| |
__________________________________________________
1| X| O| X|
__________________________________________________
2| | O| X|
__________________________________________________
You lost
You lost but you won 4 in a row
Enter your name to record your score
JJ
JJ 0
JJ 4
Would you like to play again? Yes or no
no
Good bye!
Explanation / Answer
import java.applet.Applet;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.PrintStream;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class GameApplet extends Applet
implements MouseListener, ActionListener, WindowListener
{
JFrame f;
int flag = 2;
int n;
int m;
int i = 0;
static int bug = 0;
char[] ch = new char[9];
JButton first;
JButton second;
String s1 = "";
public GameApplet()
{
this.f = new JFrame("Tic Tac Toe");
this.first = new JButton("CLEAR");
this.second = new JButton("EXIT");
this.f.add(this.first);
this.f.add(this.second);
this.f.addWindowListener(this);
this.f.getContentPane().setBackground(Color.BLUE);
this.f.setLayout(null);
this.f.setVisible(true);
this.f.setSize(800, 600);
this.first.setBounds(650, 50, 90, 60);
this.second.setBounds(650, 250, 90, 60);
this.f.addMouseListener(this);
for (this.i = 0; this.i < 9; this.i += 1)
this.ch[this.i] = 'B';
this.first.addActionListener(this);
this.second.addActionListener(this);
String message = "Please click on the frame !!!!! to start the game ";
JOptionPane pane = new JOptionPane(message);
JDialog dialog = pane.createDialog(new JFrame(), "Dilaog");
dialog.show();
Graphics g = this.f.getGraphics();
g.drawLine(200, 0, 200, 600);
g.drawLine(400, 0, 400, 600);
g.drawLine(0, 200, 600, 200);
g.drawLine(0, 400, 600, 400);
g.drawLine(600, 0, 600, 600);
}
public void keyPressed(KeyEvent k)
{
System.out.print("");
}
public void keyTyped(KeyEvent k) {
this.s1 += k.getKeyChar();
}
public void keyReleased(KeyEvent k) {
System.out.print("");
}
public void actionPerformed(ActionEvent ae)
{
if (ae.getSource() == this.first)
{
this.f.setVisible(false);
bug = 0;
new GameApplet();
}
if (ae.getSource() == this.second)
{
System.exit(0);
}
}
public void windowClosing(WindowEvent de)
{
System.exit(0); }
public void windowOpened(WindowEvent de) { }
public void windowClosed(WindowEvent de) { }
public void windowActivated(WindowEvent de) { }
public void windowDeactivated(WindowEvent de) { }
public void windowIconified(WindowEvent de) { }
public void windowDeiconified(WindowEvent de) { }
public void mouseClicked(MouseEvent e) { Graphics2D g2;
Graphics g = this.f.getGraphics();
g.drawLine(200, 0, 200, 600);
g.drawLine(400, 0, 400, 600);
g.drawLine(0, 200, 600, 200);
g.drawLine(0, 400, 600, 400);
g.drawLine(600, 0, 600, 600);
this.flag -= 1;
int x = e.getX();
int y = e.getY();
if (this.flag == 1)
{
if ((x < 200) && (y < 200)) { this.m = 0; this.n = 0; this.ch[0] = 'R'; }
if ((x > 200) && (x < 400) && (y < 200)) { this.m = 200; this.n = 0; this.ch[1] = 'R'; }
if ((x > 400) && (x < 600) && (y < 200)) { this.m = 400; this.n = 0; this.ch[2] = 'R'; }
if ((x < 200) && (y > 200) && (y < 400)) { this.m = 0; this.n = 200; this.ch[3] = 'R'; }
if ((x > 200) && (x < 400) && (y > 200) && (y < 400)) { this.m = 200; this.n = 200; this.ch[4] = 'R'; }
if ((x > 400) && (x < 600) && (y > 200) && (y < 400)) { this.m = 400; this.n = 200; this.ch[5] = 'R'; }
if ((x < 200) && (y > 400) && (y < 600)) { this.m = 0; this.n = 400; this.ch[6] = 'R'; }
if ((x > 200) && (x < 400) && (y > 400) && (y < 600)) { this.m = 200; this.n = 400; this.ch[7] = 'R'; }
if ((x > 400) && (x < 600) && (y > 400) && (y < 600)) { this.m = 400; this.n = 400; this.ch[8] = 'R'; }
g.setColor(new Color(77, 176, 230));
g2 = (Graphics2D)g;
g2.setStroke(new BasicStroke(10.0F));
g.drawOval(this.m + 10, this.n + 10, 159, 159);
}
if (this.flag == 0)
{
if ((x < 200) && (y < 200)) { this.m = 0; this.n = 20; this.ch[0] = 'P'; }
if ((x > 200) && (x < 400) && (y < 200)) { this.m = 200; this.n = 20; this.ch[1] = 'P'; }
if ((x > 400) && (x < 600) && (y < 200)) { this.m = 400; this.n = 20; this.ch[2] = 'P'; }
if ((x < 200) && (y > 200) && (y < 400)) { this.m = 0; this.n = 200; this.ch[3] = 'P'; }
if ((x > 200) && (x < 400) && (y > 200) && (y < 400)) { this.m = 200; this.n = 200; this.ch[4] = 'P'; }
if ((x > 400) && (x < 600) && (y > 200) && (y < 400)) { this.m = 400; this.n = 200; this.ch[5] = 'P'; }
if ((x < 200) && (y > 400) && (y < 600)) { this.m = 0; this.n = 400; this.ch[6] = 'P'; }
if ((x > 200) && (x < 400) && (y > 400) && (y < 600)) { this.m = 200; this.n = 400; this.ch[7] = 'P'; }
if ((x > 400) && (x < 600) && (y > 400) && (y < 600)) { this.m = 400; this.n = 400; this.ch[8] = 'P'; }
g2 = (Graphics2D)g;
g2.setStroke(new BasicStroke(10.0F));
g.setColor(new Color(77, 176, 230));
g.drawLine(this.m + 10, this.n + 13, this.m + 169, this.n + 164);
g.drawLine(this.m + 169, this.n + 10, this.m + 10, this.n + 169);
this.flag += 2;
}
for (this.i = 0; this.i < 3; this.i += 1)
{
if ((this.ch[this.i] != 'B') &&
(this.ch[(this.i + 3)] == this.ch[this.i]) && (this.ch[(this.i + 6)] == this.ch[this.i]))
{
new Board().win();
bug = 1;
}
}
for (this.i = 0; this.i < 7; this.i += 1)
{
if (this.ch[this.i] != 'B')
{
if ((this.ch[this.i] == this.ch[(this.i + 1)]) && (this.ch[this.i] == this.ch[(this.i + 2)]))
{
new Board().win();
bug = 1;
}
this.i += 2;
}
else {
this.i += 2;
}
}
if ((this.ch[4] != 'B') && ((
((this.ch[0] == this.ch[4]) && (this.ch[4] == this.ch[8])) || ((this.ch[2] == this.ch[4]) && (this.ch[4] == this.ch[6])))))
{
new Board().win();
bug = 1;
}
for (this.i = 0; (this.i < 9) &&
(this.ch[this.i] != 'B'); this.i += 1)
{
if (this.i == 8)
{
if (bug == 0)
new Board().draw();
bug = 0;
}
}
}
public void mouseReleased(MouseEvent e)
{
System.out.print("");
}
public void mouseEntered(MouseEvent e)
{
System.out.print("");
}
public void mouseExited(MouseEvent e) {
System.out.print("");
}
public void mousePressed(MouseEvent e) {
System.out.print("");
}
public static void main(String[] args)
{
new GameApplet();
}
}
Board.java
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
class Board implements WindowListener
{
public void win()
{
String message = "Congratulations !!!!! You win ";
JOptionPane pane = new JOptionPane(message);
JDialog dialog = pane.createDialog(new JFrame(), "Dilaog");
dialog.show();
}
public void draw()
{
String message = "Players the result is !!!!! STALEMATE ";
JOptionPane pane = new JOptionPane(message);
JDialog dialog = pane.createDialog(new JFrame(), "Dilaog");
dialog.show();
}
public void windowClosing(WindowEvent we)
{
System.exit(0);
}
public void windowOpened(WindowEvent we)
{
}
public void windowClosed(WindowEvent we)
{
}
public void windowActivated(WindowEvent we)
{
}
public void windowDeactivated(WindowEvent we)
{
}
public void windowIconified(WindowEvent we)
{
}
public void windowDeiconified(WindowEvent we)
{
}
}
Compliation as follows:
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.