Java Project: The assignment is to take the TicTacToe class implement a turn ord
ID: 3833883 • Letter: J
Question
Java Project:
The assignment is to take the TicTacToe class implement a turn order.
So if you make one pannel a square, then the ablity to place a square in the other pannels should be blocked untill you make one pannel a circle.
here is the code.
ShowTicTac.java:
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.BorderFactory;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
import javax.swing.border.EtchedBorder;
public class ShowTicTac {
public static void main(String[] args)
{
JFrame MyFrame = new JFrame();
MyFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MyFrame.setTitle("TIC TAC TOE");
MyFrame.setVisible(true);
MyFrame.setSize(550,550);
MyFrame.setResizable(false);
Border blackLine;
blackLine = BorderFactory.createLineBorder(Color.black);
MyFrame.setLayout(new GridLayout(3,3, 5,5));
MyPanel [] tic = new MyPanel[9];
for(int i = 0; i < 9 ; i++)
{
tic[i] = new MyPanel();
tic[i].myPanel.setBackground(Color.white);
tic[i].setBorder(blackLine);
MyFrame.add(tic[i]);
}
}
}
class MyPanel extends JPanel
{
public CustomPanel myPanel;
private JPanel jpButton;
private JButton square;
private JButton circle;
private Color c;
public void setColor(Color cc)
{
c = cc;
myPanel.setBackground(c);
}
public MyPanel()
{
myPanel = new CustomPanel();
circle = new JButton("Circle");
square = new JButton("Square");
circle.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
myPanel.draw(CustomPanel.CIRCLE);
}
});
square.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
myPanel.draw(CustomPanel.SQUARE);
}
}
);
jpButton = new JPanel();
jpButton.setSize(150,25);
jpButton.setLayout(new GridLayout(1,2));
jpButton.add(circle);jpButton.add(square);
this.setLayout(new BorderLayout());
this.add(myPanel,BorderLayout.CENTER);
this.add(jpButton,BorderLayout.SOUTH);
}
public Dimension getPreferredSize()
{
return new Dimension(150,175);
}
public Dimension getMinimumSize()
{
return getPreferredSize();
}
public void paintComponent (Graphics g)
{
super.paintComponent(g);
}
}
class CustomPanel extends JPanel
{
public static final int CIRCLE = 0;
public static final int SQUARE = 1 ;
private int xWidth;
private int yHeight;
private Dimension d = new Dimension(150,150);
private int shape = 2 ;
public CustomPanel()
{
}
public Dimension getPreferredSize()
{
return new Dimension(150,150);
}
public Dimension getMinimumSize()
{
return getPreferredSize();
}
public void paintComponent (Graphics g)
{
super.paintComponent(g);
xWidth = (int) d.getHeight();
yHeight = (int) d.getWidth();
if(shape == 0)
{
g.setColor(Color.BLUE);
g.fillOval( xWidth/3, yHeight/4 ,80, 80);
}
else if (shape == 1)
{
g.setColor(Color.RED);
g.fillRect(xWidth/3, yHeight/4,80,80);
}
}
public void draw(int choice)
{
shape = choice;
repaint();
}
}
Explanation / Answer
/* take two classes and keep it in same package and run the main method u will get the desired output */
//GameApplet.java
package com;
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 */
package com;
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)
{
}
}
Note: Please run the main method class for getting the desired output.
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.