package com.javasm.exerices02; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.Scanner; /** * *TODO 石頭剪刀布猜拳游戲,三局兩勝 * @author caolei 2018年5月2日下午10:51:23 * RockPaperScissors */ public class RockPaperScissors { // 用於存放猜拳結果 private static List<String> gameResult; public static void crGuessingGame(Scanner sc) { gameResult = new ArrayList<String>(); // 存儲結果集 char[] finger = { '錘', '剪', '包' }; // 用於接收每一次的猜拳結果 String result; // 用於計算機猜拳 Random random = new Random(); // 記錄計算機獲勝次數 int computerWinNumber = 0; // 計算玩家獲勝次數 int playerWinNumber = 0; // 記錄猜拳第幾輪 int i = 0; // 循環出拳 while (true) { System.out.println("第" + (i + 1) + "輪,請出拳:"); // 計算機生成的隨機數 int computerGet = random.nextInt(3); // 用戶輸入的數 int playerInput = sc.nextInt(); // 記錄猜拳結果 result = finger[computerGet] + "," + finger[playerInput]; // 將結果放入集合中 gameResult.add(result); /* * 第一種通過if判斷結果 * * if (computerGet == 0 && playerInput != 0) { * if (playerInput == 1) * computerWinNumber++; * playerWinNumber++; * * } else if (computerGet == 1 && playerInput != 1) { * if (playerInput == 2) * computerWinNumber++; * playerWinNumber++; * } else if (computerGet == 2 && playerInput != 2) { * if (playerInput == 0) * computerWinNumber++; * playerWinNumber++; * } */ /** * 第二種通過switch判斷結果 */ switch (computerGet) { case 0: if (playerInput == 1) computerWinNumber++; if (playerInput == 2) playerWinNumber++; break; case 1: if (playerInput == 2) computerWinNumber++; if (playerInput == 0) playerWinNumber++; break; case 2: if (playerInput == 0) computerWinNumber++; if (playerInput == 1) playerWinNumber++; break; default: break; } // 記錄游戲輪數 i++; // 判斷是否有人取得勝利 if (computerWinNumber == 2 || playerWinNumber == 2) { break; } } // 判斷獲勝者 if (computerWinNumber > playerWinNumber) { System.out.println("電腦獲勝!"); } else { System.out.println("恭喜你獲勝!"); } // 輸出猜拳結果 System.out.println("具體結果如下:"); System.out.println("電腦,你"); for (String results : gameResult) { System.out.println("{ " + results + " }"); } } }