Java面向对象编程实现----猜拳小游戏
要求:
玩家可以和电脑进行猜拳,电脑每次都会随机生成 0 ,1 ,2
0 表示石头,1 表示剪刀,2 表示布,并且最后要可以显示玩家的输赢次数
缺陷:没有输入校验检测。
思路分析:此次编程用的是比较基础的的面向对象编程。
设计了四个类,Guess类为父类,
子类-----Users(玩家)类、Computer(电脑)类,
测试实现类--GuessTest类
具体详见代码注释
//Guess父类
public class Guess {
public void guessTo(int userNum, int comNum) {//猜拳胜负判断
if (userNum - comNum == -1 || userNum- comNum == 2) {//如果
System.out.println("你赢了!");
} else if (userNum - comNum == 0) {
System.out.println("平手!");
} else {
System.out.println("你输了");
}
}
//猜拳结果转换,由原来的数字转换为中文,结果显示更清晰
public String converse(int guessnum) {
String b;
if (guessnum == 0) {
return b = "出石头";
} else if (guessnum == 1) {
return b = "出剪刀";
} else if (guessnum == 2) {
return b = "出布";
} else {
return b = "不存在";
}
}
//猜拳结果展示
public void guessResult(int[] user, int[] com) {
int winTimes = 0;//玩家胜利次数
System.out.println("======结果展示=========");
for (int i = 0; i < user.length; i++) {
System.out.println("第" + (i + 1) + "局");
System.out.println("玩家:" + converse(user[i]) + "\t" + "电脑:" + converse(com[i]));
System.out.println("====================");
if (user[i] - com[i] == -1 || user[i] - com[i] == 2) {
winTimes++;
}
}
System.out.println("玩家胜利次数为:" + winTimes);
}
}
//Users类
import java.util.Scanner;
public class Users extends Guess{
int usersMora;
public void setUsersMora() {//玩家输入
Scanner sc= new Scanner(System.in);
System.out.println("开始猜拳,请选择:0--石头,1--剪刀,2--布");
this.usersMora=sc.nextInt();//键盘输入玩家的猜拳选择
System.out.print("你"+converse(usersMora)+"\t");//展示玩家的猜拳选择
}
public int getUsersMora() {
return usersMora;
}
}
//Computer类
public class Computer extends Guess{
int cmoputerMora;
public void setCmoputerMora() {//电脑输入
this.cmoputerMora =(int)(Math.random()*3);//随机数生成,实现电脑随机输出0,1,2
System.out.println("电脑"+converse(cmoputerMora));
}
public int getCmoputerMora() {
return cmoputerMora;
}
}
//GuessTest类
import java.util.Scanner;
public class GuessTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Users users = new Users();
Computer computer = new Computer();
int[] arrUsers = new int[3];//使用俩数组分别接收玩家和电脑的对局结果
int[] arrComp = new int[3];
for (int i = 0, j = 0; i < 3; i++, j++) {//游戏共三局,使用俩数组分别记录玩家和电脑的选择结果
System.out.println("=============第" + (i + 1) + "局================");
users.setUsersMora();
computer.setCmoputerMora();
arrUsers[i] = users.getUsersMora();
arrComp[j] = computer.getCmoputerMora();
users.guessTo(users.getUsersMora(), computer.getCmoputerMora());
System.out.println();
}
System.out.println();//为了更加清晰,这里换行显示
users.guessResult(arrUsers, arrComp);//结果展示
}
}