Java 五子棋游戏:暂停与继续功能实现
public class StartChessJFrame extends JFrame {
private ChessBoard chessBoard;
private JPanel toolbar;
private JButton startButton, backButton, exitButton, pauseButton, resumeButton;
private JMenuBar menuBar;
private JMenu sysMenu;
private JMenuItem startMenuItem, exitMenuItem, backMenuItem, pauseMenuItem, resumeMenuItem;
//重新开始,退出,和悔棋菜单项
public StartChessJFrame() {
setTitle('五子棋');//设置标题
chessBoard = new ChessBoard();
Container contentPane = getContentPane();
contentPane.add(chessBoard);
chessBoard.setOpaque(true);
//创建和添加菜单
menuBar = new JMenuBar();//初始化菜单栏
sysMenu = new JMenu('游戏');//初始化菜单
//初始化菜单项
startMenuItem = new JMenuItem('再来一局');
exitMenuItem = new JMenuItem('退出');
backMenuItem = new JMenuItem('悔棋');
pauseMenuItem = new JMenuItem('暂停');
resumeMenuItem = new JMenuItem('继续');
//将五个菜单项添加到菜单上
sysMenu.add(startMenuItem);
sysMenu.add(exitMenuItem);
sysMenu.add(backMenuItem);
sysMenu.add(pauseMenuItem);
sysMenu.add(resumeMenuItem);
//初始化按钮事件监听器内部类
MyItemListener lis = new MyItemListener();
//将五个菜单注册到事件监听器上
this.startMenuItem.addActionListener(lis);
backMenuItem.addActionListener(lis);
exitMenuItem.addActionListener(lis);
menuBar.add(sysMenu);//将系统菜单添加到菜单栏上
setJMenuBar(menuBar);//将menuBar设置为菜单栏
toolbar = new JPanel();//工具面板实例化
//五个按钮初始化
startButton = new JButton('再来一局');
exitButton = new JButton('退出');
backButton = new JButton('悔棋');
pauseButton = new JButton('暂停');
resumeButton = new JButton('继续');
//将工具面板按钮用FlowLayout布局
toolbar.setLayout(new FlowLayout(FlowLayout.LEFT));
//将五个按钮添加到工具面板
toolbar.add(startButton);
toolbar.add(exitButton);
toolbar.add(backButton);
toolbar.add(pauseButton);
toolbar.add(resumeButton);
//将五个按钮注册监听事件
startButton.addActionListener(lis);
exitButton.addActionListener(lis);
backButton.addActionListener(lis);
//暂停按钮监听器
pauseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
chessBoard.setPaused(true); //将游戏暂停
JOptionPane.showMessageDialog(StartChessJFrame.this, '游戏已暂停'); //弹出提示框
}
});
//继续按钮监听器
resumeButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
chessBoard.setPaused(false); //将游戏继续
JOptionPane.showMessageDialog(StartChessJFrame.this, '游戏已继续'); //弹出提示框
}
});
//将工具面板布局到界面”南方“也就是下方
add(toolbar, BorderLayout.SOUTH);
add(chessBoard);//将面板对象添加到窗体上
//设置界面关闭事件
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//setSize(800,800);
pack();//自适应大小
}
private class MyItemListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
Object obj = e.getSource();//获得事件源
if (obj == StartChessJFrame.this.startMenuItem || obj == startButton) {
//再来一局
//JFiveFrame.this内部类引用外部类
System.out.println('再来一局');
chessBoard.restartGame();
} else if (obj == exitMenuItem || obj == exitButton)
System.exit(0);
else if (obj == backMenuItem || obj == backButton) {
System.out.println('悔棋...');
chessBoard.goback();
}
}
}
public static void main(String[] args) {
StartChessJFrame f = new StartChessJFrame();//创建主框架
f.setVisible(true);//显示主框架
}
}
代码解释:
-
暂停按钮监听器:
- 当点击暂停按钮时,调用
chessBoard.setPaused(true)将游戏状态设置为暂停。 - 使用
JOptionPane.showMessageDialog弹出提示框,显示 '游戏已暂停'。
- 当点击暂停按钮时,调用
-
继续按钮监听器:
- 当点击继续按钮时,调用
chessBoard.setPaused(false)将游戏状态设置为继续。 - 使用
JOptionPane.showMessageDialog弹出提示框,显示 '游戏已继续'。
- 当点击继续按钮时,调用
注意:
- 此代码需要
ChessBoard类中定义setPaused(boolean paused)方法来设置游戏暂停或继续状态。 - 你需要根据自己的
ChessBoard类实现暂停和继续功能,例如在ChessBoard中记录当前游戏状态,并在setPaused方法中根据传入参数更新状态。 - 确保在
ChessBoard类中根据游戏状态进行相应的处理,比如暂停时停止游戏逻辑,继续时恢复游戏逻辑。
通过以上代码和解释,你可以实现五子棋游戏的暂停和继续功能。
原文地址: https://www.cveoy.top/t/topic/ozTi 著作权归作者所有。请勿转载和采集!