Java Swing 游戏框架 MyFrame 类代码解析

本代码展示了一个名为 MyFrame 的 Java Swing 游戏框架的类,该类负责创建游戏窗口并处理游戏逻辑。

构造函数

public MyFrame() throws Exception {
    int i = modelChoose();
    if (i == -1) {
        System.exit(0); // 程序退出
    }
    myPanel = new MyPanel(i);
    new Thread(myPanel).start();
    this.setSize(1300, 820);
    this.add(myPanel);
    this.addKeyListener(myPanel);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);
    // 监听关闭窗口事件
    this.addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosing(WindowEvent e) {
            try {
                Vector<EnemyTank> tanks = myPanel.getEnemyTanks();
                for (int i = 0; i < tanks.size(); i++) {
                    tanks.get(i).getShots().clear();
                }
                // 对象输出流
                oos = new ObjectOutputStream(new FileOutputStream(new File(MyFrame.class.getResource('../recorder1.txt').toURI())));
                // 将记录对象 Recorder 写到文件
                oos.writeObject(myPanel.getRecorder());
            } catch (Exception e1) {
                e1.printStackTrace();
            } finally {
                if (oos != null) {
                    try {
                        oos.close();
                    } catch (IOException ioException) {
                        ioException.printStackTrace();
                    }
                }
            }
        }
    });
}

构造函数主要执行以下操作:

  1. 调用 modelChoose() 方法选择游戏关卡。
  2. 根据选择的关卡创建 MyPanel 对象,并将其添加到 JFrame 中。
  3. 启动 MyPanel 线程。
  4. 设置窗口大小和可见性。
  5. 添加键盘监听器和窗口关闭监听器。

窗口关闭监听器在用户关闭窗口时触发,用于清理游戏资源,并将游戏进度保存到文件。

关卡选择方法

private int modelChoose() {
    Object[] options = {'模式一', '模式二', '模式三', '退出'};
    int m = JOptionPane.showOptionDialog(null, '请选择游戏模式', '选择模式', JOptionPane.YES_NO_OPTION,
            JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
    if (m == 3) {
        return -1;
    } else {
        return m;
    }
}

modelChoose() 方法使用 JOptionPane 弹出对话框,让用户选择游戏模式。如果用户选择“退出”,则返回 -1,否则返回用户选择的模式编号。

代码解析总结

本代码示例展示了如何使用 Java Swing 创建游戏界面、添加面板、设置窗口大小和处理窗口关闭事件。通过对代码的解析,我们可以更好地理解 Java Swing 游戏框架的实现机制。

Java Swing 游戏框架 MyFrame 类代码解析

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

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