public void mousePressed(MouseEvent e){
    //游戏结束时,不再能下
    if (gameOver) {
        JOptionPane.showMessageDialog(this, '游戏已结束,请重新开始', '提示', JOptionPane.INFORMATION_MESSAGE);
        return;
    }
    //游戏暂停时,不能下棋
    if (paused) {
        JOptionPane.showMessageDialog(this, '当前处于暂停模式,请点击继续按钮继续游戏', '提示', JOptionPane.INFORMATION_MESSAGE);
        return;
    }
    String colorName=isBlack?'黑棋':'白棋';
    //将鼠标点击的坐标位置转换成网格索引
    xIndex=(e.getX()-MARGIN+GRID_SPAN/2)/GRID_SPAN;
    yIndex=(e.getY()-MARGIN+GRID_SPAN/2)/GRID_SPAN;
    //落在棋盘外不能下
    if(xIndex<0||xIndex>ROWS||yIndex<0||yIndex>COLS) {
        JOptionPane.showMessageDialog(this, '该位置不在界面内,请在界面内下棋');
        return;
    }
    //如果点击的位置已经有棋子存在,不能下
    if(findChess(xIndex,yIndex)) {
        JOptionPane.showMessageDialog(this, '该位置已经有棋子,请重新选择位置下棋!');
        return;
    }
    //可以进行时的处理
    Point ch=new Point(xIndex,yIndex,isBlack?Color.black:Color.white);
    chessList[chessCount++]=ch;
    repaint();//通知系统重新绘制
    //如果胜出则给出提示信息,不能继续下棋
    if(isWin()){
        String msg=String.format('恭喜,%s赢了!', colorName);
        JOptionPane.showMessageDialog(this, msg);
        gameOver=true;
    }
    isBlack=!isBlack;
}
//覆盖mouseListener的方法
public void mouseClicked(MouseEvent e) {
    //判断游戏是否暂停,如果暂停则不进行下棋
    if (paused) {
        JOptionPane.showMessageDialog(this, '游戏已暂停,点击继续按钮继续游戏', '提示', JOptionPane.INFORMATION_MESSAGE);
        return;
    }
}

代码示例中,mousePressed 方法处理鼠标按下事件,根据游戏状态决定是否允许下棋。mouseClicked 方法处理鼠标点击事件,并提示用户游戏已暂停。

主要功能:

  1. 游戏结束状态处理: gameOver 变量控制游戏结束状态。当游戏结束时,鼠标点击事件将被忽略,并提示用户重新开始游戏。
  2. 游戏暂停状态处理: paused 变量控制游戏暂停状态。当游戏暂停时,鼠标点击事件将被忽略,并提示用户点击继续按钮继续游戏。
  3. 鼠标点击位置判断: 代码判断鼠标点击位置是否在棋盘范围内,并判断该位置是否已经有棋子。
  4. 游戏胜利判断: isWin() 方法判断游戏是否结束,并给出提示信息。

改进点:

  • gameOverpaused 状态的判断放在 mousePressed 方法的开头,方便代码阅读和维护。
  • 将提示信息统一放到 JOptionPane.showMessageDialog 方法中,避免重复代码。
  • mouseClicked 方法的代码简化,只处理游戏暂停状态。

使用说明:

  • 该代码示例需要在 Java 环境中运行。
  • 需要添加 javax.swing 包。
  • 需要实现 findChessisWin 方法,以实现具体的游戏逻辑。

注意:

  • 代码示例中使用的是 JOptionPane 类,它是一个 Swing 组件,用于显示消息对话框。
  • 代码示例中的 ROWSCOLSMARGINGRID_SPAN 都是需要在代码中定义的常量。
  • 代码示例中的 chessList 数组用于存储棋子信息。
  • 代码示例中的 isBlack 变量用于记录当前下棋方颜色。

总结:

该代码示例展示了 Java 棋盘游戏中鼠标点击事件的处理,以及游戏状态(暂停、结束)的管理。代码简洁易懂,并包含了详细的注释,方便读者理解和学习。

Java 棋盘游戏:鼠标点击事件处理和游戏状态管理

原文地址: https://www.cveoy.top/t/topic/oLxL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录