2017-11-11 24 views
0

私はブラウザゲームを作っており、私のプロジェクトの関連部分はこのように設定されています。 ゲームロジックという名前のGameという名前空間が1つあります。 私は、キーの押下を処理するMain(後で変更されるかもしれない)と呼ばれる別の名前空間と、プログラムの制御フローを持っています。私の男はrepeatingFuncに死亡した場合に簡略化が関数の一部だけをもう一度実行する

const init =() => { 
    func1(); 
    func2(); 
    func3(); 
    setInterval(repeatingFunc, 100); 
}; 

のようになりますならば、私は間隔をクリアし、ゲームオーバーですゲーム内

、私は(関数initを持っています)。主に は、私はゲームは、ユーザーがゲームオーバーになった後、再び開始するために、任意のキーを押すように促すメッセージが表示されます

document.onkeydown = (event) => { 
     const keyCode = event.keyCode; 

     if (Game.getIsGameOver() === true) { 
      Game.setIsGameOver(false); 
      Game.resetValues(); 
      Game.init(); 
     } 

     if (Game.getIsPlaying() === false) { 
      Game.setIsPlaying(true); 
     } 

     // More code that handles key presses, etc 
    } 

のようなものを持っているし、キーが押された場合、Game.init()が呼び出されます。

私の質問は以下の通りです。ページが最初にロードされたとき、すなわち最初のゲームの後のすべてのゲームについて、最初の呼び出しを除くGame.init()へのすべての呼び出しに対して、私はfunc1()を実行したくありません。 func1()は、ページが初めて読み込まれたときに必要なものであり、その後のゲームの再起動では決してないとします。 func1()以外のすべてのinit()を再度実行するにはどうすればよいですか?

編集:もちろん、func1()をメインから取り出して、一度呼び出されるだけの関数に入れてもいいですが、別の方法がありますか?

答えて

0

オプション1:

const startGame =() => { 
    func2(); 
    func3(); 
    setInterval(repeatingFunc, 100); 
}; 

const init =() => { 
    func1(); 
    startGame(); 
}; 

そして今、次のことができます。

func1()を含み、そしてinit()内で呼び出すと、ユーザーは再びプレイしたい場合はありません別のstartGame()メソッドを追加します。初回はGame.init();、リプレイはGame.startGame();となります。

オプション2

リプレイのためのフラグを使用します

const init = (replay) => { 
    replay || func1(); 
    func2(); 
    func3(); 
    setInterval(repeatingFunc, 100); 
}; 

をそして今、あなたはリプレイにGame.init(); 1回目かGame.init(true);を呼び出すことができます。

関連する問題