我目前正在制作一个小型2D游戏,因为我很懒,并且不想总是将最新版本的游戏发送给我的朋友,我制作了一个保持游戏的发射器如果版本过时,则从FTP服务器下载最新版本进行更新。这很好用。但那时游戏本身就存在问题。
这就是我开始游戏的方式:
File file = new File(directory + sep + "thegalidor.jar");
Desktop desktop = Desktop.getDesktop();
if(!isOffline){ //If the player has no connection they can still play the game in offline-mode
if(!txtUser.getText().isEmpty() && txtPw.getPassword() != null){
if(Downloader.getCanLogin(txtUser.getText(), txtPw.getPassword())){ //The player has to login first, if they have a connection to the FTP-Server
try {
desktop.open(file);
System.exit(0);
} catch (IOException e) {
e.printStackTrace();
}
}
}
} else {
try {
desktop.open(file);
System.exit(0);
} catch(IOException e){
e.printStackTrace();
}
}
dircetory变量设置为user.home +保存游戏文件的目录.sep变量只是特定于操作系统的file.seperator。游戏启动没有任何问题,我可以像它应该的那样玩游戏。我可以加载保存文件或启动新的保存文件。但是当我试图保存游戏时它只是冻结而没有任何输出。
这是我的保存方法:
public static void saveGame() {
URL resource = Main.class.getResource(saveFile);
File file;
BufferedWriter bw;
try {
file = new File(resource.toURI());
file.delete();
file.createNewFile();
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
Level level = gsManager.getClientLevel();
bw.write(level.getPath());
bw.newLine();
bw.write(level.getPlayer().getXPos() + " " + level.getPlayer().getYPos() + " " + level.getPlayer().getHealth());
bw.close();
} catch (IOException | URISyntaxException e) {
e.printStackTrace();
}
}
保存文件位于游戏罐中,当我在没有启动器的情况下启动游戏时,一切都按预期工作,只有当我使用启动器启动它然后想要保存我的游戏时它才会冻结。 有什么方法可以阻止我的游戏一直冻结吗?