使用面向对象的编程思想设计编写一个猜拳游戏
使用面向对象的编程思想设计编写一个猜拳游戏,实现玩家和电脑猜拳的过程,玩家和电脑都具备猜拳方法,玩家的出拳使用键盘输入实现,电脑出拳使用随机数,、
要求:每个回合双方各处一次拳,每个回合结束后系统提示结果信息并提示玩家是否要继续,退出游戏打印呈现游戏的结果(游戏总局,玩家获胜、平、输的次数,玩家胜率),通过胜率决定最终的胜利
玩家类
/** *玩家类 */ public class Player{ int winCount; int drawCount; Scanner sc; /** *玩家初始化 */ public void int(){ //将实例化写入方法中,在使用是只用调用一次,不用多次new sc=new Scanner(System.in); } /** *玩家出拳的方法 */ public int showFinger(){ System.out.println("请选择您的出拳:1代表石头,2代表剪刀,3代表布"); int result=sc.nextInt(); return result; } }
电脑类
/** * 电脑类 */ public class Computer(){ Random random; /** * 电脑类初始化 */ public void init(){ random=new Random(); } /** *电脑出拳的方法 */ public int showFinger(){ //生成0-2加上1,即1-3(不用变量接收,直接返回) return random.nextInt(3)+1; } }
游戏类(封装了游戏的完整过程)
public class Game{ //玩家对象 Player player; //电脑对象 Computer computer; //记录总局数 int count; Scanner sc; /** * 初始化方法 */ public void init(){ //实例化玩家对象 player=new Player(); //初始化玩家 player.init(); //实例化电脑对象 computer=new Computer(); //初始化电脑 computer.init(); sc=new Scanner(System.in); //初始化总局数 count=0; } /** * 将出拳数字改为字符串的方法 */ public String changeToString(int result){ String str=""; switch(result){ case 1: str="石头" break; case 2: str="剪刀" break; case 3: str="布" break; } return str; } /** * 描述游戏逻辑的方法 */ public void start(){ String answer; do{ //进入一次循环就总局数加一 count++; //调用玩家出拳的方法 int playerResult=player.showFinger(); //将出拳结果数字改为String System.out.println("玩家出拳:"+changeToString(playerResult)); //调用电脑出拳的方法 int computerResult=player.showFinger(); //将出拳结果数字改为String System.out.println("玩家出拳:"+changeToString(computerResult)); //玩家胜 if(playerResult==1;computerResult==2||playerResult==2;computerResult==3||playerResult==3;computerResult==1){ System.out.println("玩家赢了"); } //平局 else if(playerResult==computerResult) System.out.println("平局"); } //玩家输 else(playerResult==computerResult) System.out.println("玩家输了"); } System.out.println("是否继续游戏:y/n"); answer=sc.next(); }while(answer.equals("y")); } /** * 显示游戏结果的方法 */ public void showResult(){ //输的次数 int loseCount=count-player.winCount-player.drawCount; System.out.println("游戏总场数:"+count); System.out.println("胜局:"+player.winCount); System.out.println("平局:"+player.drawCount); System.out.println("败局:"+loseCount); System.out.println("胜率:"+(int)(player.winCount/(double)(count*100))+"%"); if(winCount>loseCount){ System.out.println("恭喜获得最终胜利!"); } else if(winCount=loseCount){ System.out.println("平局"); } else if(winCount<loseCount){ System.out.println("很遗憾,您输了!"); } }
启动游戏的APP
public class GameAPP{ public static void main(String[] args){ //实例化游戏类 Game game=new Game(); //调用初始化方法 game.init(); //调用游戏逻辑开始的方法 game.start(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!