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('悔棋');
    //将五个菜单项添加到菜单上
    sysMenu.add(startMenuItem);
    sysMenu.add(exitMenuItem);
    sysMenu.add(backMenuItem);
    //初始化按钮事件监听器内部类
    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); //将游戏暂停
        }
    });
    //将继续按钮添加事件监听
    resumeButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            chessBoard.setPaused(false); //将游戏继续
        }
    });
    //将工具面板布局到界面”南方“也就是下方
    add(toolbar,BorderLayout.SOUTH);
    add(chessBoard);//将面板对象添加到窗体上
    //设置界面关闭事件
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //setSize(800,800);
    pack();//自适应大小
}

//在 ChessBoard 类中添加 setPaused 方法
public void setPaused(boolean paused) {
    this.paused = paused;
}

//在 paintComponent 方法中加入判断游戏是否暂停
public void paintComponent(Graphics g) {
    super.paintComponent(g);
    for(int i=0;i<ROWS;i++) {
        for(int j=0;j<COLS;j++) {
            ...
        }
    }
    //判断游戏是否暂停,如果暂停则不进行绘制
    if(!paused) {
        if(gameOver) {
            ...
        } else {
            ...
        }
    }
}
Java五子棋游戏:添加暂停和继续功能

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

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