fork download
  1. public class Main {
  2.  
  3. public static void main(String[] args) {
  4. System.out.println("コンピュータ同士でジャンケンをします。対戦人数を入力して下さい(2人以上20人以内)"); // とりあえず20人を上限
  5. int numOfCpu = new java.util.Scanner(System.in).nextInt();
  6. if (numOfCpu<2 || numOfCpu>20) { // 後に改良
  7. System.out.println("指定された人数を入力して下さい。終了します");
  8. System.exit(1);
  9. }
  10. String[] cpuNames = new String[numOfCpu];
  11. for (int i=0; i<numOfCpu; i++) {
  12. cpuNames[i] = "CPU#"+i;
  13. }
  14. // for (int i=0; i<numOfCpu; i++) {
  15. // System.out.println(cpuNames[i]);
  16. // }
  17. boolean[] survival = new boolean[numOfCpu];
  18. for (int i=0; i<numOfCpu; i++) {
  19. survival[i] = true;
  20. }
  21.  
  22. int[] cpuHands = new int[numOfCpu];
  23. int counter_0; int counter_1; int counter_2;
  24. int x;
  25.  
  26. // 0はグー、1はチョキ、2はパーをそれぞれ表すものとする
  27. do {
  28. for (int i=0; i<numOfCpu; i++) {
  29. cpuHands[i] = new java.util.Random().nextInt(3);
  30. }
  31. counter_0 = 0; counter_1 = 0; counter_2 = 0;
  32. for(int i=0; i<numOfCpu; i++) {
  33. if(cpuHands[i]==0) {
  34. counter_0 += 1;
  35. } else if(cpuHands[i]==1) {
  36. counter_1 += 1;
  37. } else { // cpuHands[i]==2 の時
  38. counter_2 += 1;
  39. }
  40. }
  41. System.out.println("グーの人数は"+counter_0+"、 チョキの人数は"+counter_1+"、 パーの人数は"+counter_2);
  42. x = 0;
  43. if (counter_0 > 0) x += 1;
  44. if (counter_1 > 0) x += 1;
  45. if (counter_2 > 0) x += 1;
  46. } while(x==1 || x==3); // あいこの時
  47.  
  48. // 以降はx==2(なんらかの勝敗確定)という条件をクリアしている
  49. int numOfSuvivar = 0;
  50. if (counter_0 > 0 && counter_1 > 0) {
  51. for (int i=0; i<numOfCpu; i++) {
  52. if (cpuHands[i]==1) {
  53. survival[i] = false; // チョキは敗者
  54. }
  55. }
  56. System.out.println("この時点で残っているのは");
  57. for (int i=0; i<numOfCpu; i++) {
  58. if (survival[i]==true) {
  59. System.out.println(cpuNames[i]);
  60. numOfSuvivar += 1;
  61. }
  62. }
  63. } else if (counter_1 > 0 && counter_2 > 0) {
  64. for (int i=0; i<numOfCpu; i++) {
  65. if (cpuHands[i]==2) {
  66. survival[i] = false; // パーは敗者
  67. }
  68. }
  69. System.out.println("この時点で残っているのは");
  70. for (int i=0; i<numOfCpu; i++) {
  71. if (survival[i]==true) {
  72. System.out.println(cpuNames[i]);
  73. numOfSuvivar += 1;
  74. }
  75. }
  76. } else { // counter_2 > 0 && counter_0 > 0 の時
  77. for (int i=0; i<numOfCpu; i++) {
  78. if (cpuHands[i]==0) {
  79. survival[i] = false; // グーは敗者
  80. }
  81. }
  82. System.out.println("この時点で残っているのは");
  83. for (int i=0; i<numOfCpu; i++) {
  84. if (survival[i]==true) {
  85. System.out.println(cpuNames[i]);
  86. numOfSuvivar += 1;
  87. }
  88. }
  89. }
  90. if (numOfSuvivar==1) {
  91. for (int i=0; i<numOfCpu; i++) {
  92. if (survival[i]==true) {
  93. System.out.println("勝者は"+cpuNames[i]);
  94. }
  95. }
  96. System.exit(0);
  97. }
  98.  
  99. /* while (numOfSuvivar!=1) {
  100. do {
  101. for (int i=0; i<numOfCpu; i++) {
  102. if (survival[i]==true) {
  103. cpuHands[i] = new java.util.Random().nextInt(3);
  104. }
  105. }
  106. counter_0 = 0; counter_1 = 0; counter_2 = 0;
  107. for(int i=0; i<numOfCpu; i++) {
  108. if(cpuHands[i]==0) {
  109. counter_0 += 1;
  110. } else if(cpuHands[i]==1) {
  111. counter_1 += 1;
  112. } else { // cpuHands[i]==2 の時
  113. counter_2 += 1;
  114. }
  115. }
  116. System.out.println("グーの人数は"+counter_0+"、 チョキの人数は"+counter_1+"、 パーの人数は"+counter_2);
  117. x = 0;
  118. if (counter_0 > 0) x += 1;
  119. if (counter_1 > 0) x += 1;
  120. if (counter_2 > 0) x += 1;
  121. } while (x==1 || x==3);
  122.  
  123. if (counter_0 > 0 && counter_1 > 0) {
  124. for (int i=0; i<numOfCpu; i++) {
  125. if (cpuHands[i]==1) {
  126. survival[i] = false; // チョキは敗者
  127. }
  128. }
  129. System.out.println("この時点で残っているのは");
  130. for (int i=0; i<numOfCpu; i++) {
  131. if (survival[i]==true) {
  132. System.out.println(cpuNames[i]);
  133. }
  134. }
  135.  
  136. } else if (counter_1 > 0 && counter_2 > 0) {
  137. for (int i=0; i<numOfCpu; i++) {
  138. if (cpuHands[i]==2) {
  139. survival[i] = false; // パーは敗者
  140. }
  141. }
  142. System.out.println("この時点で残っているのは");
  143. for (int i=0; i<numOfCpu; i++) {
  144. if (survival[i]==true) {
  145. System.out.println(cpuNames[i]);
  146. }
  147. }
  148.  
  149. } else { // counter_2 > 0 && counter_0 > 0 の時
  150. for (int i=0; i<numOfCpu; i++) {
  151. if (cpuHands[i]==0) {
  152. survival[i] = false; // グーは敗者
  153. }
  154. }
  155. System.out.println("この時点で残っているのは");
  156. for (int i=0; i<numOfCpu; i++) {
  157. if (survival[i]==true) {
  158. System.out.println(cpuNames[i]);
  159. }
  160. }
  161. }
  162. if (numOfSuvivar==1)
  163. break;
  164. } */
  165. // System.out.println("終了");
  166.  
  167.  
  168.  
  169. }
  170.  
  171. }
  172.  
Success #stdin #stdout 0.07s 4386816KB
stdin
10
stdout
コンピュータ同士でジャンケンをします。対戦人数を入力して下さい(2人以上20人以内)
グーの人数は6、 チョキの人数は3、 パーの人数は1
グーの人数は4、 チョキの人数は4、 パーの人数は2
グーの人数は7、 チョキの人数は2、 パーの人数は1
グーの人数は5、 チョキの人数は1、 パーの人数は4
グーの人数は4、 チョキの人数は3、 パーの人数は3
グーの人数は3、 チョキの人数は4、 パーの人数は3
グーの人数は4、 チョキの人数は2、 パーの人数は4
グーの人数は2、 チョキの人数は3、 パーの人数は5
グーの人数は2、 チョキの人数は6、 パーの人数は2
グーの人数は4、 チョキの人数は4、 パーの人数は2
グーの人数は5、 チョキの人数は0、 パーの人数は5
この時点で残っているのは
CPU#1
CPU#6
CPU#7
CPU#8
CPU#9