剪刀、石头、布又称“猜丁壳”,古老而简单,这个游戏的主要目的是为了解决争议,因为三者相互制约,因此不论平局几次,总会有胜负的时候。
游戏规则中,石头克剪刀,剪刀克布,布克石头。
根据以上简述我们可以设计一个简单的程序来完成它,首先设计一个猜拳类,设置其属性
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+"次");}
}
然后下面是运行结果