基础1-2_面向对象_剪刀石头布(纯java)
游戏名:石头-剪刀-布
规则:用户根据系统提示出一个选项,而电脑随机生成一个选项,系统比较用户与电脑的选择,给出比较结果
Step1,控制台确定该流程。
1 package game.BO; 2 3 import game.UI.Joker; 4 import game.UI.Player; 5 /* 6 * 假设:剪刀为1,石头为2,布为3 7 * 结果为三种情况:胜利、失败、平局 8 * 获胜情况为(2,1)(3,2)(1,3) 结果相差1/1/-2 9 */ 10 public class gameStart { 11 public static void main(String[] args) { 12 System.out.println("剪刀石头布开始!"); 13 Player computer =new Player(); 14 Player people =new Player(); 15 Joker jok =new Joker(); 16 computer.type=0; 17 people.type=1; 18 int peResult = people.play(); 19 int pcResult = computer.play(); 20 jok.compareSizes(peResult, pcResult); 21 } 22 }
Step2,构造对象
2-1:玩家对象
1 package game.UI; 2 3 import java.util.Random; 4 import java.util.Scanner; 5 6 public class Player { 7 int result; 8 public int type; 9 10 public int play() { 11 if (type == 1) { 12 System.out.println("请出拳:"); 13 @SuppressWarnings("resource") 14 Scanner sc = new Scanner(System.in); 15 String str = sc.nextLine(); 16 int peSize = Integer.parseInt(str); 17 if (peSize == 1) { 18 System.out.println("您出的是[拳头]!"); 19 } else if (peSize == 2) { 20 System.out.println("你出的是[剪刀]!"); 21 } else if (peSize == 3) { 22 System.out.println("你出的是[布布]!"); 23 } 24 return peSize; 25 } else { 26 Random random = new Random(); 27 // int temp= random.nextInt(3); 随机产生 0、1、2。但是我们想获取[1,2,3] 28 int pcSize = random.nextInt(3) + 1; 29 if (pcSize == 1) { 30 System.out.println("电脑出的是[拳头]!"); 31 } else if (pcSize == 2) { 32 System.out.println("电脑出的是[剪刀]!"); 33 } else { 34 System.out.println("电脑出的是[布布]!"); 35 } 36 return pcSize; 37 } 38 39 } 40 41 }
2-1:裁判对象
package game.UI; public class Joker { public void compareSizes(int peSize,int pcSize){ if((peSize - pcSize==1)||(pcSize-peSize==2)){ System.out.println("本局玩家赢!!!"); }else if((peSize - pcSize==2)||(pcSize-peSize==1)){ System.out.println("本局玩家输!!!"); }else if(peSize==pcSize){ System.out.println("本局双家平局!!!"); } } }
输出对象为:
剪刀石头布开始!
请出拳:
1
您出的是[拳头]!
电脑出的是[布布]!
本局玩家赢!!!
或者
剪刀石头布开始!
请出拳:
2
你出的是[剪刀]!
电脑出的是[剪刀]!
本局双家平局!!!
或者
剪刀石头布开始!
请出拳:
3
你出的是[布布]!
电脑出的是[拳头]!
本局玩家输!!!
每次出拳都要重新启动【java application】,有点麻烦。加入一个循环判断。
******************************************************************************************************
1 package game.BO; 2 3 import java.util.Scanner; 4 5 import game.UI.Joker; 6 import game.UI.Player; 7 8 /* 9 * 假设:剪刀为1,石头为2,布为3 10 * 结果为三种情况:胜利、失败、平局 11 * 获胜情况为(2,1)(3,2)(1,3) 结果相差1/1/-2 12 */ 13 public class gameStart { 14 public static void main(String[] args) { 15 System.out.println("剪刀石头布开始!"); 16 Player computer = new Player(); 17 Player people = new Player(); 18 Joker jok = new Joker(); 19 computer.type = 0; 20 people.type = 1; 21 while (true) { 22 int peResult = people.play(); 23 int pcResult = computer.play(); 24 jok.compareSizes(peResult, pcResult); 25 System.out.println("是否继续游戏?请输入:"); 26 System.out.println("是/y/Y/yes/YES 否/n/N/no/NO"); 27 @SuppressWarnings("resource") 28 Scanner sc = new Scanner(System.in); 29 String str = sc.nextLine(); 30 if (str.equals("是") || str.equals("y") || str.equals("Y") 31 || str.equals("yes") || str.equals("YES")) { 32 33 } else if (str.equals("否") || str.equals("n") || str.equals("N") 34 || str.equals("no") || str.equals("NO")) { 35 System.out.println("下次再见!!!"); 36 break; 37 } 38 39 } 40 41 } 42 }
剪刀石头布开始!
请出拳:
1
您出的是[拳头]!
电脑出的是[布布]!
本局玩家赢!!!
是否继续游戏?请输入:
是/y/Y/yes/YES 否/n/N/no/NO
y
请出拳:
1
您出的是[拳头]!
电脑出的是[拳头]!
本局双家平局!!!
是否继续游戏?请输入:
是/y/Y/yes/YES 否/n/N/no/NO
否
下次再见!!!