Today in the textbook to see the source of the applet tic-tac-Small game, but did not restart this function, I am prepared to write a Isrepaint () method to pop-up dialog box to ask the player whether to start again, but will not initialize the game, left to solve later.
If there is a passing master greatly, look at the liberal enlighten, Green bamboo grateful!
Import Java.awt.BorderLayout;
Import Java.awt.Color;
Import Java.awt.Graphics;
Import Java.awt.GridLayout;
Import Java.awt.event.MouseAdapter;
Import java.awt.event.MouseEvent;
Import Javax.swing.JApplet;
Import Javax.swing.JLabel;
Import Javax.swing.JOptionPane;
Import Javax.swing.JPanel;
Import Javax.swing.border.LineBorder;
@SuppressWarnings ("Serial")
public class TicTacToe extends japplet{
Private char Whoseturn = ' X ';
Create and initialize cells (cell)
Private cell[][] cells = new CELL[3][3];
Create and initialize a status label
Private JLabel jlblstatus = new JLabel ("X ' s turn to play");
Initialize UI
Public TicTacToe () {
JPanel p = new JPanel (new GridLayout (3,3,0,0));
for (int i=0;i<3;i++)
for (int j=0;j<3;j++)
P.add (Cells[i][j] = new Cell ());
P.setborder (New Lineborder (color.red,1));
Jlblstatus.setborder (New Lineborder (color.yellow,1));
Add (P,borderlayout.center);
Add (Jlblstatus,borderlayout.south);
}
/**determine whether the cells is all occupied*/
public Boolean isfull () {
for (int i=0;i<3;i++)
for (int j=0;j<3;j++)
if (cells[i][j].gettoken () = = ")
return false;
return true;
}
/**determine whether the player with the specified token wins*/
public boolean Iswon (char token) {
for (int i=0;i<3;i++)
if ((cells[i][0].gettoken () = = token)
&& (cells[i][1].gettoken () = = token)
&& (cells[i][2].gettoken () = = token)) {
return true;
}
for (int j=0;j<3;j++)
if ((cells[0][j].gettoken () = = token)
&& (cells[1][j].gettoken () = = token)
&& (cells[2][j].gettoken () = = token)) {
return true;
}
if ((cells[0][0].gettoken () = = token)
&& (cells[1][1].gettoken () = = token)
&& (cells[2][2].gettoken () = = token)) {
return true;
}
if ((cells[0][2].gettoken () = = token)
&& (cells[1][1].gettoken () = = token)
&& (cells[2][0].gettoken () = = token)) {
return true;
}
return false;
}
An inner class cell for a cell
public class Cell extends jpanel{
Token used for this cell
Private char token = ';
Public Cell () {
SetBorder (New Lineborder (color.black,1));
Addmouselistener (New Mymouselistener ());//register Listener
}
/**return token*/
Public Char GetToken () {
return token;
}
/**set a new token*/
public void Settoken (char c) {
token = c;
Repaint ();
}
/**paint the cell*/
protected void Paintcomponent (Graphics g) {
Super.paintcomponent (g);
if (token = = ' X ') {
G.drawline (Ten, GetWidth () -10, GetHeight ()-10);
G.drawline (GetWidth () -10, ten, Ten, GetHeight ()-10);
}
else if (token = = ' O ') {
G.drawoval (Ten, GetWidth () -20, GetHeight ()-20);
}
}
Private class Mymouselistener extends mouseadapter{
/**handle mouse click on a cell*/
public void mouseclicked (MouseEvent e) {
If cell is empty and game are not over
if (token = = "&& Whoseturn! =") {
Settoken (Whoseturn);//set token in the cell
Check Game Status
if (Iswon (Whoseturn)) {
Jlblstatus.settext (whoseturn+ "won! The game is Over ");
Whoseturn = "//game";
Isrepaint ();
}
else if (Isfull ()) {
Jlblstatus.settext ("draw! The Game is Over ");
Whoseturn = ";
}
else{
Change the Turn
Whoseturn = (Whoseturn = = ' X ')? ' O ': ' X ';
Display whose turn
Jlblstatus.settext (Whoseturn + "' s Turn");
}
}
}
}
Public void Isrepaint () {
int res = Joptionpane.showconfirmdialog (null, "Play Again", "Game Over", joptionpane.yes_no_option);
if (res = = joptionpane.yes_option) {
//This does not initialize ,,,
new TicTacToe ();
new Cell ();
repaint ();
}else{
return;
}
}
}
}
Java Applet Tic-Tac-String game-how to start again? (Leave problem)