zookeeper python接口实例详解
266
2022-12-13
java GUI实现五子棋游戏
本文实例为大家分享了java实现五子棋游戏GUI,供大家参考,具体内容如下
引用包
//{Cynthia Zhang}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.LineBorder;
import javax.swing.JOptionPane;
import javax.swing.ImageIcon;
import java.awt.Image;
import com.sun.image.codec.jpeg.*;
前期预设
//extends JApplet {
// Indicate which player has a turn, initially it is the X player
private char whoseTurn = 'X';
final int SIZE = 15;
static boolean ISOVER = false;
// Create and initialize cells
private final Cell[][] cell = new Cell[SIZE][SIZE];
// Create and initialize a status label
private final JLabel jlblStatus = new JLabel("X's turn to play",JLabel.CENTER);
设置背景板
// Initialize UI
@Override
public void init() {
// Panel p to hold cells
JPanel p = new JPanel();
p.setLayout(new GridLayout(SIZE, SIZE, 0, 0));
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
Cell ce = new Cell();
ce.setBackground(new Color(150,88,42)); // 背景色绝美!
p.add(cell[i][j] = ce);
}
}
// Set line borders on the cells panel and the status label
p.setBackground(new Color(143,105,94)); // 背景色绝美!
jlblStatus.setBorder(new LineBorder(new Color(255,255,255), 2)); // 白框框加宽!
// Place the panel and the label to the applet
this.getContentPane().add(p, BorderLayout.CENTER);
this.getContentPane().add(jlblStatus, BorderLayout.SOUTH);
}
主要框架段落
// This main method enables the applet to run as an application
public static void main(String[] args) {
// Create a frame
JFrame frame = new JFrame("Tic Tac Toe");
// Create an instance of the applet
Homework8 applet = new Homework8();
// Add the applet instance to the frame
frame.getContentPane().add(applet, BorderLayout.CENTER);
// Invoke init() and start()
applet.init();
applet.start();
// Display the frame
frame.setSize(600, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
判断是否满了
// Determine if the cells are all occupied
public boolean isFull() {
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
if (cell[i][j].getToken() == ' ') {
return false;
}
}
}
return true;
}
判断是否赢了
和八皇后有点像http://,可以考虑那种数组优化四个方向,这里比较懒
// Determine if the player with the specified token wins
public boolean isWon(char token) {
int winNum = 5; // define the max num for a rule
for (int indexX = 0; indexX < SIZE; indexX++) {
for (int indexY = 0; indexY < SIZE; indexY++){
// in row check cell[indexX][indexY...indexY+winNum-1]
if (indexY+winNum-1 boolean flag=true; for (int y =indexY;y if (cell[indexX][y].getToken() != token){ flag=false; break; } if (flag==true) return true; } // in row check cell[indexX...indexX+winNum-1][indexY] if (indexX+winNum-1 boolean flag=true; for (int x =indexX;x if (cell[x][indexY].getToken() != token){ flag=false; break; } if (flag==true) return true; } // check cell[indexX...indexX+winNum-1][indexY...indexY+winNum-1) if (indexX+winNum-1 boolean flag=true; for (int x =indexX,y=indexY;x if (cell[x][y].getToken() != token){ flag=false; break; } if (flag==true) return true; } // check cell[indexX...indexX+winNum-1][indexY...indexY+winNum-1) if (indexX+winNum-1 boolean flag=true; for (int x =indexX,y=indexY;x if (cell[x][y].getToken() != token){ flag=false; break; } if (flag==true) return true; } } } return false; } 设置棋子 // An inner class for a cell public class Cell extends JPanel implements MouseListener { // Token used for this cell private char token = ' '; public Cell() { setBorder(new LineBorder(Chttp://olor.black, 1)); // Set cell's border addMouseListener(this); // Register listener } // The getter method for token public char getToken() { return token; } // The setter method for token public void setToken(char c) { token = c; repaint(); } 导入图片 // Paint the cell @Override public void paintComponent(Graphics g) { if (token == 'X') { ImageIcon icon = new ImageIcon("C:\\Users\\Lenovo\\Desktop\\Black.png"); Image image = icon.getImage(); g.drawImage(image,0,0,35,35,this); }else if (token=='O'){ ImageIcon icon = new ImageIcon("C:\\Users\\Lenovo\\Desktop\\White.png"); Image image = icon.getImage(); g.drawImage(image,0,0,35,35,this); } super.paintComponents(g); } 游戏结束的锁定与弹窗 // Handle mouse click on a cell @Override public void mouseClicked(MouseEvent e) { if (ISOVER) return; // if game is over, any issue should be forbidden int response=-1; if (token == ' ') // If cell is not occupied { if (whoseTurn == 'X') // If it is the X player's turn { setToken('X'); // Set token in the cell whoseTurn = 'O'; // Change the turn jlblStatus.setText("The White's Turn"); // Display status if (isWon('X')) { jlblStatus.setText("The Black Won! The Game Is Over!"); response = JOptionPane.showConfirmDialog(null, "The Black Won! The Game Is Over!\n" +"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } else if (whoseTurn == 'O') // If it is the O player's turn { setToken('O'); // Set token in the cell whoseTurn = 'X'; // Change the turn jlblStatus.setText("The Black's Turn"); // Display status if (isWon('O')) { jlblStatus.setText("The White Won! The Game Is Over!"); response = JOptionPane.showConfirmDialog(null, "The White Won! The Game Is Over!\n" +"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } if (isFull()) { jlblStatus.setText("Plain Game! The Game Is Over!"); response = JOptionPane.showConfirmDialog(null, "Plain Game! The Game Is Over!\n" +"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } } 其他棋子信息 @Override public void mousePressed(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseReleased(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseEntered(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseExited(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } } } 图片显示
boolean flag=true;
for (int y =indexY;y if (cell[indexX][y].getToken() != token){ flag=false; break; } if (flag==true) return true; } // in row check cell[indexX...indexX+winNum-1][indexY] if (indexX+winNum-1 boolean flag=true; for (int x =indexX;x if (cell[x][indexY].getToken() != token){ flag=false; break; } if (flag==true) return true; } // check cell[indexX...indexX+winNum-1][indexY...indexY+winNum-1) if (indexX+winNum-1 boolean flag=true; for (int x =indexX,y=indexY;x if (cell[x][y].getToken() != token){ flag=false; break; } if (flag==true) return true; } // check cell[indexX...indexX+winNum-1][indexY...indexY+winNum-1) if (indexX+winNum-1 boolean flag=true; for (int x =indexX,y=indexY;x if (cell[x][y].getToken() != token){ flag=false; break; } if (flag==true) return true; } } } return false; } 设置棋子 // An inner class for a cell public class Cell extends JPanel implements MouseListener { // Token used for this cell private char token = ' '; public Cell() { setBorder(new LineBorder(Chttp://olor.black, 1)); // Set cell's border addMouseListener(this); // Register listener } // The getter method for token public char getToken() { return token; } // The setter method for token public void setToken(char c) { token = c; repaint(); } 导入图片 // Paint the cell @Override public void paintComponent(Graphics g) { if (token == 'X') { ImageIcon icon = new ImageIcon("C:\\Users\\Lenovo\\Desktop\\Black.png"); Image image = icon.getImage(); g.drawImage(image,0,0,35,35,this); }else if (token=='O'){ ImageIcon icon = new ImageIcon("C:\\Users\\Lenovo\\Desktop\\White.png"); Image image = icon.getImage(); g.drawImage(image,0,0,35,35,this); } super.paintComponents(g); } 游戏结束的锁定与弹窗 // Handle mouse click on a cell @Override public void mouseClicked(MouseEvent e) { if (ISOVER) return; // if game is over, any issue should be forbidden int response=-1; if (token == ' ') // If cell is not occupied { if (whoseTurn == 'X') // If it is the X player's turn { setToken('X'); // Set token in the cell whoseTurn = 'O'; // Change the turn jlblStatus.setText("The White's Turn"); // Display status if (isWon('X')) { jlblStatus.setText("The Black Won! The Game Is Over!"); response = JOptionPane.showConfirmDialog(null, "The Black Won! The Game Is Over!\n" +"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } else if (whoseTurn == 'O') // If it is the O player's turn { setToken('O'); // Set token in the cell whoseTurn = 'X'; // Change the turn jlblStatus.setText("The Black's Turn"); // Display status if (isWon('O')) { jlblStatus.setText("The White Won! The Game Is Over!"); response = JOptionPane.showConfirmDialog(null, "The White Won! The Game Is Over!\n" +"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } if (isFull()) { jlblStatus.setText("Plain Game! The Game Is Over!"); response = JOptionPane.showConfirmDialog(null, "Plain Game! The Game Is Over!\n" +"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } } 其他棋子信息 @Override public void mousePressed(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseReleased(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseEntered(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseExited(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } } } 图片显示
if (cell[indexX][y].getToken() != token){
flag=false; break;
}
if (flag==true) return true;
}
// in row check cell[indexX...indexX+winNum-1][indexY]
if (indexX+winNum-1 boolean flag=true; for (int x =indexX;x if (cell[x][indexY].getToken() != token){ flag=false; break; } if (flag==true) return true; } // check cell[indexX...indexX+winNum-1][indexY...indexY+winNum-1) if (indexX+winNum-1 boolean flag=true; for (int x =indexX,y=indexY;x if (cell[x][y].getToken() != token){ flag=false; break; } if (flag==true) return true; } // check cell[indexX...indexX+winNum-1][indexY...indexY+winNum-1) if (indexX+winNum-1 boolean flag=true; for (int x =indexX,y=indexY;x if (cell[x][y].getToken() != token){ flag=false; break; } if (flag==true) return true; } } } return false; } 设置棋子 // An inner class for a cell public class Cell extends JPanel implements MouseListener { // Token used for this cell private char token = ' '; public Cell() { setBorder(new LineBorder(Chttp://olor.black, 1)); // Set cell's border addMouseListener(this); // Register listener } // The getter method for token public char getToken() { return token; } // The setter method for token public void setToken(char c) { token = c; repaint(); } 导入图片 // Paint the cell @Override public void paintComponent(Graphics g) { if (token == 'X') { ImageIcon icon = new ImageIcon("C:\\Users\\Lenovo\\Desktop\\Black.png"); Image image = icon.getImage(); g.drawImage(image,0,0,35,35,this); }else if (token=='O'){ ImageIcon icon = new ImageIcon("C:\\Users\\Lenovo\\Desktop\\White.png"); Image image = icon.getImage(); g.drawImage(image,0,0,35,35,this); } super.paintComponents(g); } 游戏结束的锁定与弹窗 // Handle mouse click on a cell @Override public void mouseClicked(MouseEvent e) { if (ISOVER) return; // if game is over, any issue should be forbidden int response=-1; if (token == ' ') // If cell is not occupied { if (whoseTurn == 'X') // If it is the X player's turn { setToken('X'); // Set token in the cell whoseTurn = 'O'; // Change the turn jlblStatus.setText("The White's Turn"); // Display status if (isWon('X')) { jlblStatus.setText("The Black Won! The Game Is Over!"); response = JOptionPane.showConfirmDialog(null, "The Black Won! The Game Is Over!\n" +"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } else if (whoseTurn == 'O') // If it is the O player's turn { setToken('O'); // Set token in the cell whoseTurn = 'X'; // Change the turn jlblStatus.setText("The Black's Turn"); // Display status if (isWon('O')) { jlblStatus.setText("The White Won! The Game Is Over!"); response = JOptionPane.showConfirmDialog(null, "The White Won! The Game Is Over!\n" +"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } if (isFull()) { jlblStatus.setText("Plain Game! The Game Is Over!"); response = JOptionPane.showConfirmDialog(null, "Plain Game! The Game Is Over!\n" +"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } } 其他棋子信息 @Override public void mousePressed(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseReleased(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseEntered(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseExited(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } } } 图片显示
boolean flag=true;
for (int x =indexX;x if (cell[x][indexY].getToken() != token){ flag=false; break; } if (flag==true) return true; } // check cell[indexX...indexX+winNum-1][indexY...indexY+winNum-1) if (indexX+winNum-1 boolean flag=true; for (int x =indexX,y=indexY;x if (cell[x][y].getToken() != token){ flag=false; break; } if (flag==true) return true; } // check cell[indexX...indexX+winNum-1][indexY...indexY+winNum-1) if (indexX+winNum-1 boolean flag=true; for (int x =indexX,y=indexY;x if (cell[x][y].getToken() != token){ flag=false; break; } if (flag==true) return true; } } } return false; } 设置棋子 // An inner class for a cell public class Cell extends JPanel implements MouseListener { // Token used for this cell private char token = ' '; public Cell() { setBorder(new LineBorder(Chttp://olor.black, 1)); // Set cell's border addMouseListener(this); // Register listener } // The getter method for token public char getToken() { return token; } // The setter method for token public void setToken(char c) { token = c; repaint(); } 导入图片 // Paint the cell @Override public void paintComponent(Graphics g) { if (token == 'X') { ImageIcon icon = new ImageIcon("C:\\Users\\Lenovo\\Desktop\\Black.png"); Image image = icon.getImage(); g.drawImage(image,0,0,35,35,this); }else if (token=='O'){ ImageIcon icon = new ImageIcon("C:\\Users\\Lenovo\\Desktop\\White.png"); Image image = icon.getImage(); g.drawImage(image,0,0,35,35,this); } super.paintComponents(g); } 游戏结束的锁定与弹窗 // Handle mouse click on a cell @Override public void mouseClicked(MouseEvent e) { if (ISOVER) return; // if game is over, any issue should be forbidden int response=-1; if (token == ' ') // If cell is not occupied { if (whoseTurn == 'X') // If it is the X player's turn { setToken('X'); // Set token in the cell whoseTurn = 'O'; // Change the turn jlblStatus.setText("The White's Turn"); // Display status if (isWon('X')) { jlblStatus.setText("The Black Won! The Game Is Over!"); response = JOptionPane.showConfirmDialog(null, "The Black Won! The Game Is Over!\n" +"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } else if (whoseTurn == 'O') // If it is the O player's turn { setToken('O'); // Set token in the cell whoseTurn = 'X'; // Change the turn jlblStatus.setText("The Black's Turn"); // Display status if (isWon('O')) { jlblStatus.setText("The White Won! The Game Is Over!"); response = JOptionPane.showConfirmDialog(null, "The White Won! The Game Is Over!\n" +"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } if (isFull()) { jlblStatus.setText("Plain Game! The Game Is Over!"); response = JOptionPane.showConfirmDialog(null, "Plain Game! The Game Is Over!\n" +"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } } 其他棋子信息 @Override public void mousePressed(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseReleased(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseEntered(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseExited(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } } } 图片显示
if (cell[x][indexY].getToken() != token){
flag=false; break;
}
if (flag==true) return true;
}
// check cell[indexX...indexX+winNum-1][indexY...indexY+winNum-1)
if (indexX+winNum-1 boolean flag=true; for (int x =indexX,y=indexY;x if (cell[x][y].getToken() != token){ flag=false; break; } if (flag==true) return true; } // check cell[indexX...indexX+winNum-1][indexY...indexY+winNum-1) if (indexX+winNum-1 boolean flag=true; for (int x =indexX,y=indexY;x if (cell[x][y].getToken() != token){ flag=false; break; } if (flag==true) return true; } } } return false; } 设置棋子 // An inner class for a cell public class Cell extends JPanel implements MouseListener { // Token used for this cell private char token = ' '; public Cell() { setBorder(new LineBorder(Chttp://olor.black, 1)); // Set cell's border addMouseListener(this); // Register listener } // The getter method for token public char getToken() { return token; } // The setter method for token public void setToken(char c) { token = c; repaint(); } 导入图片 // Paint the cell @Override public void paintComponent(Graphics g) { if (token == 'X') { ImageIcon icon = new ImageIcon("C:\\Users\\Lenovo\\Desktop\\Black.png"); Image image = icon.getImage(); g.drawImage(image,0,0,35,35,this); }else if (token=='O'){ ImageIcon icon = new ImageIcon("C:\\Users\\Lenovo\\Desktop\\White.png"); Image image = icon.getImage(); g.drawImage(image,0,0,35,35,this); } super.paintComponents(g); } 游戏结束的锁定与弹窗 // Handle mouse click on a cell @Override public void mouseClicked(MouseEvent e) { if (ISOVER) return; // if game is over, any issue should be forbidden int response=-1; if (token == ' ') // If cell is not occupied { if (whoseTurn == 'X') // If it is the X player's turn { setToken('X'); // Set token in the cell whoseTurn = 'O'; // Change the turn jlblStatus.setText("The White's Turn"); // Display status if (isWon('X')) { jlblStatus.setText("The Black Won! The Game Is Over!"); response = JOptionPane.showConfirmDialog(null, "The Black Won! The Game Is Over!\n" +"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } else if (whoseTurn == 'O') // If it is the O player's turn { setToken('O'); // Set token in the cell whoseTurn = 'X'; // Change the turn jlblStatus.setText("The Black's Turn"); // Display status if (isWon('O')) { jlblStatus.setText("The White Won! The Game Is Over!"); response = JOptionPane.showConfirmDialog(null, "The White Won! The Game Is Over!\n" +"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } if (isFull()) { jlblStatus.setText("Plain Game! The Game Is Over!"); response = JOptionPane.showConfirmDialog(null, "Plain Game! The Game Is Over!\n" +"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } } 其他棋子信息 @Override public void mousePressed(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseReleased(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseEntered(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseExited(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } } } 图片显示
boolean flag=true;
for (int x =indexX,y=indexY;x if (cell[x][y].getToken() != token){ flag=false; break; } if (flag==true) return true; } // check cell[indexX...indexX+winNum-1][indexY...indexY+winNum-1) if (indexX+winNum-1 boolean flag=true; for (int x =indexX,y=indexY;x if (cell[x][y].getToken() != token){ flag=false; break; } if (flag==true) return true; } } } return false; } 设置棋子 // An inner class for a cell public class Cell extends JPanel implements MouseListener { // Token used for this cell private char token = ' '; public Cell() { setBorder(new LineBorder(Chttp://olor.black, 1)); // Set cell's border addMouseListener(this); // Register listener } // The getter method for token public char getToken() { return token; } // The setter method for token public void setToken(char c) { token = c; repaint(); } 导入图片 // Paint the cell @Override public void paintComponent(Graphics g) { if (token == 'X') { ImageIcon icon = new ImageIcon("C:\\Users\\Lenovo\\Desktop\\Black.png"); Image image = icon.getImage(); g.drawImage(image,0,0,35,35,this); }else if (token=='O'){ ImageIcon icon = new ImageIcon("C:\\Users\\Lenovo\\Desktop\\White.png"); Image image = icon.getImage(); g.drawImage(image,0,0,35,35,this); } super.paintComponents(g); } 游戏结束的锁定与弹窗 // Handle mouse click on a cell @Override public void mouseClicked(MouseEvent e) { if (ISOVER) return; // if game is over, any issue should be forbidden int response=-1; if (token == ' ') // If cell is not occupied { if (whoseTurn == 'X') // If it is the X player's turn { setToken('X'); // Set token in the cell whoseTurn = 'O'; // Change the turn jlblStatus.setText("The White's Turn"); // Display status if (isWon('X')) { jlblStatus.setText("The Black Won! The Game Is Over!"); response = JOptionPane.showConfirmDialog(null, "The Black Won! The Game Is Over!\n" +"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } else if (whoseTurn == 'O') // If it is the O player's turn { setToken('O'); // Set token in the cell whoseTurn = 'X'; // Change the turn jlblStatus.setText("The Black's Turn"); // Display status if (isWon('O')) { jlblStatus.setText("The White Won! The Game Is Over!"); response = JOptionPane.showConfirmDialog(null, "The White Won! The Game Is Over!\n" +"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } if (isFull()) { jlblStatus.setText("Plain Game! The Game Is Over!"); response = JOptionPane.showConfirmDialog(null, "Plain Game! The Game Is Over!\n" +"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } } 其他棋子信息 @Override public void mousePressed(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseReleased(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseEntered(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseExited(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } } } 图片显示
if (cell[x][y].getToken() != token){
flag=false; break;
}
if (flag==true) return true;
}
// check cell[indexX...indexX+winNum-1][indexY...indexY+winNum-1)
if (indexX+winNum-1
boolean flag=true;
for (int x =indexX,y=indexY;x if (cell[x][y].getToken() != token){ flag=false; break; } if (flag==true) return true; } } } return false; } 设置棋子 // An inner class for a cell public class Cell extends JPanel implements MouseListener { // Token used for this cell private char token = ' '; public Cell() { setBorder(new LineBorder(Chttp://olor.black, 1)); // Set cell's border addMouseListener(this); // Register listener } // The getter method for token public char getToken() { return token; } // The setter method for token public void setToken(char c) { token = c; repaint(); } 导入图片 // Paint the cell @Override public void paintComponent(Graphics g) { if (token == 'X') { ImageIcon icon = new ImageIcon("C:\\Users\\Lenovo\\Desktop\\Black.png"); Image image = icon.getImage(); g.drawImage(image,0,0,35,35,this); }else if (token=='O'){ ImageIcon icon = new ImageIcon("C:\\Users\\Lenovo\\Desktop\\White.png"); Image image = icon.getImage(); g.drawImage(image,0,0,35,35,this); } super.paintComponents(g); } 游戏结束的锁定与弹窗 // Handle mouse click on a cell @Override public void mouseClicked(MouseEvent e) { if (ISOVER) return; // if game is over, any issue should be forbidden int response=-1; if (token == ' ') // If cell is not occupied { if (whoseTurn == 'X') // If it is the X player's turn { setToken('X'); // Set token in the cell whoseTurn = 'O'; // Change the turn jlblStatus.setText("The White's Turn"); // Display status if (isWon('X')) { jlblStatus.setText("The Black Won! The Game Is Over!"); response = JOptionPane.showConfirmDialog(null, "The Black Won! The Game Is Over!\n" +"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } else if (whoseTurn == 'O') // If it is the O player's turn { setToken('O'); // Set token in the cell whoseTurn = 'X'; // Change the turn jlblStatus.setText("The Black's Turn"); // Display status if (isWon('O')) { jlblStatus.setText("The White Won! The Game Is Over!"); response = JOptionPane.showConfirmDialog(null, "The White Won! The Game Is Over!\n" +"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } if (isFull()) { jlblStatus.setText("Plain Game! The Game Is Over!"); response = JOptionPane.showConfirmDialog(null, "Plain Game! The Game Is Over!\n" +"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION); ISOVER = true; if (response == 0) System.exit(0); // choose "Yes" than quit; } } } 其他棋子信息 @Override public void mousePressed(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseReleased(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseEntered(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } @Override public void mouseExited(MouseEvent e) { // TODO: implement this java.awt.event.MouseListener method; } } } 图片显示
if (cell[x][y].getToken() != token){
flag=false; break;
}
if (flag==true) return true;
}
}
}
return false;
}
设置棋子
// An inner class for a cell
public class Cell extends JPanel implements MouseListener {
// Token used for this cell
private char token = ' ';
public Cell() {
setBorder(new LineBorder(Chttp://olor.black, 1)); // Set cell's border
addMouseListener(this); // Register listener
}
// The getter method for token
public char getToken() {
return token;
}
// The setter method for token
public void setToken(char c) {
token = c;
repaint();
}
导入图片
// Paint the cell
@Override
public void paintComponent(Graphics g) {
if (token == 'X') {
ImageIcon icon = new ImageIcon("C:\\Users\\Lenovo\\Desktop\\Black.png");
Image image = icon.getImage();
g.drawImage(image,0,0,35,35,this);
}else if (token=='O'){
ImageIcon icon = new ImageIcon("C:\\Users\\Lenovo\\Desktop\\White.png");
Image image = icon.getImage();
g.drawImage(image,0,0,35,35,this);
}
super.paintComponents(g);
}
游戏结束的锁定与弹窗
// Handle mouse click on a cell
@Override
public void mouseClicked(MouseEvent e) {
if (ISOVER) return; // if game is over, any issue should be forbidden
int response=-1;
if (token == ' ') // If cell is not occupied
{
if (whoseTurn == 'X') // If it is the X player's turn
{
setToken('X'); // Set token in the cell
whoseTurn = 'O'; // Change the turn
jlblStatus.setText("The White's Turn"); // Display status
if (isWon('X')) {
jlblStatus.setText("The Black Won! The Game Is Over!");
response = JOptionPane.showConfirmDialog(null, "The Black Won! The Game Is Over!\n"
+"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION);
ISOVER = true;
if (response == 0) System.exit(0); // choose "Yes" than quit;
}
} else if (whoseTurn == 'O') // If it is the O player's turn
{
setToken('O'); // Set token in the cell
whoseTurn = 'X'; // Change the turn
jlblStatus.setText("The Black's Turn"); // Display status
if (isWon('O')) {
jlblStatus.setText("The White Won! The Game Is Over!");
response = JOptionPane.showConfirmDialog(null, "The White Won! The Game Is Over!\n"
+"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION);
ISOVER = true;
if (response == 0) System.exit(0); // choose "Yes" than quit;
}
}
if (isFull()) {
jlblStatus.setText("Plain Game! The Game Is Over!");
response = JOptionPane.showConfirmDialog(null, "Plain Game! The Game Is Over!\n"
+"Do you want to quit?","提示",JOptionPane.YES_NO_OPTION);
ISOVER = true;
if (response == 0) System.exit(0); // choose "Yes" than quit;
}
}
}
其他棋子信息
@Override
public void mousePressed(MouseEvent e) {
// TODO: implement this java.awt.event.MouseListener method;
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO: implement this java.awt.event.MouseListener method;
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO: implement this java.awt.event.MouseListener method;
}
@Override
public void mouseExited(MouseEvent e) {
// TODO: implement this java.awt.event.MouseListener method;
}
}
}
图片显示
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~