1、我的垃圾代码:想法简单,没有良好交互,非常粗糙
package test; public class Test { public static void main(String[] args) { T t=new T(); t.game(); } } class T{ /* * 1、电脑每次随机生成0,1,2 * 2、0代表石头 1代表剪刀 2代表布 * 3、我的想法是直接列举所有情况,用选择语句暴力破解 */ public void game() { int ds=(int)(Math.random()*3);//定义第一个玩家 int lwb=(int)(Math.random()*3);//定义第二个玩家 if(ds==0&&lwb==0) { System.out.println("两人都出的是石头!平局"); } else if(ds==1&&lwb==1) { System.out.println("两人都出的是剪刀!平局"); } else if(ds==2&&lwb==2) { System.out.println("两人都出的是布!平局"); } else { if(ds==0&&lwb==1) { System.out.println("ds出的是石头,lwb出的是剪刀!ds获胜"); } else if(ds==0&&lwb==2) { System.out.println("ds出的是石头,lwb出的是布!lwb获胜"); } else if(ds==1&&lwb==2) { System.out.println("ds出的是剪刀,lwb出的是布!ds获胜"); } else { if(lwb==0&&ds==1) { System.out.println("lwb出的是石头,ds出的是剪刀!lwb获胜"); } else if(lwb==0&&ds==2) { System.out.println("lwb出的是石头,ds出的是布!ds获胜"); } else if(lwb==1&&ds==2) { System.out.println("lwb出的是剪刀,ds出的是布!lwb获胜"); } //..后面可以优化 } } } }
2、优化代码
package test; import java.util.*; public class Test { //设计石头剪刀布 /* * 编写一个猜拳游戏 * 1、电脑每次随机生成0,1,2 * 2、0代表石头 1代表剪刀 2代表布 * 3、显示输赢次数,假定玩三局 */ public static void main(String[] args) { //创建一个玩家对象 Tom t=new Tom(); //用来记录最后输赢次数 int isWinCount=0; //创建一个二维数组用来接收局数,Tom和电脑的出拳情况 int[][] arr1=new int[3][3]; int j=0; //创建一个一维数组用来接收输赢情况 String[] arr2=new String[3]; Scanner scanner=new Scanner(System.in); for(int i=0;i<3;i++) {//比赛三次 //获取玩家出的手势类型 System.out.println("请输入你要出的手势(0-拳头 1-剪刀 2-布):"); int num=scanner.nextInt(); t.setTomGuessNum(num); int tomGuess=t.getTomGuessNum(); arr1[i][j+1]=tomGuess; //获取电脑出的手势类型 int comGuess=t.computerNum(); arr1[i][j+2]=comGuess; //将玩家和电脑所做出的手势进行比较 String isWin=t.vsComputer(); arr2[i]=isWin; arr1[i][j]=t.count; //对每一局的情况进行输出 System.out.println("=================================================="); System.out.println("局数\t玩家的出拳\t电脑的出拳\t输赢情况"); System.out.println(t.count+"\t"+tomGuess+"\t\t"+comGuess+"\t\t"+t.vsComputer()); System.out.println("=================================================="); System.out.println(); isWinCount=t.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.print(arr1[a][b]+"\t\t"); } System.out.print(arr2[a]); System.out.println(); } System.out.println("你赢了"+isWinCount+"次"); } } class Tom{ //玩家出拳类型 int tomGuessNum;//0,1,2 //电脑出拳类型 int comGuessNum;//0,1,2 //玩家赢的次数 int winCountNum; //比赛次数 int count=1;//一共比赛3次 public void showInfo() { //... } /* * 电脑随机生成猜拳的数字的方法 */ public int computerNum() { Random r=new Random(); comGuessNum=r.nextInt(3);//返回0~2的随机数 return comGuessNum; } /* * 设置玩家随机生成猜拳的数字的方法 */ public void setTomGuessNum(int tomGuessNum) { if(tomGuessNum>2||tomGuessNum<0) { //抛出一个异常 throw new IllegalArgumentException("数字输入错误!"); } this.tomGuessNum=tomGuessNum; } public int getTomGuessNum() { return tomGuessNum; } /* * 比较猜拳的结果 */ public String vsComputer() { if(tomGuessNum==0&&comGuessNum==1) { return "你赢了"; } else if(tomGuessNum==1&&comGuessNum==2) { return "你赢了"; } else if(tomGuessNum==2&&comGuessNum==0) { return "你赢了"; } else if(tomGuessNum==comGuessNum) { return "平局"; } else { return "你输了"; } } /* * 记录玩家赢的次数 */ public int winCount(String s) { count++;//控制玩的次数 if(s.equals("你赢了")) { winCountNum++; } return winCountNum; } }