我们创建了一个迷宫游戏,其中玩家需要按特定顺序收集钥匙才能获胜。在游戏结束时,如果玩家未能按特定顺序收集按键,则玩家可以选择重新启动(按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();
请帮助并告诉您是否需要更多代码来提供帮助。
答案 0 :(得分:1)
如果要重新启动,请不要创建(X/Y/3/B/Z)
。多数民众赞成没有成功。
当游戏开始时,创建一个很好的新游戏实例。开始调用哪个很好。在游戏中,有几种东西,状态,物体,它们都具有初始状态/值。
假设你有一个游戏,你所要做的就是向前奔跑,跳跃。在当前比赛中有一个得分和时间,球员有位置等等。如果你死了你想要它重新启动。您没有new Game
创建其他游戏
你要做的就是将一切恢复到初始状态/值。
这个fictianal游戏resetGame方法看起来像这样:
new Game
查找游戏中应该在重新启动时恢复到初始值的所有内容。
这是非常简化的,但我希望它是可以理解的。