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(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗