JAVA项目实战-文字格斗游戏
完整代码已上传至GItee:https://gitee.com/xiaohan-and-xiaohan/fightinggame主游戏逻辑public class FightingGame { //启动游戏 public void gameStart(String username) { //1.显示游戏表题 System.out.println(╔════════════════════════════════════════╗); System.out.println( username 欢迎来到文字格斗游戏 ); System.out.println(╚════════════════════════════════════════╝); //2.创建角色并进行属性分配 HeroCharacter player createPlayerCharacter(username); //3.显示创建角色的信息 System.out.println(角色创建成功); System.out.println( 初始属性为 player.show()); System.out.println( 拥有的技能为 player.showSkillList()); //4.创建多个敌人列表 | ArrayListEnemyCharacter enemyList new ArrayList(); enemyList.add(new EnemyCharacter(初级战士, 80, 15, 10, 猛击)); enemyList.add(new EnemyCharacter(敏捷刺客, 60, 20, 5, 快速攻击)); enemyList.add(new EnemyCharacter(重装坦克, 120, 10, 20, 防御姿态)); enemyList.add(new EnemyCharacter(神秘法师, 70, 25, 8, 火球术)); //5.准备战斗 int count 1;//记录回合数 int wins 0;//记录胜利次数 //战斗至生命值为0 while (player.isAlive()) { //进入循环开始战斗 //重置敌人属性敌人属性每场HP10, ATK3, DEF2敌人越来越打第二场的时候 if (count 1) { for (EnemyCharacter enemy : enemyList) { enemy.setHP(enemy.getMaxHP() 10); enemy.setAttack(enemy.getAttack() 3); enemy.setDefense(enemy.getDefense() 2); enemy.defending false; } } //随机选择敌人 Random r new Random(); EnemyCharacter enemy enemyList.get(r.nextInt(enemyList.size())); //System.out.println(enemy.show()); System.out.println(═══════════════════════════════════════); System.out.println(️⚔️ 第 count 场战斗开始对手: enemy.getName()); int round 1; while (player.isAlive()) { System.out.println(---------------------------------------); System.out.println(️⚔️ 第 round 回合开始); //敌我双方的血条 System.out.println(showHPBar(player.getName(), player.getHP(), player.getMaxHP()) player.getHP() / player.getMaxHP() HP); System.out.println(showHPBar(enemy.getName(), enemy.getHP(), enemy.getMaxHP()) enemy.getHP() / enemy.getMaxHP() HP); //我打敌人一下如果敌人死亡结束战斗 playerTurn(player, enemy); if (!enemy.isAlive()) { System.out.println( 恭喜你打败了敌人); break; } //敌人打我一下如果我死亡结束战斗 enemyTurn(enemy, player); if (!player.isAlive()) { System.out.println(☠️ 你被敌人打败了); break; } round; //System.exit(0); } //战斗结束玩家胜利恢复血量玩家失败结束游戏 if (player.isAlive()) { wins; player.heal(r.nextInt(20, 41)); System.out.println( 恢复血量成功当前生命 player.getHP() HP); System.out.println( 当前胜场 wins); if (wins % 3 0) { //属性提升 player.setHP(player.getHP() 30); player.setAttack(player.getAttack() 5); player.setDefense(player.getDefense() 3); System.out.println( 属性提升成功); } System.out.println(是否继续下一场游戏 y/n); Scanner sc new Scanner(System.in); String choice sc.next(); if (y.equalsIgnoreCase(choice)) { count; continue; } else { System.out.println(游戏结束); break; } } else { System.out.println(游戏结束); break; } } //6.游戏的最终结算 System.out.println(游戏结束); System.out.println(总胜场wins); System.out.println(总胜率(wins*100/count)%); System.out.println(感谢试玩); System.exit(0); } }登录注册文件public class Login { //登录方法主页面 public void start() { System.out.println(欢迎来到游戏的登录注册页面); ArrayListUser list new ArrayList(); while (true) { System.out.println(╔════════════════════════════════╗); System.out.println( 欢迎来到文字格斗游戏 ); System.out.println(╚════════════════════════════════╝); System.out.println(请选择操作1登录 2注册 3忘记密码 4退出); Scanner sc new Scanner(System.in); String choose sc.next();//字符串用next() switch (choose) { case 1: login(list); break;//防止case穿透 case 2: register(list); break; case 3: forgetPassword(list); break; case 4: exit(); break; default: System.out.println(输入错误请重新输入); break; } } } //登录 public void login(ArrayListUser list) { //在静态方法中调用必须添加static System.out.println(用户选择了登录操作~); //1. 键盘录入用户名 //2. 键盘录入密码 //3. 键盘录入验证码 //4. 登录最多重试三次三次错误账号锁定 //判断用户是否存在-》是否被锁定-》输入验证码-》输入密码 Scanner sc new Scanner(System.in); System.out.println(请输入用户名); String username sc.next(); //判断用户是否存在 if (!contains(list, username)) { System.out.println(用户 username 不存在请先进行注册); return;//结束登录状态 } //判断用户是否被锁定 int index findIndex(list, username); User u list.get(index); if (!u.isStatus()) { System.out.println(用户 username 已被锁定请联系工作人员); return; } for (int i 0; i 3;i) { //验证码输入并验证 while (true) { String rightcode getCode(); System.out.println(请输入正确验证码 rightcode); String code sc.next(); if (rightcode.equalsIgnoreCase(code)) { System.out.println(验证码输入正确); break; } else { System.out.println(验证码输入错误请重新输入); continue; } } //密码输入并验证 System.out.println(请输入密码); String password sc.next(); if (u.getPassword().equals(password)) { System.out.println(用户 username 登录成功); FightingGame fg new FightingGame(); fg.gameStart(username); break; }else{ System.out.println(登录失败~); if(i 2) { u.setStatus(false); System.out.println(密码输入错误用户 username 已被锁定请联系工作人员); return; }else{ System.out.println(密码输入错误还剩下 (2-i) 次机会); } } } } //注册 public void register(ArrayListUser list) { System.out.println(用户选择了注册操作~); //创建对象 User u new User(); //获取用户名 Scanner sc new Scanner(System.in); while (true) { System.out.println(请输入用户名); String username sc.next(); //校验用户名用户名唯一长度必须在3 ~ 16位只能由字母、数字组成不能是纯数字 if (!checklen(3, 16, username)) { System.out.println(用户名的长度不符合要求必须在3 ~ 16位); continue; } if (!checkUsername(username)) { System.out.println(用户名只能由字母、数字组成不能是纯数字); continue; } if (contains(list, username)) { System.out.println(用户名已存在请重新输入); continue; } u.setUsername(username); break; } //获取密码,长度3 ~ 8位,只能是字母加数字的组合不能有其他字母 inputPassword(u); //获取手机号 while (true) { System.out.println(请输入手机号); String phonenum sc.next(); if(checkPhoneNum(phonenum)){ u.setPhonenum(phonenum); break; }else{ System.out.println(手机号格式错误请重新输入); } } //将对象添加到集合中 list.add(u); System.out.println(用户 u.getUsername() 注册成功); } //输入密码 public void inputPassword(User u) { while (true) { Scanner sc new Scanner(System.in); System.out.println(请输入密码); String password1 sc.next(); if (!checklen(3, 8, password1)) { System.out.println(密码的长度不符合要求必须在3 ~ 8位); continue; } if (!checkPassword(password1)) { System.out.println(密码只能由字母、数字组成); continue; } System.out.println(请再次输入密码); String password2 sc.next(); if (!password1.equals(password2)) { System.out.println(两次输入的密码不一致请重新输入); continue; } u.setPassword(password1); break; } } //判断手机号格式 public boolean checkPhoneNum(String str) { if(str.length() ! 11 || !str.startsWith(1)){ System.out.println(手机号长度或开头出错); return false; } for (int i 0; i 11; i) { if(!Character.isDigit(str.charAt(i))){ System.out.println(手机号出现非数字请重新输入); return false; } } return true; } //退出 public void exit() { //System.out.println(用户选择了退出操作~); System.exit(0);//虚拟机停止 } //忘记密码 public void forgetPassword(ArrayListUser list) { System.out.println(用户选择了忘记密码操作~); //1. 键盘录入用户名 Scanner sc new Scanner(System.in); System.out.println(请输入用户名); String username sc.next(); //2. 判断用户是否存在 if (!contains(list, username)) { System.out.println(用户 username 不存在请先进行注册); return;//结束登录状态 } //3. 输入手机号并验证 while (true) { System.out.println(请输入手机号); String phonenum sc.next(); User u list.get(findIndex(list, username)); if (!u.getPhonenum().equals(phonenum)) { System.out.println(手机号输入错误请重新输入); continue; } else{ System.out.println(手机号输入正确); inputPassword(u); break; } } }

相关新闻

电工证学习笔记-易错题汇总

电工证学习笔记-易错题汇总

高压电工培训-易错题汇总 一、漏电保护器(剩余电流保护器) 内部装有零序电流互感器,采集漏电电流,信号放大后驱动脱扣机构跳闸。漏电跳闸后试验按钮(蓝色凸起)弹出;不要直接硬推手柄&#xff0c…

2026/8/2 5:56:47阅读更多 →
黑盒测试方法论-等价类

黑盒测试方法论-等价类

文章目录一. 什么是等价类二. 等价类的分类三. 等价类的使用场景四. 等价类划分原则五. 等价类设计步骤六. 实战示例:两位整数加法计算器1. 需求分析2. 等价类划分表3. 测试用例设计3.1 用例结构3.2 多元素输入的注意事项3.3 测试用例成品示例3.4 简单的测试用例示例…

2026/8/2 5:56:47阅读更多 →
Eclipse Temurin:企业级 Java JDK 发行版的最佳实践

Eclipse Temurin:企业级 Java JDK 发行版的最佳实践

核心观点Eclipse Temurin 本质上是 基于 OpenJDK 构建的企业级 JDK 发行版,由 Eclipse Adoptium 社区维护。它不是新的 JVM,而是对 OpenJDK 进行稳定构建、测试和发布,让企业可以放心用于生产环境。为什么选择 Temurin?1. OpenJDK…

2026/8/2 5:54:46阅读更多 →
Kerberos中继攻击新变种:利用CNAME记录绕过防护

Kerberos中继攻击新变种:利用CNAME记录绕过防护

1. Kerberos中继攻击的演变与防护困境Kerberos协议作为企业网络中最广泛使用的身份验证机制之一,其安全性一直备受关注。传统Kerberos中继攻击(Kerberos Relay Attack)通常需要攻击者能够拦截或重定向网络流量,这使得攻击门槛相对…

2026/8/2 7:11:10阅读更多 →
sosdp

sosdp

零、写在前面 随便写写。子集和超集和的计算就是高维前后缀和,子集反演超集反演的计算就是高维前后缀差分。还是比较easy的。 一、SOS DP 1.1 高维前缀和 SOS DP (Sum Over Subsets Dynamic Programming),也被称为高维前缀和,是算法竞赛中…

2026/8/2 7:11:10阅读更多 →
XSS攻击全解析:从反射型到DOM型,实战攻防与防御策略

XSS攻击全解析:从反射型到DOM型,实战攻防与防御策略

1. 项目概述:为什么XSS攻击值得每个开发者警惕?如果你是一名Web开发者,或者负责过任何线上业务,那么“XSS”这个词对你来说一定不陌生。它就像悬在Web应用头顶的达摩克利斯之剑,看似古老,却总能以新的形式造…

2026/8/2 7:11:10阅读更多 →
MT4/MT5回测报告怎么看?3分钟教你识别“造假“回测数据

MT4/MT5回测报告怎么看?3分钟教你识别“造假“回测数据

MT4/MT5回测报告怎么看?3分钟教你识别"造假"回测数据 很多人下载EA后第一件事就是跑回测,然后看到一条漂亮的盈利曲线就上头了。 停一下。市面上至少一半的回测报告是有问题的——不是数据造假,就是用了"完美条件"跑出来…

2026/8/2 7:11:10阅读更多 →
Nature认证的AI科研工具OpenScholar:如何用AI高效完成文献综述

Nature认证的AI科研工具OpenScholar:如何用AI高效完成文献综述

1. 项目概述:当Nature开始“认证”AI工具最近在学术圈里,一个消息传得挺广:Nature杂志“认定”了一款叫OpenScholar的AI工具,说它是“论文综述神器”。这事儿挺有意思的。Nature是什么?那是全球自然科学领域的顶级期刊…

2026/8/2 7:11:10阅读更多 →
开源BPM工作流引擎:盘古BPM的DMN决策引擎与核心架构实战

开源BPM工作流引擎:盘古BPM的DMN决策引擎与核心架构实战

1. 项目概述:一个开源BPM工作流引擎的诞生最近在技术社区里,一个名为“盘古BPM工作流平台”的项目宣布其DMN引擎完全开源,这个消息引起了不少开发者和架构师的关注。如果你正在为业务流程管理、自动化审批或者复杂决策逻辑的实现而头疼&#…

2026/8/2 7:09:10阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:10阅读更多 →
限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

更多请点击: https://intelliparadigm.com 第一章:AI模板批量生成的核心价值与落地全景 AI模板批量生成正从实验性工具演进为现代软件工程的关键基础设施。它通过语义理解、上下文感知与结构化约束,将重复性高、模式明确的代码/文档/配置生成…

2026/8/2 0:00:12阅读更多 →
如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南 【免费下载链接】web-archives Browser extension for viewing archived and cached versions of web pages, available for Chrome, Edge and Safari 项目地址: https://gitcode.com/gh_mirrors/we/web-a…

2026/8/2 0:00:13阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:10阅读更多 →
限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

更多请点击: https://intelliparadigm.com 第一章:AI模板批量生成的核心价值与落地全景 AI模板批量生成正从实验性工具演进为现代软件工程的关键基础设施。它通过语义理解、上下文感知与结构化约束,将重复性高、模式明确的代码/文档/配置生成…

2026/8/2 0:00:12阅读更多 →
如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南 【免费下载链接】web-archives Browser extension for viewing archived and cached versions of web pages, available for Chrome, Edge and Safari 项目地址: https://gitcode.com/gh_mirrors/we/web-a…

2026/8/2 0:00:13阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/2 1:29:34阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/2 2:32:55阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/2 2:09:20阅读更多 →