当前位置: 首页 > web >正文

【Java实例-英雄对战】Java战斗之旅,既分胜负也决生死

在数字世界的战场上,每一次决策都可能改变战局,每一次行动都充满了未知。今天,我将带你走进一个充满策略和激情的战斗世界——“英雄对战”游戏。这不仅是一个简单的控制台游戏,更是一场智力与勇气的较量。无论你是编程新手还是资深开发者,这款游戏都能带给你无尽的乐趣和挑战。

游戏规则:在“英雄对战”中,玩家和敌人轮流选择行动,目标是在对方生命值归零前将其击败。游戏开始时,玩家和敌人都有100生命值。每回合,玩家可以选择“攻击”,“追击”,“闪避反击”这三种行动之一。每回合结束后,根据双方的选择判断胜负并更新生命值。如果双方选择相同,则该回合为平局,生命值不变。当一方生命值降至零或以下时,游戏结束,该方被击败。

该文章的目录
  1. 游戏目标
  2. 游戏流程设计
  3. 关键技术点
  4. 完整代码
  5. 测试和运行

原创-谷宇博客,拥有更多小游戏案例:https://biguyu.top/home

--------------------

  • 游戏目标

设计一个简单的控制台游戏“英雄对战”,玩家和人机轮流选择行动(包括攻击、追击和闪避反击),目标是在对方生命值归零前将其击败。

  • 游戏流程设计
  1. 初始化游戏:设置初始生命值,打印游戏规则和欢迎信息。
  2. 玩家输入:接收玩家的行动选择,并验证输入的有效性。
  3. 程序随机选择:随机生成程序的行动选择。
  4. 判断胜负:根据玩家和程序的选择,更新生命值并判断胜负。
  5. 游戏循环:重复上述步骤,直到一方生命值归零或游戏结束。
  6. 游戏结束:输出最终结果,结束游戏。

  • 关键技术点
  1. 随机数生成:如何使用Random类生成随机行动。
  2. 用户输入处理:如何使用Scanner类接收和验证用户输入。
  3. 胜负判断逻辑:如何根据玩家和程序的选择判断胜负。
  4. 生命值管理:如何管理玩家和程序的生命值,并在每回合更新。
  5. 控制流语句for循环,switch选择,if、if else和 else选择的使用。

  • 完整代码
package com.simple;import java.util.Random;
import java.util.Scanner;public class HeroBattle {public static void main(String[] args) {//游戏开始System.out.println("欢迎来到英雄对战游戏!");System.out.println("游戏规则:攻击->追击, 追击->闪避反击, 闪避反击->攻击");System.out.println("每回合你可以选择:1.攻击、2.追击、3.闪避反击");System.out.println("玩家和敌人初始都有 100 生命值");System.out.println("----------------------------------");//声明Scanner类,用于接收用户的输入Scanner scanner = new Scanner(System.in);//声明Random类,用户获得随机数Random random = new Random();//生命值int playLife = 100;int enemyLife = 100;int i = 1;while (true) {System.out.println("\n第 " + i +" 回合,开始");System.out.print("请输入你的行动(1.攻击/2.追击/3.闪避反击):");int playerChoice = scanner.nextInt();// 验证玩家输入是否正确有效if(playerChoice != 1 && playerChoice != 2 && playerChoice != 3){System.out.println("无效输入,请重新输入!");continue;}// 敌人随机选择行动int enemyChoice = random.nextInt(3) + 1;switch (enemyChoice){case 1:System.out.println("敌人的行动是:攻击!");break;case 2:System.out.println("敌人的行动是:追击!");break;case 3:System.out.println("敌人的行动是:闪避反击!");break;}// 判断胜负if (playerChoice == enemyChoice) {System.out.println("平局!");} else if ((playerChoice == 1 && enemyChoice == 2) ||(playerChoice == 2 && enemyChoice == 3) ||(playerChoice == 3 && enemyChoice == 1)) {enemyLife -= 30;System.out.println("玩家胜!");System.out.println("玩家挥剑攻击,敌人被打掉 30 生命值! 敌人剩余生命值:" + enemyLife);} else {playLife -= 30;System.out.println("敌人胜!");System.out.println("敌人挥刀攻击,玩家被打掉 30 生命值! 玩家剩余生命值:" + playLife);}// 判断玩家或敌人是否生命值归零if (playLife < 0) {System.out.println("玩家被击败,生命值归零。敌人胜利!");break;} else if(enemyLife < 0) {System.out.println("敌人被击败,生命值归零。玩家胜利!");break;}//回合数+1i++;}System.out.println("游戏结束!");}}

  • 测试和运行

在运行“英雄对战”游戏时,我们重点关注了三种可能的游戏结果:玩家胜利和程序胜利。通过模拟玩家和程序的不同行动组合实现:当玩家的生命值降至零或以下时,程序会判定玩家失败;反之,当人机的生命值归零时,玩家获胜!

http://www.xdnf.cn/news/12669.html

相关文章:

  • 台式机电脑CPU天梯图2025年6月份更新:CPU选购指南及推荐
  • Canal环境搭建并实现和ES数据同步
  • App Search 和 Workplace Search 独立产品现已弃用
  • Cursor实现用excel数据填充word模版的方法
  • Fetch与Axios:区别、联系、优缺点及使用差异
  • 使用 C/C++ 和 OpenCV 提取图像的感兴趣区域 (ROI)
  • vue3+dify从零手撸AI对话系统
  • JavaWeb的一些基础技术
  • 在Ubuntu上使用 dd 工具制作U盘启动盘
  • 使用Transformer模型进行时间序列预测的完整解决方案,满足预测误差≤1.5%和注意力权重可视化的要求
  • GitHub 趋势日报 (2025年06月06日)
  • 2025年- H76-Lc184--55.跳跃游戏(贪心)--Java版
  • 有没有 MariaDB 5.5.56 对应 MySQL CONNECTION_CONTROL 插件
  • 信息最大化(Information Maximization)
  • Go语言进阶④:Go的数据结构和Java的有啥不一样
  • 光学字符识别(OCR)理论概述与实践教程
  • 动目标显示处理解析一(脉冲对消器)
  • Ubuntu 配置使用 zsh + 插件配置 + oh-my-zsh 美化过程
  • 前沿论文汇总(机器学习/深度学习/大模型/搜广推/自然语言处理)
  • 数据类型 -- 字符
  • SQL字符串截取函数全解析:LEFT、RIGHT、SUBSTRING 实战指南
  • 如何使用Jmeter进行压力测试?
  • MySQL-运维篇
  • 隐私计算时代B端页面安全设计:数据脱敏与权限体系升级路径
  • 数据结构算法(C语言)
  • 新能源汽车热管理核心技术解析:冬季续航提升40%的行业方案
  • 开源之夏·西安电子科技大学站精彩回顾:OpenTiny开源技术下沉校园,点燃高校开发者技术热情
  • 华为云Astro中服务编排、自定义模型,页面表格之间有什么关系?如何连接起来?如何操作?
  • 【第七篇】 SpringBoot项目的热部署
  • Mac 安装git心路历程(心累版)