0

サイコロの目が 6 の場合、プレーヤーはこのターンまったく動かず、次のターンも没収されます。

これを達成するために、プレーヤーの整数型の警告マーカー変数と整数型の時間カウンター変数を試しました。

サイコロが 6 を示している場合、最初の実行中に警告マーカー変数を 1 増やして (そして while ループに何もさせないで)、2 回目の実行中に値を 1 に保ち (while ループは機能しません)、次に下げます。 while ループの 3 回目の実行では 0 に戻ります (そのため、while ループは機能します)。サイコロが再び 6 を示さない限り、マーカーはゼロのままで、その後は同じプロセスが繰り返されます。

次のような while ループがあります。

while the warning marker is equal to 0 {
    Do Stuff
    if the die shows a 6, the warning marker increases by 1.
    the time counter also increases by 1.
}

変数を操作して必要な結果を得るにはどうすればよいですか? それとも、私の部分的に完成したメソッドは、ロジックの観点から完全にオフになっていますか?

ありがとう。

4

3 に答える 3

1

これがうまくいくかどうか教えてもらえますか?

   flag=true;    
    while condition{
      if flag==true{
         if die == 6
         {
           flag=false;
           continue;}
         } 
         else { Do STUFF }
     } else 
         {
            flag==true;
          }
    }
于 2012-10-30T05:17:32.380 に答える
1

Java はオブジェクト指向のプログラミング言語です。この機能を使用します。

次の疑似コードを参照してください。理解に問題がある場合はお知らせください。

Player次のようにクラスを作成します。

class Player
{
    boolean skipChance = false;

    ... // Other fields
    ... //
}

while次のように変更します。

while(isGameOn())
{
    Player p = getCurrentPlayer();
    if( ! p.skipChance)
    {
        int val = p.throwDice();
        if(val == 6)
        {
            p.skipChance = true;
            continue; // control moves to while.
        }
        // Do stuff
    }
    else
    {
        p.skipChance = false;
    }
}
于 2012-10-30T05:35:29.287 に答える
1

この問題を言い換えたいと思います。

これは私が理解したものです。警告マーカーがあります。マーカーが 0 かどうかをチェックするループがあり、そうであれば何かをします。サイコロが 6 の場合、警告マーカーを増やします。新しい値が 3 の場合は、0 にリセットします。その間、時間カウンターは常に増加しています。

これが正しければ、次のようなものが必要だと思います。

int warningMarker = 0;
int timeMarker = 0;

while (true) {
    if (die == 6) {
        ++warningMarker;
        if (warningMarker == 3) {
            warningMarker = 0;
        }
    }

    if (warningMarker == 0) {
        doSomething();
    }

    ++timeMarker;
}
于 2012-10-30T05:17:06.897 に答える