Question: In this code when I select the menu item of new game I want it to delete the current game board and repaint new gameboard
In this code when I select the menu item of new game I want it to delete the current game board and repaint new gameboard tiles. how is this down ?
import java.awt.*;
import java.util.Collections;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;
import java.awt.*;
import java.awt.event.*;
import javax.imageio.ImageIO;
import javax.swing.*;
import MahJongTest.TestPanel;
import javax.swing.*;
public class MahJongTest extends JFrame {
public boolean restartIt= false;
int gameSeed;
public boolean sound, tournament;
JMenuItem soundItem, tournamentItem, undo, reset, load, redo;
private final int X_AXIS = 15,
Y_AXIS = 8,
Z_AXIS = 5,
TOTAL_TILES = 144;
ArrayList
Tile[][][] board = new Tile[5][15][8];
ArrayList
ArrayList
private Tile first = null; // first image in swapping pair
private Tile second = null;
Tile selected;
TestPanel panel,panel2;
public MahJongTest() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(1200, 800);
panel = new TestPanel();
add(panel);
this.remove(add(panel));
//this.remove(new TestPanel());
this.revalidate();
this.repaint();
//Menu
JMenuBar menu = new JMenuBar();
setJMenuBar(menu);
//Main item
JMenu game = new JMenu("Game");
menu.add(game);
//New Game
JMenuItem newGame = new JMenuItem("New Game");
newGame.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
int confirm = JOptionPane.showConfirmDialog(null,
"Start a new game (discards this one)?",
"Message",
JOptionPane.YES_NO_OPTION);
if(confirm == 0){
//OK
remove(panel);
// add(panel);
repaint();
revalidate();
add(new TestPanel());
}
}
});
game.add(newGame);
setVisible(true);
}
private void newGame(){
remove(panel);
panel = new TestPanel();
add(panel);
repaint();
}
@SuppressWarnings("unchecked")
public void MahJongModel(){
if(restartIt)
{
restartGame();
}else {
restartIt = false;
//initiate tiles
for(int i = 0; i
tiles.add(new Bamboo1Tile());
tiles.add(new CharacterTile(Character.forDigit(1, 10)));
tiles.add(new CircleTile(1));
for(int j = 2; j
tiles.add(new CharacterTile(Character.forDigit(j, 10)));
tiles.add(new CircleTile(j));
tiles.add(new BambooTile(j));
}
tiles.add(new CharacterTile('N'));
tiles.add(new CharacterTile('E'));
tiles.add(new CharacterTile('W'));
tiles.add(new CharacterTile('S'));
tiles.add(new CharacterTile('C'));
tiles.add(new CharacterTile('F'));
tiles.add(new WhiteDragonTile());
}
tiles.add(new FlowerTile("Chrysanthemum"));
tiles.add(new FlowerTile("Orchid"));
tiles.add(new FlowerTile("Plum"));
tiles.add(new FlowerTile("Bamboo"));
tiles.add(new SeasonTile("Spring"));
tiles.add(new SeasonTile("Summer"));
tiles.add(new SeasonTile("Fall"));
tiles.add(new SeasonTile("Winter"));
Collections.shuffle(tiles);
lastGame = (ArrayList
//Collections.copy(lastGame, tiles);
//place tiles
//layer 0, row 0
for(int i = 1; i
positionTile(tiles.remove(0), 0, i, 0);
}
//layer 0, row 1
for(int i = 3; i
positionTile(tiles.remove(0), 0, i, 1);
}
//layer 0, row 2
for(int i = 2; i
positionTile(tiles.remove(0), 0, i, 2);
}
//layer 0, row 3
for(int i = 1; i
positionTile(tiles.remove(0), 0, i, 3);
}
//layer 0, row 4
for(int i = 0; i
positionTile(tiles.remove(0), 0, i, 4);
}
//layer 0, row 5
for(int i = 2; i
positionTile(tiles.remove(0), 0, i, 5);
}
//layer 0, row 6
for(int i = 3; i
positionTile(tiles.remove(0), 0, i, 6);
}
//layer 0, row 7
for(int i = 1; i
positionTile(tiles.remove(0), 0, i, 7);
}
//layer 1
for(int i = 1; i
for(int j = 4; j
positionTile(tiles.remove(0), 1, j, i);
}
}
//layer 2
for(int i = 2; i
for(int j = 5; j
positionTile(tiles.remove(0), 2, j, i);
}
}
//layer 3
for(int i = 3; i
for(int j = 6; j
positionTile(tiles.remove(0), 3, j, i);
}
}
//layer 4
positionTile(tiles.remove(0), 4, 7, 4);
}
}
public void positionTile(Tile t, int z, int x, int y){
board[z][x][y] = t;
t.setPosition(x, y, z);
}
public boolean isTileOpen(Tile t){
return (onTop(t) && (openRight(t) || openLeft(t)));
}
Tile getTile(int z, int x, int y){
return board[z][x][y];
}
public void removeTile(Tile t){
int z = t.z;
int x = t.x;
int y = t.y;
removed.add(board[z][x][y]);
board[z][x][y] = null;
}
public boolean openUp(Tile t){
int z = t.z;
int x = t.x;
int y = t.y;
if(z == 4)
return true;
if(board[z + 1][x][y] == null)
return true;
return false;
}
public boolean openRight(Tile t){
int z = t.z;
int x = t.x;
int y = t.y;
if(z == 4)
return true;
if(x == 14)
return true;
if(z == 0){
if(x == 0){
if(board[0][1][4] == null && board[0][1][3] == null)
return true;
else
return false;
}
if(x == 12 && y == 4){
if(board[0][13][3] == null)
return true;
else
return false;
}
}
if(board[z][x + 1][y] == null)
return true;
return false;
}
public boolean openLeft(Tile t){
int z = t.z;
int x = t.x;
int y = t.y;
if(z == 4)
return true;
if(x == 0)
return true;
if (z == 0){
if (x == 1 && y == 3){
if (board[0][0][4] == null)
return true;
else
return false;
}
}
if(board[z][x - 1][y] == null)
return true;
return false;
}
public boolean onTop(Tile t){
int z = t.z;
int x = t.x;
int y = t.y;
if(z == 4)
return true;
if(z == 3){
if(board[4][7][4] == null)
return true;
else
return false;
}
if(board[z + 1][x][y] == null)
return true;
return false;
}
public void restartGame(){
//initiate tiles
//place tiles
//layer 0, row 0
for(int i = 1; i
positionTile(lastGame.remove(0), 0, i, 0);
}
//layer 0, row 1
for(int i = 3; i
positionTile(lastGame.remove(0), 0, i, 1);
}
//layer 0, row 2
for(int i = 2; i
positionTile(lastGame.remove(0), 0, i, 2);
}
//layer 0, row 3
for(int i = 1; i
positionTile(lastGame.remove(0), 0, i, 3);
}
//layer 0, row 4
for(int i = 0; i
positionTile(lastGame.remove(0), 0, i, 4);
}
//layer 0, row 5
for(int i = 2; i
positionTile(lastGame.remove(0), 0, i, 5);
}
//layer 0, row 6
for(int i = 3; i
positionTile(lastGame.remove(0), 0, i, 6);
}
//layer 0, row 7
for(int i = 1; i
positionTile(lastGame.remove(0), 0, i, 7);
}
//layer 1
for(int i = 1; i
for(int j = 4; j
positionTile(lastGame.remove(0), 1, j, i);
}
}
//layer 2
for(int i = 2; i
for(int j = 5; j
positionTile(lastGame.remove(0), 2, j, i);
}
}
//layer 3
for(int i = 3; i
for(int j = 6; j
positionTile(lastGame.remove(0), 3, j, i);
}
}
//layer 4
positionTile(lastGame.remove(0), 4, 7, 4);
}
public void drawTiles(){
for(int z = 4; z >= 0; z--){
for(int y = 7; y >= 0; y--){
for(int x = 0; x
if (board[z][x][y] != null){
Tile t = board[z][x][y];
t.setLocation(x * 70 + z * 20 + 76, y * 70 - z * 20 + 20);
if (x == 0 && z == 0){
t.setLocation(x * 70 + 76, (y * 70) - 38 + 20);
}
if(x == 14 && z == 0){
t.setLocation(x * 70 + 76, (y * 70) + 38 + 20);
}
if(x == 13 && z == 0){
t.setLocation(x * 70 + 76, (y * 70) + 38 + 20);
}
if(z == 4){
t.setLocation(x * 70 + z * 20 - 38 + 76, y * 70 - z * 20 - 38 + 20);
}
t.addMouseListener(new MouseListener() {
public void mousePressed(MouseEvent e) {
Tile tile = (Tile)e.getSource();
if(isTileOpen(tile)){
if(selected == null){
selected = tile;
selected.selected = true;
}
else if(tile.x == selected.x &&
tile.y == selected.y &&
tile.z == selected.z){
selected.selected = false;
selected = null;
}
else if(tile.matches(selected)){
selected.selected = false;
removeTile(tile);
remove(tile);
removeTile(selected);
remove(selected);
selected = null;
}
else {
selected.selected = false;
selected = null;
}
}
repaint();
}
@Override
public void mouseClicked(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
@Override
public void mouseReleased(MouseEvent e) {}
});
add(t);
}
}
}
}
repaint();
}
public class TestPanel extends JPanel
{
public TestPanel()
{
//setLayout(null); // requires a setSize in Tile!!!!!!!!!!!
MahJongModel();
drawTiles();
}
}
public static void main(String[] args) {
new MahJongTest();
}
}

t1 Circle 5 ?1? t1 Circle 5 ?1
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
