• 締切済み

じゃんけんプログラミング Java

以下のプログラムでは、2人でのじゃんけんプログラムになっています。 このプログラムの /** * 「ジャンケン、ポン!」と声をかけ、 * プレイヤーの手を見て、どちらが勝ちかを判定する。 * * @param player1 判定対象プレイヤー1 * @param player2 判定対象プレイヤー2 * @return 勝ったプレイヤー。引き分けの場合は null を返す。 */ private Player judgeJanken(Player player1, Player player2) { Player winner = null; // プレイヤー1の手を出す int player1hand = player1.showHand(); // プレイヤー2の手を出す int player2hand = player2.showHand(); // それぞれの手を表示する printHand(player1hand); System.out.print(" vs. "); printHand(player2hand); System.out.print("\n"); // プレイヤー1が勝つ場合 if ((player1hand == Player.STONE && player2hand == Player.SCISSORS) || (player1hand == Player.SCISSORS && player2hand == Player.PAPER) || (player1hand == Player.PAPER && player2hand == Player.STONE)) { winner = player1; } // プレイヤー2が勝つ場合 else if ( (player1hand == Player.STONE && player2hand == Player.PAPER) || (player1hand == Player.SCISSORS && player2hand == Player.STONE) || (player1hand == Player.PAPER && player2hand == Player.SCISSORS)) { winner = player2; } // どちらでもない場合は引き分け(nullを返す) return winner; } と /** * オブジェクト指向によるジャンケンプログラム */ public class ObjectJanken { public static void main(String[] args) { // 審判(斎藤さん)のインスタンス生成 Judge saito = new Judge(); // プレイヤー1(村田さん)の生成 Player murata = new Player("村田さん"); // プレイヤー2(山田さん)の生成 Player yamada = new Player("山田さん"); // 村田さんと山田さんをプレイヤーとしてジャンケンを開始する saito.startJanken(murata, yamada); } } を変更してn人のじゃんけんプログラムにしたいと思っています。どのように変更すればよいでしょうか?

みんなの回答

noname#208507
noname#208507
回答No.1

1.n人のPlayer配列を引数にとるstartJanken()を新たに作ります。 2.そのメソッドの中に二重ループを作り、それぞれPlayer配列の要素について繰り返します。外側のループで走査するPlayer配列の要素をplayer1、内側のそれをplayer2とします。 3.ループの最も内側で、player1とplayer2が異なるプレーヤーかどうか条件分岐します。 4.player1とplayer2が別人の場合に限り、ループの最も内側でjudgeJanken()を呼びます。 5.外側のループの最後で、player1が勝利した回数をカウントします。 6.このとき、もしn-1回勝ったら(自分以外の全員に勝ったら)、player1の勝ちで終了。そうでなければ次のplayer1でループを続行。 7.外側のループが終了したら、引き分け。 おおむね、こんなところでしょう。 コーディングは自分でがんぱってください。

関連するQ&A