C#でじゃんけん 第4版
C# でじゃんけんするプログラム 第4版 です。
第 4 版では、勝ち、負け、あいこを判断するメソッド JudgeResult メソッドを書き換えます。これまでは if 文でそれぞれの手の組み合わせを場合分けしていました。今回は、手の組み合わせに対する結果をデータとして用意しておくようにします。
第3版の JudgeResult メソッドは以下のように、あなたの手とコンピュータの手を、if 文で場合分けするようになっていました。
internal static int JudgeResult(int yourHand, int computerHand) { int result; if (yourHand == GU) { if (computerHand == GU) { // あなた: GU、コンピュータ: GU => あいこ result = Draw; } else if (computerHand == CYOKI) { // あなた: GU、コンピュータ: CYOKI => あなたの勝ち result = YouWin; } . . . . . } else if (yourHand == CYOKI) { if (computerHand == GU) { // あなた: CYOKI、コンピュータ: GU => コンピュータの勝ち result = ComputerWin; } . . . . . } else { . . . . . } return result; }
今回は、手の組み合わせに対する結果をデータとして用意しておき、その内容を参照するようにします。あなたの手は GU、CYOKI、PA の 3 つのうちのどれか、コンピュータの手もその 3 つのうちのどれかです。あなたの手とコンピュータの手の組み合わせは 3 x 3 = 9 通りのうちのどれかになります。以下のように、それぞれの組み合わせの結果を値にした 3 x 3 の 2 次元配列を用意します。
static readonly int[,] ResultTable = new int[HAND_MAX, HAND_MAX] { { Draw, // あなた: GU、コンピュータ: GU => あいこ YouWin, // あなた: GU、コンピュータ: CYOKI => あなたの勝ち ComputerWin, // あなた: GU、コンピュータ: PA => コンピュータの勝ち }, { ComputerWin, // あなた: CYOKI、コンピュータ: GU => コンピュータの勝ち Draw, // あなた: CYOKI、コンピュータ: CYOKI => あいこ YouWin, // あなた: CYOKI、コンピュータ: PA => あなたの勝ち }, { YouWin, // あなた: PA、コンピュータ: GU => あなたの勝ち ComputerWin, // あなた: PA、コンピュータ: CYOKI => コンピュータの勝ち Draw, // あなた: PA、コンピュータ: PA => あいこ }, };
この配列を用意すると、JudgeResult メソッドは、あなたの手とコンピュータの手を用いて、その値を参照するだけになります。
internal static int JudgeResult(int yourHand, int computerHand) { int result = ResultTable[yourHand, computerHand]; return result; }