- 締切済み
じゃんけん プログラミング
以下のプログラムでは、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人のじゃんけんプログラムにしたいと思っています。どのように変更すればよいでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- titeiking2014
- ベストアンサー率25% (8/31)
良く出来たプログラムですね n人に拡張するには、以下の2点を改良するのみですね (変更点1)判定部分をn人へ拡張 ⇒全てのプレーヤーの手を見て2種類のみの場合(決着が付いた)と、それ以外の場合(あいこである)に分けてください。そして、2種類のみの場合は勝ったプレイヤーを判定して勝ったプレイヤーのみ残します。そして負けたプレイヤーには強烈なデコピンを実施します。 (変更点2)プレイヤーをn人へ拡張 ⇒パソコンをn台用意してください。 以上
- ngsvx
- ベストアンサー率49% (157/315)
これは、変更というよりは、作り直しのレベルです。 残るものは何もありませんよ。