Java五子棋游戏:添加暂停和继续功能
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 {
...
}
}
}
原文地址: https://www.cveoy.top/t/topic/ozQR 著作权归作者所有。请勿转载和采集!