基础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

下次再见!!!

 

版权声明:本文为weizhang715原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/weizhang715/articles/6505829.html