天气与日历 切换到窄版

 找回密码
 立即注册

QQ登录

只需一步,快速开始

【好消息,好消息,好消息】VIP会员可以发表文章赚积分啦 !
查看: 524|回复: 0

[Java教程] 怎么用Java的代码制作简单的王者荣耀(更新)

[复制链接]

3188

主题

4

回帖

3290

积分

管理员

积分
3290
发表于 2024-2-26 16:00:14 | 显示全部楼层 |阅读模式
用Java代码实现简单的王者荣耀游戏:
张飞的生命值:100 攻击力:10 防御力:12 命中率:0.85 )(后羿的生命值:80 攻击力:15 防御力:12 命中率:0.7)(妲己的生命值:50 攻击力:20 防御力:5 命中率:0.75)(元芳的生命值:70 攻击力:10 防御力:8 命中率:0.7)(露露的生命值:70 攻击力:12 防御力:10 命中率:0.8)(大鱼的生命值:100 攻击力:5 防御力:20命中率:0.75) //英雄名字,攻击力,防御力,命中率,用数组来添加,并一 一对应,并添加为英雄类.
并用game类制作游戏过程
**************次迎来到 1VS 1 人机对战**************


游戏开始


请输入你的名称:Tom //随便输入的名字,没有限制


游戏开始[Tom]Vs[AI]


[1.张飞 2.后羿 3.姐己 4.元芳 5.露露 6.大鱼]
请输入你要选择的英雄的编号:2//是玩家
选择的英雄对应的数字
//需求undefined张飞的生命值:100 攻击力:10 防御力:12 命中率:0.85
)
(后羿的生命值:80攻击力:15 防御力:12 命中率:0.7)
(姐己的生命值:50 攻击
力:20 防御力:5
命中率:0.75)
(元芳的生命值:70 攻击力:10 防御力:8


率:0.7)
(露露的生命值:70 攻击力:12 防御力:10
命中率:0.8)
(大鱼的生命值:100
攻击力:5 防御力:20 命中率0.75)
//英雄名字,攻击力防御力,命中率,用数组来添加,并
对应,并添加为英雄类.


Tom 的英雄:后羿
//需求:整个游戏的过程是 Game 类,添加真人玩家的功能和AI 的功能,每个
英雄添加每回合的攻击力的随机数和防御力的随机数用 gfshow0方法制作.


后羿[生命值:80 攻击力:15防御力:12命中率:0.7]

AI 的英雄:姐己 //(在这五个名字里随机生成一个)

姐己[生命值:50 攻击力:20防御力:5命中率:0.75)

***************第一合***************//三个回合为自动生成
Tom 发动了攻击:
后羿发动了攻击:真实攻击力为:12//为随机数,1~15
姐己进行了防御:真实防御力为:1//为随机数,1~12

AI 发动了攻击:
姐己发动了攻击:真实攻击力为:10 //为随机数,1~20
后羿进行了防御:真实防御力为:6 //为随机数,1~12
第[1] 回合赢家是 Tom //用伤害类制作,算出每回合的玩家和 A,受伤害最低的一方获胜和血量高的一方获胜.

//共进行三个回合
结果: Tom 胜出 //这三回合获胜的最多的一方
是否开始下一局(y/n):y //重新开始,给个返回值

  1. import java.util.Random;
  2. import java.util.Scanner;
  3. class Hero {
  4.     private String name;
  5.     private int health;
  6.     private int attack;
  7.     private int defense;
  8.     private double hitRate;
  9.      public Hero(String name, int health, int attack, int defense, double hitRate) {
  10.         this.name = name;
  11.         this.health = health;
  12.         this.attack = attack;
  13.         this.defense = defense;
  14.         this.hitRate = hitRate;
  15.     }
  16.      public String getName() {
  17.         return name;
  18.     }
  19.      public int getHealth() {
  20.         return health;
  21.     }
  22.      public int getAttack() {
  23.         return attack;
  24.     }
  25.      public int getDefense() {
  26.         return defense;
  27.     }
  28.      public double getHitRate() {
  29.         return hitRate;
  30.     }
  31.      public void attack(Hero target) {
  32.         Random random = new Random();
  33.         int targetDefense = target.getDefense();
  34.         int defense = random.nextInt(targetDefense + 1); // 随机生成防御值
  35.         if (random.nextDouble() < hitRate) {
  36.             int damage = (int) (attack * (1 - defense / 100.0));
  37.             target.takeDamage(damage);
  38.             System.out.println(name + "攻击了" + target.getName() + ",造成了" + damage + "点伤害!");
  39.         } else {
  40.             System.out.println(name + "攻击了" + target.getName() + ",但未命中!");
  41.         }
  42.     }
  43.      public void takeDamage(int damage) {
  44.         health -= damage;
  45.         if (health < 0) {
  46.             health = 0;
  47.         }
  48.     }
  49.      public boolean isAlive() {
  50.         return health > 0;
  51.     }
  52. }
  53. public class Game {
  54.     public static void main(String[] args) {
  55.         System.out.println("**************欢迎来到 1VS1 人机对战**************\n");
  56.         System.out.println("游戏开始\n");
  57.          Scanner scanner = new Scanner(System.in);
  58.         System.out.print("请输入你的名称:");
  59.         String playerName = scanner.nextLine();
  60.         System.out.println("\n游戏开始 [" + playerName + "] Vs [AI]\n");
  61.          Hero[] heroes = {
  62.                 new Hero("张飞", 100, 10, 12, 0.85),
  63.                 new Hero("后羿", 80, 15, 12, 0.7),
  64.                 new Hero("妲己", 50, 20, 5, 0.75),
  65.                 new Hero("元芳", 70, 10, 8, 0.7),
  66.                 new Hero("露露", 70, 12, 10, 0.8),
  67.                 new Hero("大鱼", 100, 5, 20, 0.75)
  68.         };
  69.          System.out.println("[1.张飞 2.后羿 3.妲己 4.元芳 5.露露 6.大鱼]");
  70.         System.out.print("请输入你要选择的英雄的编号:");
  71.         int playerHeroIndex = scanner.nextInt() - 1;
  72.         Hero playerHero = heroes[playerHeroIndex];
  73.         System.out.println("\n" + playerName + " 的英雄:" + playerHero.getName() + "\n");
  74.          Random random = new Random();
  75.         int aiHeroIndex = random.nextInt(heroes.length);
  76.         Hero aiHero = heroes[aiHeroIndex];
  77.         System.out.println("AI 的英雄:" + aiHero.getName() + "\n");
  78.          System.out.println("***************第一回合***************");
  79.         for (int i = 1; i <= 3; i++) {
  80.             System.out.println("\n第[" + i + "]回合");
  81.             System.out.println(playerHero.getName() + "发动了攻击:");
  82.             playerHero.attack(aiHero);
  83.             System.out.println(aiHero.getName() + "发动了攻击:");
  84.             aiHero.attack(playerHero);
  85.             System.out.println();
  86.         }
  87.          System.out.println("结果:");
  88.         if (playerHero.getHealth() > aiHero.getHealth()) {
  89.             System.out.println(playerName + " 胜出!");
  90.         } else if (playerHero.getHealth() < aiHero.getHealth()) {
  91.             System.out.println("AI 胜出!");
  92.         } else {
  93.             System.out.println("平局!");
  94.         }
  95.          System.out.print("\n是否开始下一局(y/n):");
  96.         String continueGame = scanner.next();
  97.         if (continueGame.equalsIgnoreCase("y")) {
  98.             main(args);
  99.         } else {
  100.             System.out.println("\n游戏结束");
  101.         }
  102.     }
  103. }
复制代码
在这个修正后的代码中, Hero 类的 attack() 方法中根据被攻击英雄的防御值生成一个区间,然后随机生成一个防御值。防御值的范围是从0到被攻击英雄的防御值。每次攻击时,都会生成一个新的随机防御值,并应用于计算伤害。

相关帖子

扫码关注微信公众号,及时获取最新资源信息!下载附件优惠VIP会员5折;永久VIP免费
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明:
1、本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
2、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,请勿任何商业目的与商业用途。
3、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
4、论坛的所有内容都不保证其准确性,完整性,有效性,由于源码具有复制性,一经售出,概不退换。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
5、用户使用本网站必须遵守适用的法律法规,对于用户违法使用本站非法运营而引起的一切责任,由用户自行承担
6、本站所有资源来自互联网转载,版权归原著所有,用户访问和使用本站的条件是必须接受本站“免责声明”,如果不遵守,请勿访问或使用本网站
7、本站使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本站不承担任何责任。
8、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
9、本站以《2013 中华人民共和国计算机软件保护条例》第二章 “软件著作权” 第十七条为原则:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。若有学员需要商用本站资源,请务必联系版权方购买正版授权!
10、本网站如无意中侵犯了某个企业或个人的知识产权,请来信【站长信箱312337667@qq.com】告之,本站将立即删除。
郑重声明:
本站所有资源仅供用户本地电脑学习源代码的内含设计思想和原理,禁止任何其他用途!
本站所有资源、教程来自互联网转载,仅供学习交流,不得商业运营资源,不确保资源完整性,图片和资源仅供参考,不提供任何技术服务。
本站资源仅供本地编辑研究学习参考,禁止未经资源商正版授权参与任何商业行为,违法行为!如需商业请购买各资源商正版授权
本站仅收集资源,提供用户自学研究使用,本站不存在私自接受协助用户架设游戏或资源,非法运营资源行为。
快速回复 返回顶部 返回列表