Java 棋盘游戏 - 点击事件处理和游戏结束逻辑
public void mousePressed(MouseEvent e){
//游戏结束时,不再能下
if (gameOver || paused) {
JOptionPane.showMessageDialog(this, '当前处于暂停模式或游戏已结束,请重新开始游戏');
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;
paused = true;
}
isBlack=!isBlack;
}
//覆盖mouseListener的方法
public void mouseClicked(MouseEvent e) {
//判断游戏是否暂停,如果暂停则不进行下棋
if (paused) {
JOptionPane.showMessageDialog(this, '游戏已结束,请重新开始游戏', '提示', JOptionPane.INFORMATION_MESSAGE);
return;
}
}
这段代码展示了 Java 棋盘游戏中的鼠标点击事件处理,以及如何实现游戏结束后的逻辑。
当游戏结束时 (gameOver 为 true) 或者游戏处于暂停状态 (paused 为 true) 时,点击棋盘将无法进行下棋操作,并弹出提示框提醒玩家游戏已经结束或当前处于暂停状态。
当玩家获胜时 (isWin() 返回 true),代码会弹出提示框告知玩家获胜,并设置游戏结束标志 (gameOver 为 true) 和暂停标志 (paused 为 true)。这确保了游戏结束后,玩家无法继续下棋,同时保留了暂停/继续按钮的功能。
同时,mouseClicked 方法用于处理鼠标点击事件,当游戏处于暂停状态时 (paused 为 true),点击棋盘将不会进行任何操作,并弹出提示框告知玩家游戏已结束。
这段代码清晰简洁地展示了如何通过设置游戏结束标志和暂停标志来控制游戏状态,并使用 JOptionPane 来弹出提示框,为玩家提供良好的用户体验。
原文地址: https://www.cveoy.top/t/topic/oCGs 著作权归作者所有。请勿转载和采集!