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