C#でじゃんけん 第5版
C# でじゃんけんするプログラム 第5版 です。
第 5 版では、勝ち、負け、あいこを判断するメソッド JudgeResult メソッドをさらに書き換えます。第 4 版では、手の組み合わせに対する結果をデータとして用意しておくようにしました。これを計算と比較により求めるように変更します。
勝ち、負け、あいこですが、以下のように判断できます。
- あなたの手とコンピュータの手が同じなら、あいこ。
- あなたの手とコンピュータの手がある条件を満たせば、あなたの勝ち。
- それ以外は、コンピュータの勝ち。
次に、あなたがコンピュータに勝つ場合、満たすべき条件について考えます。あなたがコンピュータに勝つのは、以下の 3 通りです。
この 3 つは、あなたの手の次の手がコンピュータの手になっていると考えることができます。GU (0) の次は CYOKI (1)、CYOKI (1) の次は PA (2) というぐあいです。PA (2) 場合、その次は最初に戻って GU (0) になると考えればうまくゆきます。
プログラムの実装ですが、
- "その次" は "+ 1"
- "最初に戻る" は割り算の余りを求める "% HAND_MAX"
を使います。
HAND_MAX の値は、手の最大値である PA の 2 に 1 を加えた 3 にしています。あなたの手が PA (2) の場合、"+ 1" の結果は 3。これを 3 で割ると余りは 0 で、結果は GU (0) になります。 "(あなたの手 + 1) % HAND_MAX" がコンピュータの手と等しいなら、あなたの勝ちと判断できます。
JudgeResult メソッドは、以下のようになります。
internal static int JudgeResult(int yourHand, int computerHand) { int result; if (yourHand == computerHand) { // あなたの手とコンピュータの手が同じなら、あいこです。 result = Draw; } else if ((yourHand + 1) % HAND_MAX == computerHand) { // あなたの手の次の手がコンピュータの手になっていたら、あなたの勝ちです。 result = YouWin; } else { // 上記以外なら、コンピュータの勝ちです。 result = ComputerWin; } return result; }