# game
**Repository Path**: guojun007/game
## Basic Information
- **Project Name**: game
- **Description**: JavaSE实践五子棋和中国象棋游戏,棋盘,棋子绘制,输赢判定重置棋盘,单机博弈。
- **Primary Language**: Java
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 1
- **Created**: 2024-06-07
- **Last Updated**: 2025-08-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# game
#### 介绍
JavaSE实践五子棋和中国象棋游戏,棋盘,棋子绘制,输赢判定重置棋盘,单机博弈。
[//]: # ()
#### 使用说明
1. 启动类 [Main.java](src%2Fmain%2Fjava%2Fcom%2Fxq%2Fcn%2FMain.java), 面板类 [Panel.java](src%2Fmain%2Fjava%2Fcom%2Fxq%2Fcn%2Fviews%2FPanel.java)绘制棋盘和玩法,实体类 [ChessPiecesNode.java](src%2Fmain%2Fjava%2Fcom%2Fxq%2Fcn%2Fbean%2FChessPiecesNode.java)
2. 启动类 [Main.java](src%2Fmain%2Fjava%2Fcom%2Fxq%2Fcn%2FMain.java)中的 **listener** 方法监听五子棋结束状态
```java
//监听游戏结束自动重绘面板
public static void listener(Panel panel, JFrame jFrame) {
panel.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getPropertyName().equals("status") && evt.getNewValue() != null && (Boolean) evt.getNewValue()) {
com.xq.cn.views.Panel panelNew = new Panel(TypeEnum.GOMOKU.getType(), 800, 800, 15, 15);
jFrame.add(new JLabel("This is Panel 2"));
jFrame.remove(panel);
jFrame.add(panelNew);
jFrame.revalidate(); // 重新验证布局
jFrame.repaint();// 请求重绘组件
listener(panelNew, jFrame);
}
}
});
}
```
3. 面板类 [Panel.java](src%2Fmain%2Fjava%2Fcom%2Fxq%2Fcn%2Fviews%2FPanel.java)绘制棋盘和玩法
```java
//获取任意节点连成五子的所有可能
public List arithmeticSequence(Integer id, Integer step) {
//1、等差步长为step的等差数列
List listStep = new ArrayList<>();
for (int i = 1; i <= 5; i++) {
listStep.add(id + ((i - 1) * step));
}
for (int i = 1; i <= 5; i++) {
int num = id - ((i - 1) * step);
if (num <= 0) {
break;
}
listStep.add(num);
}
eturn listStep;
}
```
4. 实体类 [ChessPiecesNode.java](src%2Fmain%2Fjava%2Fcom%2Fxq%2Fcn%2Fbean%2FChessPiecesNode.java)