实现石头剪刀布游戏用1-2-3表示石头-剪刀-布
用户每次输入一个数,电脑每次自动生成一个数,根据游戏规则判断输赢
三局两胜
注:调用了方法
代码实现如下:
主代码:
import java.util.Random; import java.util.Scanner; public class Day_02 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Random rd = new Random(); boolean isFlag = true; String Details = "石头剪刀布,使用1,2,3代表石头,剪刀,布,三局两胜制"; while (isFlag) { System.out.println("-------欢迎来到石头剪刀布游戏-------"); System.out.println("-----------请 选 择--------"); System.out.println(" 0.规 则"); System.out.println(" 1.开始游戏"); System.out.println(" 2.退 出"); System.out.print(" 请选择(0-2):"); char selection = Utility2.readMenuSelection(); switch (selection) { case '0': System.out.println("-------------规 则-------------"); System.out.println(Details); System.out.println("--------------------------------\n"); break; case '1': System.out.println("------------开 始 游 戏------------"); while (true) { int victory = 0, draw = 0, fail = 0; int numbers = rd.nextInt(3) + 1;//机器人出拳随机数 System.out.println(numbers); for (int i = 1; i <= 3; i++) { System.out.println("请输入你出的第" + i + "拳:"); int num = sc.nextInt(); if (num > 3) { System.out.println("出拳错误,请重新出拳"); i--; } else if (num == 1) { if (numbers == 1) { draw++; } else if (numbers == 2) { victory++; if (victory == 2) { System.out.println("恭喜你赢了"); break; } } else { fail++; if (fail == 2) { System.out.println("很遗憾,你输了,下次努力!"); break; } } } else if (num == 2) { if (numbers == 1) { fail++; if (fail == 2) { System.out.println("很遗憾,你输了,下次努力!"); break; } } else if (numbers == 2) { draw++; } else { victory++; if (victory == 2) { System.out.println("恭喜你赢了"); break; } } } else { if (numbers == 1) { victory++; if (victory == 2) { System.out.println("恭喜你赢了"); break; } } else if (numbers == 2) { fail++; if (fail == 2) { System.out.println("很遗憾,你输了,下次努力!"); break; } } else { draw++; } } } if (victory == 1 && draw == 1 && fail == 1 || draw == 3) { System.out.println("棋逢对手"); } if (victory == 1 && draw == 2) { System.out.println("小胜一局"); } if (draw == 2 && fail == 1) { System.out.println("很遗憾,你输了"); } break; } case '2': System.out.print("确认是否退出(Y/N):"); char isExit = Utility2.readConfirmSelection(); if(isExit == 'Y'){ isFlag = false; } break; } } } }
调用的方法:
import java.util.Scanner; public class Utility2 { private static Scanner sc = new Scanner(System.in); public static char readMenuSelection(){ char c; for(; ; ){ String str = readKeyBoard(1); c = str.charAt(0); if(c != '0' && c != '1' && c != '2'){ System.out.print("选择错误,请重新输入"); }else break; } return c; } public static char readConfirmSelection(){ char c; for(; ; ){ String str = readKeyBoard(1).toUpperCase(); c = str.charAt(0); if(c == 'Y' || c == 'N'){ break; }else { System.out.print("选择错误,请重新输入:"); } } return c; } private static String readKeyBoard(int limit) { String line=""; while (sc.hasNext()) { line = sc.nextLine(); if(line.length()<1||line.length()>limit){ continue; } break; } return line; } }