java实现猜拳游戏

UML图

                                         

代码:

 

public class Player {
    String name;
    Integer grade;

    public Player(String name, Integer grade) {
        this.name = name;
        this.grade = grade;
    }
    //出拳
    public String play(int p) {
        switch (p) {
            case 1 : return "剪刀";
            case 2 : return "石头";
            case 3 : return "布";
        }
        return null;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getGrade() {
        return grade;
    }

    public void setGrade(Integer grade) {
        this.grade = grade;
    }

 

public class Game {
    private Player you;
    private Player rival;
    private int number;

    public Game(String name1, String name2) {
        this.you = new Player(name1,0);
        this.rival = new Player(name2,0);
        number = 0;
    }

    //1.剪刀  2.石头  3.布
    public int play(int youFist, int rivalFist) {
        number++;
        boolean flag = (youFist==1 && rivalFist==3) || (youFist==2 && rivalFist==1) || (youFist==3 && rivalFist==2);
        boolean flag1 = (youFist==1 && rivalFist==1) || (youFist==2 && rivalFist==2) || (youFist==3 && rivalFist==3);
        if(flag) {
            you.setGrade(you.getGrade()+1);
            return 1;
        }
        if(flag1) {
            return 0;
        }
        else {
            rival.setGrade(rival.getGrade()+1);
            return -1;
        }
    }
    public void start() {
        Scanner input = new Scanner(System.in);
        int num,num1;
        System.out.print("请出拳:1.剪刀 2.石头 3.布(输入相应数字):");
        num = input.nextInt();
        System.out.println("你出拳:"+ you.play(num));
        num1 = new Random().nextInt(3) + 1;;
        System.out.println(rival.getName() + "出拳:" + rival.play(num1));

        switch (play(num, num1)) {
            case 1 :
                System.out.println("你赢了!");
                break;
            case 0 :
                System.out.println("平局!");
                break;
            case -1 :
                System.out.println("你输了!");
        }
    }
    public void end() {
        System.out.println(rival.getName() + " vs " + you.getName());
        System.out.println("对战次数:"+number+"\n");
        System.out.println("姓名\t\t得分");
        System.out.println(you.getName()+"\t\t"+you.getGrade());
        System.out.println(rival.getName()+"\t\t"+rival.getGrade());
    }
}

 

测试代码:

public static void main(String[] args) {
        String rival;
        String you;
        Game game;
        Scanner input = new Scanner(System.in);

        System.out.println("\t\t*****************************");
        System.out.println("\t\t*********猜拳,开始***********");
        System.out.println("\t\t*****************************");
        System.out.println("出拳规则:1.剪刀 2.石头 3.布");
        System.out.print("请选择对方角色(1.刘备 2.孙权 3.曹操):");
        rival = getRole(input.nextInt());
        System.out.print("请输入你的名字:");
        you = input.next();

        game = new Game(you, rival);
        System.out.println(you+" vs "+rival);
        System.out.println("要开始吗?(y/n) ");
        String ready = input.next();
        while (ready.equals("y")) {
            game.start();
            System.out.print("是否开始下一轮(y/n):");
            ready = input.next();
            System.out.println("-------------------------------");
        }
        game.end();
    }

    static String getRole(int player) {
        switch (player) {
            case 1: return "刘备";
            case 2: return "孙权";
            case 3: return "曹操";
        }
        return null;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖砸5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值