posts - 45,comments - 0,views - 4815

 

computer:

复制代码
package com.javasm.bean;


public class Computer extends User {
    public Computer(String userName, int guessId, int score) {
        super(userName, guessId, score);
    }

    public Computer() {
    }
复制代码

player:

复制代码
package com.javasm.bean;


public class Player extends User {
    public Player(String userName, int guessId, int score) {
        super(userName, guessId, score);
    }

    public Player() {
    }
}
复制代码

user

复制代码
package com.javasm.bean;

import lombok.*;

@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class User {
    //角色名称
    private String userName;
    //出拳id【1、石头 2、剪刀 3、布】
    private int guessId;
    //得分
    private int score;
}
复制代码

GuessAction:

复制代码
package com.javasm.action;

import com.javasm.bean.Computer;
import com.javasm.bean.Player;
import com.javasm.service.GuessService;
import com.javasm.service.impl.GuessServiceImpl;

import java.util.Scanner;

public class GuessAction {
    //扫描仪
    private static Scanner scanner = new Scanner(System.in);
    //业务对象
    private static GuessService guessService = new GuessServiceImpl();

    /**
     * 开始游戏
     */
    public static void start() {
        while (true) {
            //一个电脑和玩家
            Computer computer = new Computer();
            Player player = new Player();
            //开始游戏
            System.out.println("******************************************");
            System.out.println("\t\t猜拳,开始");
            System.out.println("******************************************");
            //选择角色
            guessService.chooseRole(computer, player, scanner);

            //是否继续?
            System.out.println("是否继续下一局?(Y/N)");
            String isContinue = scanner.next();
            if ("N".equals(isContinue) || "n".equals(isContinue)) {
                System.out.println("[游戏结束!]");
                break;
            }
        }
    }
}
复制代码

GuessConstants:

复制代码
package com.javasm.constants;


public class GuessConstants {
    //石头剪刀布
    public static final String SHI_TOU = "石头";
    public static final String JIAN_DAO = "剪刀";
    public static final String BU = "布";
}
复制代码

GuessService:

复制代码
package com.javasm.service;

import com.javasm.bean.Computer;
import com.javasm.bean.Player;

import java.util.Scanner;

public interface GuessService {

    /**
     * 选择角色
     *
     * @param computer
     * @param player
     * @param scanner
     */
    void chooseRole(Computer computer, Player player, Scanner scanner);

    /**
     * 开始猜拳
     *
     * @param computer
     * @param player
     * @param scanner
     */
    void chooseGuess(Computer computer, Player player, Scanner scanner);

    /**
     * 显示
     *
     * @param computer
     * @param player
     * @param count
     */
    void showUser(Computer computer, Player player, int count);
}
复制代码

GuessServiceImpl:

复制代码
package com.javasm.service.impl;

import com.javasm.bean.Computer;
import com.javasm.bean.Player;
import com.javasm.constants.GuessConstants;
import com.javasm.service.GuessService;

import java.util.Scanner;

public class GuessServiceImpl implements GuessService {
    @Override
    public void chooseRole(Computer computer, Player player, Scanner scanner) {
        System.out.println("出拳规则:(1、石头 2、剪刀 3、布)");
        //电脑
        System.out.println("请选择对方的角色:(1、张飞 2、刘备 3、关羽)");
        int inputRoleId = scanner.nextInt();

        //根据角色名称获取对应的文本
        String roleName = getRoleName(inputRoleId);
        computer.setUserName(roleName);

        //玩家
        System.out.println("请输入您的角色名称:");
        player.setUserName(scanner.next());

        System.out.println("要开始吗?(Y/N)");
        String isStart = scanner.next();
        if ("Y".equals(isStart) || "y".equals(isStart)) {
            //开始出拳
            chooseGuess(computer, player, scanner);
        }
    }

    @Override
    public void chooseGuess(Computer computer, Player player, Scanner scanner) {
        //统计对战的次数
        int count = 0;
        while (true) {
            count++;
            //玩家
            System.out.println(player.getUserName() + "--> 出拳:(1、石头 2、剪刀 3、布)");
            player.setGuessId(scanner.nextInt());

            //电脑:随机一个出拳id
            int randomGuessId = (int) (Math.random() * 3 + 1);
            computer.setGuessId(randomGuessId);

            //显示
            System.out.println(player.getUserName() + "-->出拳:" + getGuessStr(player.getGuessId()));
            System.out.println(computer.getUserName() + "-->出拳:" + getGuessStr(computer.getGuessId()));

            /*
                比较:1、石头 2、剪刀 3、布
                玩家  电脑
                1     2
                2     3
                3     1
             */
            if ((player.getGuessId() == 1 && computer.getGuessId() == 2) || (player.getGuessId() == 2 &&
                    computer.getGuessId() == 3) || (player.getGuessId() == 3 && computer.getGuessId() == 1)) {
                player.setScore(player.getScore() + 1);
                System.out.println("结果为:恭喜<" + player.getUserName() + ">赢了!");
            } else if (player.getGuessId() == computer.getGuessId()) {
                System.out.println("结果为:恭喜<双>赢了!");
            } else {
                computer.setScore(computer.getScore() + 1);
                System.out.println("结果为:恭喜<" + computer.getUserName() + ">赢了!");
            }

            //是否继续?
            System.out.println("是否继续下一轮?(Y/N)");
            String isContinue = scanner.next();
            if ("N".equals(isContinue) || "n".equals(isContinue)) {
                //结束猜拳,进入到显示
                showUser(computer, player, count);
                break;
            }
        }
    }

    @Override
    public void showUser(Computer computer, Player player, int count) {
        System.out.println(computer.getUserName() + "\t\tVS\t\t" + player.getUserName());
        System.out.println(computer.getScore() + "\t\tVS\t\t" + player.getScore());

        System.out.println("对战次数:" + count);

    }

    /**
     * 输入角色id获取对应的角色名称
     *
     * @param inputRoleId
     * @return
     */
    private String getRoleName(int inputRoleId) {
        switch (inputRoleId) {
            case 1:
                return "张飞";
            case 2:
                return "刘备";
            case 3:
                return "关羽";
        }
        return "游客";
    }

    /**
     * 根据出拳id获取对应的文本
     *
     * @param guessId
     * @return
     */
    private String getGuessStr(int guessId) {
        switch (guessId) {
            case 1:
                return GuessConstants.SHI_TOU;
            case 2:
                return GuessConstants.JIAN_DAO;
            case 3:
                return GuessConstants.BU;
        }
        return "选择错误";
    }
}
复制代码

GuessTest:

复制代码
package com.javasm.test;

import com.javasm.action.GuessAction;


public class GuessTest {
    /**
     * 入口
     *
     * @param args
     */
    public static void main(String[] args) {
        GuessAction.start();
    }
}
复制代码

 

posted on   小贤看世界  阅读(144)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示