1つのcase条件が満たされた後、switchステートメントでcaseを変更するにはどうすればよいですか?

猟師

Javascript / jQueryでケースを切り替える方法を見つけようとしています。私は、プレイヤーが「フェーズ」を終了するまでサイコロを振る必要があるサイコロゲームを作成しています。「フェーズ」が終了すると、次の「フェーズ」に移動し、前の「フェーズ」が現在の「フェーズ」に干渉することはありません。「フェーズ1」から始まり「フェーズ2」まで続くいくつかの異なる「フェーズ」があり、最後のフェーズまで続きます。「フェーズ」を処理する方法はありますか?ここでswitchステートメントを試しましたが成功しませんでした。switchステートメントが機能しない場合、どうなりますか?

//Start of Dice Code
var die1Array = [];
var die2Array = [];
var die3Array = [];

var die1 = function() {
    var roll1 = Math.floor(Math.random() * 6) + 1;
    if(roll1 === 1) {
        die1Array.push(1);
    }
    else if(roll1 === 2) {
        die1Array.push(2);
    }
    else if(roll1 === 3) {
        die1Array.push(3);
    }
    else if(roll1 === 4) {
        die1Array.push(4);
    }
    else if(roll1 === 5) {
        die1Array.push(5);
    }
    else if(roll1 === 6) {
        die1Array.push(6);
    }
};

var die2 = function() {
    var roll2 = Math.floor(Math.random() * 6) + 1;
    if(roll2 === 1) {
        die2Array.push(1);
    }
    else if(roll2 === 2) {
        die2Array.push(2);
    }
    else if(roll2 === 3) {
        die2Array.push(3);
    }
    else if(roll2 === 4) {
        die2Array.push(4);
    }
    else if(roll2 === 5) {
        die2Array.push(5);
    }
    else if(roll2 === 6) {
        die2Array.push(6);
    }
};

var die3 = function() {
    var roll3 = Math.floor(Math.random() * 6) + 1;
    if(roll3 === 1) {
        die3Array.push(1);
    }
    else if(roll3 === 2) {
        die3Array.push(2);
    }
    else if(roll3 === 3) {
        die3Array.push(3);
    }
    else if(roll3 === 4) {
        die3Array.push(4);
    }
    else if(roll3 === 5) {
        die3Array.push(5);
    }
    else if(roll3 === 6) {
        die3Array.push(6);
    }
};
//End of Dice Code


var main = function() {

    $("#roll").on("click", die1);
    $("#roll").on("click", die2);
    $("#roll").on("click", die3);
    $("#roll").on("click", die4);
    $("#roll").on("click", die5);
    $("#roll").on("click", die6);

    //Where I want to switch between cases.
    //Once Phase 1's condition (the if statement) is met, I want to switch to Phase 2.
    var lvls = 1;
    switch(lvls) {
        case 1:
            alert("Phase 1");
            $("#submit").click(function() {
                if((die1Array.slice(-1)=="1"||die2Array.slice(-1)=="1"||die3Array.slice(-1)=="1")&&(die1Array.slice(-1)=="2"||die2Array.slice(-1)=="2"||die3Array.slice(-1)=="2")&&(die1Array.slice(-1)=="3"||die2Array.slice(-1)=="3"||die3Array.slice(-1)=="3")) {
                    alert("Completed Phase 1: Straight of 3");
                    lvls = 2;
                    return lvls;
                }
                else {
                    alert("Phase 1: Straight of 3.  Not Complete.  Try again.");
                };
            });
            break;

        case 2:
            alert("Phase 2");
            //Phase 2's code
            break;

        //Additional cases/Phases would go here.
        default:
    };

};


$(document).ready(main);
マリオサンティーニ

あなたには、ダイ#の機能あなただけせずに値をプッシュすることができ場合は、他の部分。

var die1 = function () {
    var roll1 = Math.floor(Math.random() * 6) + 1;
    die1Array.push(roll1);
}

またはより一般的:

var die = function(dieArray){dieArray.push(Math.floor(Math.random()* 6)+ 1); }

使用:

死ぬ(die1Array); 死ぬ(die2Array); 死ぬ(die3Array); ..。

現在のswithcの問題は、ケース内でイベントハンドラー関数をバインドすることです。

イベントハンドラーを特定の状態でのみ機能させる場合は、状態変数を設定して現在の状態を保存し、ハンドラー関数でこの変数を確認する必要があります。

var main = function () {
    var diceState = 1;

    $("#submit").click(function() {
            if (diceState === 1) {
                // do something
            }
        });

    switch(lvls) {
    case 1:
          diceState = 1;
          break;

    case 2: 
         diceState = 2;
         break;
    }

もう1つの問題は、main関数lvlsの値を1に設定しているため、ケースが1つしかないため、mainを再度呼び出してもlvlsの他の変更はまったく効果がないことです

あなたが呼び出す場合、メイン1時間以上のことを、あなたは、あなたがに常時イベントを結合している問題が持っているのonSubmitを毎回フォームを送信するので、機能ハンドラが何度も呼び出され、。

switchステートメントを別の関数に移動し、状態変数をパラメーターとして渡して、状態を変更するたびに呼び出す必要があります。

だからここに例があります:

// Should be in same scope of the function
// or an attribute of an object to be passed by reference.
var diceState;

var changeState = function (state) {
    switch(state) {
    case 1:
        diceState = 1;
        break;
    ....
    default:
        throw new Error("State " + state + " not supported");
    }
}

また、デフォルトのケースを使用して予期しない値を処理することをお勧めします。

ここにあなたの主な機能を変える方法に関する提案があります:

var main = function() {

    var lvls;

    $("#roll").on("click", die1);
    $("#roll").on("click", die2);
    $("#roll").on("click", die3);
    $("#roll").on("click", die4);
    $("#roll").on("click", die5);
    $("#roll").on("click", die6);

    var changeState = function (state) {
        switch(state) {
        case 1:
            alert("Phase 1");
            lvls = state;
            break;

        case 2:
            alert("Phase 2");
            //Phase 2's code
            lvls = state;
            break;

        //Additional cases/Phases would go here.
        default:
        };
    }

    // bind the event handler
    $("#submit").click(function() {
if((die1Array.slice(-1)=="1"||die2Array.slice(-1)=="1"||die3Array.slice(-1)=="1")&&(die1Array.slice(-1)=="2"||die2Array.slice(-1)=="2"||die3Array.slice(-1)=="2")&&(die1Array.slice(-1)=="3"||die2Array.slice(-1)=="3"||die3Array.slice(-1)=="3")) {
                alert("Completed Phase 1: Straight of 3");
                changeState(2);

                // you could not return the vaue here!
                // return lvls; 
            }
            else {
                alert("Phase 1: Straight of 3.  Not Complete.  Try again.");
            };
        });

     changeState(1);

};

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonで変数の値が変更された場合、ステートメントを出力するにはどうすればよいですか?

分類Dev

Python:リスト内のアイテムに2つの条件を満たす必要があるelifステートメント内の文字列が含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

2つの条件と2番目の条件内にORステートメントを含むCASEを作成するにはどうすればよいですか?

分類Dev

このcaseステートメントを機能させるにはどうすればよいですか?

分類Dev

ステートメントが満たされていないときに、コードの最初に戻るにはどうすればよいですか?

分類Dev

条件が満たされない場合、チョコレートのインストールを終了するにはどうすればよいですか?

分類Dev

ブール値が変更されたときにステートメントを実行するにはどうすればよいですか?

分類Dev

SELECT句に新しい列を作成し、すべての条件ステートメントの連結が満たされた文字列/リストを動的に入力するにはどうすればよいですか?

分類Dev

条件を渡した後、3つのforeachステートメントを実行するにはどうすればよいですか?

分類Dev

左結合を使用した後、caseステートメントを使用するにはどうすればよいですか?

分類Dev

IFステートメントで特定の条件が満たされたときにPHPスクリプトの実行を停止するにはどうすればよいですか?

分類Dev

条件が満たされた後、ゲームを終了するにはどうすればよいですか?

分類Dev

条件が満たされた場合にのみドキュメントを更新するにはどうすればよいですか?

分類Dev

if条件で実行される2つのステートメントを1行で作成するにはどうすればよいですか?

分類Dev

すでに満たされた値を持つテーブルの値を変更するにはどうすればよいですか?

分類Dev

メッセージを表示した後、EditTextのテキスト変更をキャンセルするにはどうすればよいですか?

分類Dev

Pythonで、特定の条件を満たすようにリストの値を変更するにはどうすればよいですか?

分類Dev

Googleスプレッドシート内で、最後の2つの条件が満たされた場合に、3番目の条件を追加するにはどうすればよいですか。

分類Dev

複数の値が設定された値を持つifelseステートメントを作成するにはどうすればよいですか?

分類Dev

画像にペイントした後にパラメータが変更されないようにするにはどうすればよいですか?

分類Dev

3つのセグメントを持つセグメント化されたコントローラーでラベルのテキストを変更するにはどうすればよいですか>

分類Dev

条件が満たされたときにネストされた配列のIDを取得するにはどうすればよいですか?

分類Dev

WHERE句でCASE / IFステートメントを使用するにはどうすればよいですか?

分類Dev

文字列でCASEステートメントを使用するにはどうすればよいですか?

分類Dev

GWT:1つの子のサイズ変更をトリガーするにはどうすればよいですか?別の子が更新された場合、コンテナーは変更されませんか?

分類Dev

終了条件が満たされるまで、httprequestの結果に基づいてテキストを継続的に変更するにはどうすればよいですか?

分類Dev

1つ以上の変数が0未満の場合、ifステートメントを実行せずにelse ifステートメントに移動するにはどうすればよいですか?

分類Dev

アンダースコアを追加した後、JButtonの高さが変更されないようにするにはどうすればよいですか?

分類Dev

ネストされたswitchステートメントで画像を表示するにはどうすればよいですか?

Related 関連記事

  1. 1

    Pythonで変数の値が変更された場合、ステートメントを出力するにはどうすればよいですか?

  2. 2

    Python:リスト内のアイテムに2つの条件を満たす必要があるelifステートメント内の文字列が含まれているかどうかを確認するにはどうすればよいですか?

  3. 3

    2つの条件と2番目の条件内にORステートメントを含むCASEを作成するにはどうすればよいですか?

  4. 4

    このcaseステートメントを機能させるにはどうすればよいですか?

  5. 5

    ステートメントが満たされていないときに、コードの最初に戻るにはどうすればよいですか?

  6. 6

    条件が満たされない場合、チョコレートのインストールを終了するにはどうすればよいですか?

  7. 7

    ブール値が変更されたときにステートメントを実行するにはどうすればよいですか?

  8. 8

    SELECT句に新しい列を作成し、すべての条件ステートメントの連結が満たされた文字列/リストを動的に入力するにはどうすればよいですか?

  9. 9

    条件を渡した後、3つのforeachステートメントを実行するにはどうすればよいですか?

  10. 10

    左結合を使用した後、caseステートメントを使用するにはどうすればよいですか?

  11. 11

    IFステートメントで特定の条件が満たされたときにPHPスクリプトの実行を停止するにはどうすればよいですか?

  12. 12

    条件が満たされた後、ゲームを終了するにはどうすればよいですか?

  13. 13

    条件が満たされた場合にのみドキュメントを更新するにはどうすればよいですか?

  14. 14

    if条件で実行される2つのステートメントを1行で作成するにはどうすればよいですか?

  15. 15

    すでに満たされた値を持つテーブルの値を変更するにはどうすればよいですか?

  16. 16

    メッセージを表示した後、EditTextのテキスト変更をキャンセルするにはどうすればよいですか?

  17. 17

    Pythonで、特定の条件を満たすようにリストの値を変更するにはどうすればよいですか?

  18. 18

    Googleスプレッドシート内で、最後の2つの条件が満たされた場合に、3番目の条件を追加するにはどうすればよいですか。

  19. 19

    複数の値が設定された値を持つifelseステートメントを作成するにはどうすればよいですか?

  20. 20

    画像にペイントした後にパラメータが変更されないようにするにはどうすればよいですか?

  21. 21

    3つのセグメントを持つセグメント化されたコントローラーでラベルのテキストを変更するにはどうすればよいですか>

  22. 22

    条件が満たされたときにネストされた配列のIDを取得するにはどうすればよいですか?

  23. 23

    WHERE句でCASE / IFステートメントを使用するにはどうすればよいですか?

  24. 24

    文字列でCASEステートメントを使用するにはどうすればよいですか?

  25. 25

    GWT:1つの子のサイズ変更をトリガーするにはどうすればよいですか?別の子が更新された場合、コンテナーは変更されませんか?

  26. 26

    終了条件が満たされるまで、httprequestの結果に基づいてテキストを継続的に変更するにはどうすればよいですか?

  27. 27

    1つ以上の変数が0未満の場合、ifステートメントを実行せずにelse ifステートメントに移動するにはどうすればよいですか?

  28. 28

    アンダースコアを追加した後、JButtonの高さが変更されないようにするにはどうすればよいですか?

  29. 29

    ネストされたswitchステートメントで画像を表示するにはどうすればよいですか?

ホットタグ

アーカイブ