java实现猜拳游戏

剪刀、石头、布又称“猜丁壳”,古老而简单,这个游戏的主要目的是为了解决争议,因为三者相互制约,因此不论平局几次,总会有胜负的时候。

游戏规则中,石头克剪刀,剪刀克布,布克石头。

根据以上简述我们可以设计一个简单的程序来完成它,首先设计一个猜拳类,设置其属性

class compete{
    int comguess ; //电脑猜值  0——拳 1——剪 2——布
    int manguess;  //玩家猜值
    int wincount;  //赢的次数
    int count;     //比赛次数
}

然后就是功能设计即方法 

1.要有电脑的猜拳结果,可以通过Radom方法获取 

 public int comnum(){  //定义电脑猜拳值
       Random  p =new Random();  //随机数获取
       comguess = p.nextInt(3);
       return comguess;
   }

2.玩家猜拳的输出,设置猜拳值范围

 public void manunm(int manguess){ //定义玩家猜拳值
       if(manguess >2 || manguess< 0){
           throw new IllegalArgumentException("输入有误");
       }
       this.manguess =manguess;
   }

3.比赛规则的设定,通过if-else来判断

public String winnum(){ //定义比赛规则
       if(manguess == 0 && comguess == 1){
           return "你赢了";
       }else if(manguess == 1 && comguess == 2){
           return "你赢了";
       }else if(manguess ==2 && comguess ==0){
           return "你赢了";
       }else if(manguess == comguess){
           return "平局";
       }else {
           return "你输了";
       }
   }

4.比赛结果的输出,通过count来计数

 //定义赢局次数
   public int wincount(String s){
      count ++;
      if(s.equals("你赢了")){
          wincount++;
      }
      return wincount;
   }

以上就是猜拳类的属性和方法,然后就是回到main方法中调用它

import java.util.Random;
import java.util.Scanner;

public class guess {
    public static void main(String[] args){
        compete p = new compete();
        int wincount = 0;
        //创建一个二维数组用来接收玩家和电脑的猜拳情况
        int arr1[][] =new int[3][3];
        int j=0;
        //创建一个一维数组用来接收输赢情况
        String arr[] = new String[3];
        Scanner print = new Scanner(System.in);
        for(int i=0;i<3;i++){
         //获取玩家猜拳数
            System.out.println("请输入你要猜的拳");
            int num = print.nextInt();
            p.manunm(num);
            int guess = p.manguess;
            arr1[i][j+1] =guess;
        //获取电脑出拳数
           int comnum = p.comnum();
            arr1[i][j+2]= comnum;
         //将玩家的数与电脑比较
         String iswin =p.winnum();
         arr[i] =iswin;  //一维数组接收输赢情况
         arr1[i][j]= p.count; //二维数组接收比赛次数
         //对每一局情况进行输出
            System.out.println("=============================");
            System.out.println("局数\t玩家的出拳\t电脑的出拳\t输赢情况");
            System.out.println(p.count+"\t"+num+"\t\t"+comnum+"\t\t"+iswin);
            System.out.println("=============================");
            System.out.println("\n\n");
            wincount =p.wincount(iswin);
        }
        //对游戏最终结果输出(即遍历二维数组)
        System.out.println("局数\t玩家的出拳\t电脑的出拳\t\t输赢情况");
        for(int a=0;a<arr1.length;a++){
            for(int b=0;b<arr1[a].length;b++){
                System.out.println(arr1[a][b]+"\t\t\t");
            }
            System.out.println(arr[a]);
            System.out.println();
        }
        System.out.println("你赢了"+wincount+"次");
    }
}

然后下面是运行结果

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值