Java MyFrame 类构造方法解析 - 游戏模式选择、面板创建、事件监听
这段代码定义了一个 MyFrame 类的构造方法,构造方法中首先调用了 modelChoose() 方法来选择游戏模式,如果返回 -1 则程序退出。接着创建了一个 MyPanel 对象,并将其放置在 MyFrame 窗口中,同时将 MyPanel 对象设置为键盘监听器。然后设置 MyFrame 的大小、关闭操作,并将其设置为可见。
在 MyFrame 窗口关闭时,会将敌方坦克的子弹清空,并将游戏记录对象 Recorder 写入文件 'recorder1.txt' 中。最后关闭对象输出流。
具体代码解析如下:
public MyFrame() throws Exception {
// 选择游戏模式
int i = modelChoose();
if (i == -1) {
System.exit(0); // 程序退出
}
// 创建 MyPanel 对象
myPanel = new MyPanel(i);
// 启动 MyPanel 线程
new Thread(myPanel).start();
// 设置 MyFrame 大小
this.setSize(1300, 820);
// 将 MyPanel 添加到 MyFrame 窗口中
this.add(myPanel);
// 设置 MyPanel 为键盘监听器
this.addKeyListener(myPanel);
// 设置关闭操作
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置 MyFrame 可见
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();
}
}
}
}
});
}
代码功能概述:
- 游戏模式选择: 调用
modelChoose()方法选择游戏模式,如果返回 -1 则程序退出。 - 面板创建: 创建 MyPanel 对象并将其放置在 MyFrame 窗口中。
- 键盘监听: 将 MyPanel 对象设置为键盘监听器,以便处理键盘事件。
- 窗口关闭事件监听: 在窗口关闭时,清空敌方坦克的子弹,并将游戏记录对象 Recorder 写入文件 'recorder1.txt' 中。
代码细节说明:
modelChoose()方法:该方法用于选择游戏模式,具体实现需要根据实际情况编写。MyPanel类:该类负责游戏面板的显示和控制,具体实现需要根据实际情况编写。getEnemyTanks()方法:该方法用于获取敌方坦克列表。getShots()方法:该方法用于获取敌方坦克子弹列表。getRecorder()方法:该方法用于获取游戏记录对象。oos:对象输出流,用于将游戏记录对象写入文件。recorder1.txt:存储游戏记录的文件。
原文地址: https://www.cveoy.top/t/topic/oZRJ 著作权归作者所有。请勿转载和采集!