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;
}
}