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);//显示主框架

    }
}

代码解释:

  1. 暂停按钮监听器:

    • 当点击暂停按钮时,调用 chessBoard.setPaused(true) 将游戏状态设置为暂停。
    • 使用 JOptionPane.showMessageDialog 弹出提示框,显示 '游戏已暂停'。
  2. 继续按钮监听器:

    • 当点击继续按钮时,调用 chessBoard.setPaused(false) 将游戏状态设置为继续。
    • 使用 JOptionPane.showMessageDialog 弹出提示框,显示 '游戏已继续'。

注意:

  • 此代码需要 ChessBoard 类中定义 setPaused(boolean paused) 方法来设置游戏暂停或继续状态。
  • 你需要根据自己的 ChessBoard 类实现暂停和继续功能,例如在 ChessBoard 中记录当前游戏状态,并在 setPaused 方法中根据传入参数更新状态。
  • 确保在 ChessBoard 类中根据游戏状态进行相应的处理,比如暂停时停止游戏逻辑,继续时恢复游戏逻辑。

通过以上代码和解释,你可以实现五子棋游戏的暂停和继续功能。

Java 五子棋游戏:暂停与继续功能实现

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

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