//裁判类,用于定义游戏规则什么的 public class Caipan { Person Person = new Person();//实例化一个人的对象 Computer Computer = new Computer();//实例化电脑玩家对象 int times = 0;//定义游戏次数 Scanner sc = new Scanner(System.in); public void init() { System.out.println("出拳规则:1.剪刀 2.石头 3.布 ");//输出游戏规则 System.out.println("请选择电脑角色(1:刘备 2:孙权 3:曹操)"); while (true) { int number = sc.nextInt();//输入选择的电脑角色数字 boolean flag = true;//定义flag初始值 //如果输入其他数字则再次进入循环 switch (number) { case 1 -> Computer.name = "刘备";//赋值给电脑名称 case 2 -> Computer.name = "孙权";//赋值给电脑名称 case 3 -> Computer.name = "曹操";//赋值给电脑名称 default -> { System.out.println("您输入的名字不正确请重新输入:"); flag = false; } } if (!flag) { continue; } else { break; } } System.out.println("请输入你的名称"); String name = sc.next(); Person.name = name;//将输入的名字赋值 } public void start() { System.out.println("请问要开始游戏吗y/n"); String s = sc.next(); boolean flag = false; if (s.equalsIgnoreCase("y")) { flag = true; }else { flag = false; System.out.println("再见"); } while (flag) { System.out.println("游戏分值规则:赢了,加一分,其余情况均不改变分值"); System.out.println("请出拳:1.剪刀 2.石头 3.布"); int PersonNumber = Person.showFist(); //调用玩家出拳方法并取值 int ComputerNumber = Computer.showFist(); //调用电脑出拳方法并取值 switch (PersonNumber) { case 1: System.out.println(Person.name + "出拳:剪刀"); break; case 2: System.out.println(Person.name + "出拳:石头"); break; case 3: System.out.println(Person.name + "出拳:布"); break; } switch (ComputerNumber) { case 1: System.out.println(Computer.name + "出拳:剪刀"); break; case 2: System.out.println(Computer.name + "出拳:石头"); break; case 3: System.out.println(Computer.name + "出拳:布"); break; } youxijieguo(PersonNumber, ComputerNumber);//调用游戏结果方法 times++;//游戏次数加一 System.out.println("你已经进行了" + times + "次游戏,是否继续? y/n"); boolean chongxin=true; while (chongxin ) { String jixu = sc.next(); if (jixu.equalsIgnoreCase("n")) { chongxin=false; flag = false;//玩家不想继续 } else if (jixu.equalsIgnoreCase("y")) { chongxin=false; flag = true; } else { System.out.println("请重新输入y或n"); chongxin=true; } } } } public void youxijieguo(int PersonNumber, int ComputerNumber) { //定义游戏结果方法 if (PersonNumber == ComputerNumber) {//双方出拳一样 System.out.println("平局,双方均不得分"); } else if ((PersonNumber == 1 && ComputerNumber == 3) || (PersonNumber == 2 && ComputerNumber == 1) || (PersonNumber == 3 && ComputerNumber == 2)) { System.out.println("你赢了,很不错!"); Person.score++;//玩家得分增加 } else System.out.println("你输了,有点蠢"); Computer.score++;//电脑得分增加 } public void print() {//输出双方游戏所有信息 System.out.println(Person.name +"\t\t\t"+ "VS" + "\t\t\t" + Computer.name); System.out.println("对站次数:" + times); System.out.println("姓名\t\t\t\t\t\t得分"); System.out.println(Person.name + "\t\t\t\t\t\t" + Person.score); System.out.println(Computer.name + "\t\t\t\t\t\t" + Computer.score); } public void zuizhongjieguo() {//判断最终结果 if (Person.score > Computer.score) { System.out.println("你赢了"); } else if (Person.score == Computer.score) { System.out.println("平局"); } else { System.out.println("你输了"); } } }
//电脑玩家类
public class Computer { String name;// 定义电脑名字 int score;// 定义电脑分数 public int showFist () { //让计算机玩家随机出拳 //依靠随机函数去实现 int number = (int) (Math.random() * 3 + 1); //返回计算机玩家的出拳数值(在Game类中会根据返回的数值来判定计算机玩家的出拳) return number; } }
//玩家类
public class Person { String name;//定义玩家姓名 int score;// 定义玩家分数 public int showFist(){//玩家出拳方法 Scanner sc = new Scanner(System.in); int number=0;//定义返回的数字,确定出拳; boolean flag= true;//定义初始flag为真,死循环 while (flag){ int n= sc.nextInt(); if ( n==1 || n==2 || n==3){//判断输入的值是否为1 2 3 number=n; flag= false;//修改flag值,跳出while语句; }else { System.out.println("你输入的数值有误请重新输入"); } } return number;//返回玩家的出拳结果 } }
public class Game { public static void main(String[] args) { System.out.println("---------------欢迎进入游戏世界----------------"); System.out.println(); System.out.println("--------------- 猜拳游戏 ----------------"); Caipan caipan= new Caipan(); caipan.init(); caipan.start(); caipan.print(); caipan.zuizhongjieguo(); } }