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);//结果展示


    }

}