fork download
  1. //package myapp.game;
  2.  
  3. import java.io.*;
  4. import java.lang.*;
  5. import java.util.*;
  6.  
  7. class Janken
  8. {
  9. public static void main (String[] args) throws java.lang.Exception {
  10. Janken janken = new Janken();
  11.  
  12. janken.start();
  13.  
  14. }
  15.  
  16. public Janken() {
  17. }
  18.  
  19. Random rand = null;
  20. String[] handname = {"グー", "チョキ", "パー"};
  21.  
  22. int cpuhand = 0;
  23. int playerhand = 0;
  24.  
  25. int playcount = 0;
  26. int playerwin = 0;
  27. int cpuwin = 0;
  28. int playerwinwin = 0;
  29. int cpuwinwin = 0;
  30. int playermaxwinwin = 0;
  31. int cpumaxwinwin = 0;
  32. int brain = 0;
  33. int handswitch = 0;
  34.  
  35. public void start() throws java.lang.Exception {
  36. System.out.println("わたしとじゃんけんをしましょう!");
  37. init();
  38. mainloop();
  39. }
  40.  
  41. private void init() {
  42. rand = new Random();
  43. cpuhand = rand.nextInt(3);
  44. playcount = 0;
  45. playerwin = 0;
  46. cpuwin = 0;
  47. playerwinwin = 0;
  48. cpuwinwin = 0;
  49. playermaxwinwin = 0;
  50. cpumaxwinwin = 0;
  51. brain = rand.nextInt(11);
  52. handswitch = rand.nextInt(2);
  53. }
  54.  
  55. private void switchHand() {
  56. handswitch = 1 - handswitch;
  57. }
  58.  
  59.  
  60. private void nextHand() {
  61. switch (brain) {
  62. case 0:
  63. cpuhand = (cpuhand + 1) % 3; // lose hand of my hand
  64. break;
  65. case 1:
  66. cpuhand = (cpuhand + 2) % 3; // win hand of my hand
  67. break;
  68. case 2:
  69. cpuhand = (playerhand + 1) % 3; // lose hand of your hand
  70. break;
  71. case 3:
  72. cpuhand = (playerhand + 2) % 3; // win hand of your hand
  73. break;
  74. case 4:
  75. cpuhand = (cpuhand + handswitch) % 3; // not win hand of my hand
  76. break;
  77. case 5:
  78. cpuhand = (cpuhand + handswitch * 2) % 3; // not lose hand of my hand
  79. break;
  80. case 6:
  81. cpuhand = (cpuhand + handswitch + 1) % 3; // win or lose hand of my hand
  82. break;
  83. case 7:
  84. cpuhand = (playerhand + handswitch) % 3; // not win hand of your hand
  85. break;
  86. case 8:
  87. cpuhand = (playerhand + handswitch * 2) % 3; // not lose hand of your hand
  88. break;
  89. case 9:
  90. cpuhand = (playerhand + handswitch + 1) % 3; // win or lose hand of your hand
  91. break;
  92. default:
  93. cpuhand = playerhand; // your hand
  94. }
  95. switchHand();
  96. }
  97.  
  98. private boolean checkHands() {
  99. int diff = cpuhand - playerhand;
  100. System.out.println("わたしの手:" + handname[cpuhand]);
  101. System.out.println("あなたの手:" + handname[playerhand]);
  102. playcount++;
  103. if (diff == 0) {
  104. System.out.print("あいこだね!");
  105. playerwinwin = 0;
  106. cpuwinwin = 0;
  107. } else if (diff == 1 || diff == -2) {
  108. System.out.print("あなたの勝ち!");
  109. playerwin++;
  110. playerwinwin++;
  111. cpuwinwin = 0;
  112. playermaxwinwin = Math.max(playermaxwinwin, playerwinwin);
  113. } else {
  114. System.out.print("わたしの勝ち!");
  115. cpuwin++;
  116. playerwinwin = 0;
  117. cpuwinwin++;
  118. cpumaxwinwin = Math.max(cpumaxwinwin, cpuwinwin);
  119. }
  120. System.out.println(" (あなたの勝敗:勝ち=" + playerwin + "、負け=" + cpuwin + "、引き分け=" + (playcount - playerwin - cpuwin) + ")");
  121. System.out.println();
  122. if (cpuwin >= 5) {
  123. System.out.println("勝負あり!わたしの勝ちだね!");
  124. return true;
  125. } else if (playerwin >= 5) {
  126. System.out.println("勝負あり!あなたの勝ちだよ!");
  127. return true;
  128. } else {
  129. System.out.println("もっかいいくよ!");
  130. nextHand();
  131. }
  132. return false;
  133. }
  134.  
  135. private void mainloop() throws java.lang.Exception {
  136. String line;
  137. String msg = "じゃんけん・・・( 0:" + handname[0] + "、1:" + handname[1] + "、2:" + handname[2] + " ) ? ";
  138.  
  139. System.out.print(msg);
  140. while ((line = in.readLine()) != null) {
  141. if (line.matches("^[012]$")) {
  142. playerhand = Integer.parseInt(line);
  143. if (checkHands()) {
  144. System.out.println("バイバイまたね");
  145. break;
  146. }
  147. } else if ("bye".equals(line)) {
  148. System.out.println("バイバイまたね");
  149. break;
  150. } else {
  151. System.out.println("違うよー!とりなおし!");
  152. }
  153. System.out.print(msg);
  154. }
  155. }
  156.  
  157.  
  158. }
Success #stdin #stdout 0.07s 380160KB
stdin
1
2
0
1
0
0
1
1
2
0
0
1
2
2
2
1
0
1
stdout
わたしとじゃんけんをしましょう!
じゃんけん・・・( 0:グー、1:チョキ、2:パー ) ? わたしの手:パー
あなたの手:チョキ
あなたの勝ち! (あなたの勝敗:勝ち=1、負け=0、引き分け=0)

もっかいいくよ!
じゃんけん・・・( 0:グー、1:チョキ、2:パー ) ? わたしの手:グー
あなたの手:パー
あなたの勝ち! (あなたの勝敗:勝ち=2、負け=0、引き分け=0)

もっかいいくよ!
じゃんけん・・・( 0:グー、1:チョキ、2:パー ) ? わたしの手:グー
あなたの手:グー
あいこだね! (あなたの勝敗:勝ち=2、負け=0、引き分け=1)

もっかいいくよ!
じゃんけん・・・( 0:グー、1:チョキ、2:パー ) ? わたしの手:チョキ
あなたの手:チョキ
あいこだね! (あなたの勝敗:勝ち=2、負け=0、引き分け=2)

もっかいいくよ!
じゃんけん・・・( 0:グー、1:チョキ、2:パー ) ? わたしの手:チョキ
あなたの手:グー
あなたの勝ち! (あなたの勝敗:勝ち=3、負け=0、引き分け=2)

もっかいいくよ!
じゃんけん・・・( 0:グー、1:チョキ、2:パー ) ? わたしの手:パー
あなたの手:グー
わたしの勝ち! (あなたの勝敗:勝ち=3、負け=1、引き分け=2)

もっかいいくよ!
じゃんけん・・・( 0:グー、1:チョキ、2:パー ) ? わたしの手:パー
あなたの手:チョキ
あなたの勝ち! (あなたの勝敗:勝ち=4、負け=1、引き分け=2)

もっかいいくよ!
じゃんけん・・・( 0:グー、1:チョキ、2:パー ) ? わたしの手:グー
あなたの手:チョキ
わたしの勝ち! (あなたの勝敗:勝ち=4、負け=2、引き分け=2)

もっかいいくよ!
じゃんけん・・・( 0:グー、1:チョキ、2:パー ) ? わたしの手:グー
あなたの手:パー
あなたの勝ち! (あなたの勝敗:勝ち=5、負け=2、引き分け=2)

勝負あり!あなたの勝ちだよ!
バイバイまたね