前提・実現したいこと
初投稿です。
投稿の作法についても、プログラミングの作法についてもまだまだ未熟かと思います。
ご指導よろしくお願いいたします。
Javaでジャンケンプログラムを作っています。
1.プレイヤーは3人
2.対戦は毎回プレイヤーの中からランダムに2名を選び、勝ち負けが出るまで対戦する
3.この1対1対戦をn回繰り返します。
4.結果は
Player1 : Yamada
Player2 : Suzuki
Player3 : Tanaka
Judge Sato
Results: 20games
1 vs 2 : 5 games
1 vs 3 : 7 games
2 vs 3 : 8 games
Yamada 6 win, 6 lose, 3 draw
Suzuki 5 win, 8 lose, 11 draw
Tanaka 9 win, 6 lose, 8 draw
のように出力します。
発生している問題・エラーメッセージ
2.のランダムにプレーヤーを対戦させるアイデアが浮かびませんでした。
該当のソースコード
Java
1import javax.xml.transform.Result; 2 3public class Judge { 4 private String name; 5 private RandomJankenPlayer player1, player2, player3; 6 7 public Judge(String _name) { 8 name = _name; 9 } 10 public void setPlayers(RandomJankenPlayer _player1, RandomJankenPlayer _player2, RandomJankenPlayer _player3) { 11 player1 = _player1;// player3人にする 12 player2 = _player2; 13 player3 = _player3; 14 } 15 16 public void play(int n) { 17 Hand hand1 = null, hand2 = null, hand3 = null; 18 Result result1,result2,result3; 19 20 for (int i = 0; i < n; i++) { 21 hand1 = player1.showHand(); 22 hand2 = player2.showHand(); 23 hand3 = player3.showHand(); 24 25//対戦プレイヤーランダム選択?? 26 27 //勝敗判定Judge 28 29 if (hand1 == hand2) { 30 draw1++; 31 draw2++; 32 } 33 if (hand1 == Hand.ROCK && hand2 == Hand.SCISSORS) { 34 win1++; 35 lose2++; 36 break; 37 } 38 if (hand1 == Hand.ROCK && hand2 == Hand.PAPER) { 39 lose1++; 40 win2++; 41 break; 42 } 43 if (hand1 == Hand.SCISSORS && hand2 == Hand.ROCK) { 44 lose1++; 45 win2++; 46 break; 47 } 48 if (hand1 == Hand.SCISSORS && hand2 == Hand.PAPER) { 49 win1++; 50 lose2++; 51 break; 52 } 53 if (hand1 == Hand.PAPER && hand2 == Hand.ROCK) { 54 win1++; 55 lose2++; 56 break; 57 } 58 if (hand1 == Hand.PAPER && hand2 == Hand.SCISSORS) { 59 lose1++; 60 win2++; 61 break; 62 } 63 } 64 } 65 //結果表示 66 System.out.println("Player1 : " + player1.getName()); 67 System.out.println("Player2 : " + player2.getName()); 68 System.out.println("Player3 : " + player3.getName()); 69 System.out.println("Judge : " + name); 70 System.out.println(); 71 System.out.println("Results: " + n + " games"); 72 System.out.println("1 vs 2 : " + a +" games"); 73 System.out.println("1 vs 3 : " + b +" games"); 74 System.out.println("2 vs 3 : " + c +" games"); 75 System.out.println( 76 player1.getName() + win1+ " win," 77 + " " + lose1 + " lose, " + draw1 + " draw"); 78 System.out.println( 79 player2.getName() + win2 + " win," 80 + " " + lose2 + " lose, " + draw2 + " draw"); 81 System.out.println( 82 player3.getName() + win2 + " win," 83 + " " + lose2 + " lose, " + draw2 + " draw"); 84 } 85 86 public static void main(String[] args) { 87 try { 88 int num = Integer.parseInt(args[0]); 89 RandomJankenPlayer player1 = new RandomJankenPlayer("Yamada"); 90 RandomJankenPlayer player2 = new RandomJankenPlayer("Suzuki"); 91 RandomJankenPlayer player3 = new RandomJankenPlayer("Tanaka"); 92 Judge judge = new Judge("Sato"); 93 judge.setPlayers(player1, player2, player3); 94 judge.play(num); 95 } catch (Exception e) { 96 System.out.println("this requires an integer argument."); 97 } 98 } 99} 100 101/* 102public class RandomJankenPlayer { 103 private String name;//private:ReadOnly 104 public RandomJankenPlayer(String name){ 105 this.name = name; 106 } 107 public String getName() { 108 return name; 109 } 110 public void setName(String name) { 111 this.name = name; 112 } 113 public Hand showHand(){ 114 Hand play; 115 double rnd = Math.random(); 116 if(rnd < 1.0/3.0){ 117 play = Hand.ROCK; 118 }else if (rnd < 2.0/3.0){ 119 play = Hand.PAPER; 120 }else{ 121 play = Hand.SCISSORS; 122 } 123 return play; 124 } 125 // main 126 public static void main(String[] args){ 127 RandomJankenPlayer player1 = new RandomJankenPlayer("Yamada"); 128 RandomJankenPlayer player2 = new RandomJankenPlayer("Suzuki"); 129 Hand hand1, hand2; 130 for(int i=0; i<10; i++){ 131 hand1 = player1.showHand(); 132 hand2 = player2.showHand(); 133 System.out.println(i+")"+ 134 "["+player1.getName()+"]"+hand1+" vs "+ 135 "["+player2.getName()+"]"+hand2); 136 } 137 } 138} 139 140*/ 141/* 142enum Hand {ROCK, PAPER, SCISSORS} 143*/ 144/* 145enum Result {WIN,LOSE,DRAW} 146*/ 147
試したこと
2人の場合について勝敗判定するプログラムを作成してみました
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/04/11 14:38
退会済みユーザー
2018/04/11 14:41
2018/04/12 01:20
退会済みユーザー
2018/04/12 03:13 編集