# 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实践五子棋和中国象棋游戏,棋盘,棋子绘制,输赢判定重置棋盘,单机博弈。 [//]: # (![img.png](src/main/resources/image/img.png))
#### 使用说明 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)