メイズゲームでは、勝つために特定の順序でキーを収集する必要があります。ゲームの最後に、プレーヤーがその特定の順序でキーを収集できなかった場合、プレイヤーはゲームを再開(Rを押す)または終了(Qを押す)を選択することができます。Javaゲームを再起動する際のトラブル
問題は、プレイヤーが再起動を選択したときに新しいゲームがポップアップする、はい、古いゲームまたは前のゲームがまだ実行中であることです。 、ここで
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);
}
は、プレイヤーが(これは
Inventory
クラスに位置しており、キーの正しい順序を収集し、プレイヤーが間違っている場合
WrondEndState
を呼び出すかどうかをチェックするコードです:
はここLauncher
クラスです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);
}
}
そして、これは一部またはプレイヤーが何をしたいのかチェックしWrondEndState
(再起動またはであります)終了:このクラスであれば、他のインサイド
handler.getKeyManager().restart
.restart
が重要です:
restart = keys[KeyEvent.VK_R];
そしてそうはhandler.getKeyManager().exit
で.exit
です:
exit = keys[KeyEvent.VK_Q];
public void tick(){
if(handler.getKeyManager().restart)
try {
gameStart();
} catch(Exception ioe){
System.out.print("Error."); }
if(handler.getKeyManager().exit)
System.exit(0);
}
これはです方法のif-elseコードが呼んでいる:
public void gameStart() 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); // looping as long as this thread is alive
}
}
を助け、あなたは助けるために、コードの多くを必要とする場合は教えてください。
正直、あなたのコードをあまりにも多く追加したと思います。あなたの質問を読んで、それは非常に多くのコード行で少し難しいデバッグです。ユーザーがWrongEndStateで終了したかどうかを確認し、RestartまたはQui、tのいずれかのユーザーの入力を確認して、新しいゲームを開始する場所を確認してください。 –
多かれ少なかれコードが必要かどうかを教えてください。ピジョン氏に感謝します。 – Wisteria
'handler.getKeyManager()。restart'はメソッドまたはキーを再起動しますか?また、ゲームが終了したときに、どのように閉じることが重要です。 – nullpointer