重启java游戏的麻烦

时间:2016-11-30 04:11:18

标签: java

我们创建了一个迷宫游戏,其中玩家需要按特定顺序收集钥匙才能获胜。在游戏结束时,如果玩家未能按特定顺序收集按键,则玩家可以选择重新启动(按R)或退出(按Q)游戏。

问题是当玩家选择重新启动时,会弹出一个新游戏,是的,但旧游戏或之前的游戏仍在运行。

以下是Launcher类:

public class Launcher {
public static void main(String[] args) throws Exception{

   Game game = new Game("DUNGEON ESCAPE", 500,500);
   game.start();

    AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File("C:\\Users\\user\\Documents\\NetBeansProjects\\ThisMaze\\src\\OurMaze\\BGM.wav"));
    Clip clip = AudioSystem.getClip();
    clip.open(inputStream);
    clip.loop(Clip.LOOP_CONTINUOUSLY);
    Thread.sleep(10000000); 

}

这段代码检查玩家是否收集了正确的密钥顺序,并在玩家错误时调用WrondEndState(这位于Inventory类,与{{1}分开}和Launcher类:

WrongEndState

这是检查玩家想做什么(重启或退出)的部分或public void addItem(Item item){ // R - 0 O - 1 Y - 2 G - 3 B - 4 I - 5 V - 6 KeyQueue.add(item.getId()); Iterator<Integer> kq = KeyQueue.iterator(); if(KeyQueue.size() == 7){ while(kq.hasNext()){ if(! (BaseQueue.poll() == KeyQueue.poll()) ) { State.setState(WrongEndState); break; } else State.setState(RightEndState); } }

在此课程中的if-else内WrondEndState handler.getKeyManager().restart是关键:

.restart

restart = keys[KeyEvent.VK_R];中的.exit也是如此:

handler.getKeyManager().exit

exit = keys[KeyEvent.VK_Q];

这是if-else代码调用的public void tick(){ if(handler.getKeyManager().restart) try { gameStart(); } catch(Exception ioe){ System.out.print("Error."); } if(handler.getKeyManager().exit) System.exit(0); } 方法:

gameStart();

请帮助并告诉您是否需要更多代码来提供帮助。

1 个答案:

答案 0 :(得分:1)

如果要重新启动,请不要创建(X/Y/3/B/Z)。多数民众赞成没有成功。

当游戏开始时,创建一个很好的新游戏实例。开始调用哪个很好。在游戏中,有几种东西,状态,物体,它们都具有初始状态/值。

假设你有一个游戏,你所要做的就是向前奔跑,跳跃。在当前比赛中有一个得分和时间,球员有位置等等。如果你死了你想要它重新启动。您没有new Game创建其他游戏 你要做的就是将一切恢复到初始状态/值。

这个fictianal游戏resetGame方法看起来像这样:

new Game

查找游戏中应该在重新启动时恢复到初始值的所有内容。

这是非常简化的,但我希望它是可以理解的。