Java五子棋小游戏代码
Java五子棋小游戏是一款经典的策略性棋类游戏,具有优雅的规则和激烈的竞争性,受到广泛的喜爱和欢迎。本文主要介绍Java五子棋小游戏的代码实现,包括游戏界面的设计、游戏规则的实现和胜负判断等相关内容。
游戏界面设计
Java五子棋小游戏的界面设计需要先定义一个游戏窗口,并在窗口上绘制棋盘。棋盘可以用二维数组来表示,每个数组元素代表一个棋盘交叉点,可以用黑白两个颜色表示两方棋手下的棋子。具体的代码如下:
```
import javax.swing.*;
import java.awt.*;
public class Gobang extends JFrame {
private JPanel chessBoardPanel;
private JButton startButton;
private JButton restartButton;
private JButton backButton;
private ChessBoard chessBoard;
public Gobang() {
setTitle("Java五子棋小游戏");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(700, 700);
setLocationRelativeTo(null);
chessBoard = new ChessBoard();
chessBoardPanel = new JPanel(new BorderLayout());
chessBoardPanel.add(chessBoard, BorderLayout.CENTER);
JPanel buttonPanel = new JPanel(new GridLayout(1,3));
startButton = new JButton("开始游戏");
restartButton = new JButton("重新开始");
backButton = new JButton("悔棋");
buttonPanel.add(startButton);
buttonPanel.add(restartButton);
buttonPanel.add(backButton);
Container pane = getContentPane();
pane.setLayout(new BorderLayout());
pane.add(chessBoardPanel, BorderLayout.CENTER);
pane.add(buttonPanel, BorderLayout.SOUTH);
setVisible(true);
}
public static void main(String[] args) {
new Gobang();
}
class ChessBoard extends JPanel {
private int[][] chessBoard;
private int ROWS = 15;
private int COLS = 15;
private int GRID_SIZE = 40;
public ChessBoard() {
chessBoard = new int[ROWS][COLS];
setPreferredSize(new Dimension(600, 600));
public void paintComponent(Graphics g) {
super.paintComponent(g);
for (int i = 0; i <= ROWS; i++) {
g.drawLine(20, 20 + GRID_SIZE * i, 620, 20 + GRID_SIZE * i);
g.drawLine(20 + GRID_SIZE * i, 20, 20 + GRID_SIZE * i, 620);
}
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
if (chessBoard[i][j] == 1) {
g.setColor(Color.BLACK);
g.fillOval(20 + i * GRID_SIZE - GRID_SIZE/2, 20 + j * GRID_SIZE - GRID_SIZE/2, GRID_SIZE, GRID_SIZE);
} else if (chessBoard[i][j] == 2) {
g.setColor(Color.WHITE);
}
}
在上述代码中,我们定义了一个Gobang类,它继承了JFrame类,并在其中定义了一个棋盘面板ChessBoard。棋盘面板是一个继承自JPanel的类,用于绘制游戏棋盘和棋子。具体实现细节可以参考注释。
游戏规则实现
Java五子棋小游戏的规则比较简单,两个棋手轮流在棋盘上下棋子,每次只能下一个棋子,先在横、竖或斜线上连成五个棋子的一方获胜。这里我们使用一个二维数组来表示棋盘状态,其中0表示该位置为空,1表示该位置有黑子,2表示该位置有白子。我们定义一个棋手类Player,用于表示棋手的信息和动作,具体代码如下:
class Player {
private String name;
private int playerType;
private int[][] board;
public Player(String name, int playerType, int[][] board) {
this.name = name;
this.playerType = playerType;
this.board = board;
public void play(int x, int y) {
board[x][y] = playerType;
public boolean checkWin(int x, int y) {
int count = 1;
int i, j;
// 横向
i = x - 1;
j = y;
while (i >= 0 && board[i][j] == playerType) {
count++;
i--;
i = x + 1;
while (i < ROWS && board[i][j] == playerType) {
i++;
if (count >= 5) return true;
// 竖向
count = 1;
i = x;
j = y - 1;
while (j >= 0 && board[i][j] == playerType) {
j--;
j = y + 1;
while (j < COLS && board[i][j] == playerType) {
j++;
// 斜向
while (i >= 0 && j >= 0 && board[i][j] == playerType) {
while (i < ROWS && j < COLS && board[i][j] == playerType) {
// 反斜向
while (i >= 0 && j < COLS && board[i][j] == playerType) {
while (i < ROWS && j >= 0 && board[i][j] == playerType) {
return false;
在上述代码中,我们定义了一个Player类,它包含了棋手的名字、类型和棋盘状态等信息。Player类中的play方法用于下棋,checkWin方法用于判断该棋手是否获胜。
胜负判断
判断胜负是Java五子棋小游戏的重点,需要通过分析棋盘状态来确定胜者。我们可以通过遍历棋盘交叉点,找出横、竖、斜线上连成五个棋子的情况。如果发现其中一方连成五个棋子,则该方获胜。具体的实现细节可以参考上述代码中的Player类。
网友留言(0)