|
用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 //重新开始,给个返回值
- import java.util.Random;
- import java.util.Scanner;
- class Hero {
- private String name;
- private int health;
- private int attack;
- private int defense;
- private double hitRate;
- public Hero(String name, int health, int attack, int defense, double hitRate) {
- this.name = name;
- this.health = health;
- this.attack = attack;
- this.defense = defense;
- this.hitRate = hitRate;
- }
- public String getName() {
- return name;
- }
- public int getHealth() {
- return health;
- }
- public int getAttack() {
- return attack;
- }
- public int getDefense() {
- return defense;
- }
- public double getHitRate() {
- return hitRate;
- }
- public void attack(Hero target) {
- Random random = new Random();
- int targetDefense = target.getDefense();
- int defense = random.nextInt(targetDefense + 1); // 随机生成防御值
- if (random.nextDouble() < hitRate) {
- int damage = (int) (attack * (1 - defense / 100.0));
- target.takeDamage(damage);
- System.out.println(name + "攻击了" + target.getName() + ",造成了" + damage + "点伤害!");
- } else {
- System.out.println(name + "攻击了" + target.getName() + ",但未命中!");
- }
- }
- public void takeDamage(int damage) {
- health -= damage;
- if (health < 0) {
- health = 0;
- }
- }
- public boolean isAlive() {
- return health > 0;
- }
- }
- public class Game {
- public static void main(String[] args) {
- System.out.println("**************欢迎来到 1VS1 人机对战**************\n");
- System.out.println("游戏开始\n");
- Scanner scanner = new Scanner(System.in);
- System.out.print("请输入你的名称:");
- String playerName = scanner.nextLine();
- System.out.println("\n游戏开始 [" + playerName + "] Vs [AI]\n");
- Hero[] heroes = {
- new Hero("张飞", 100, 10, 12, 0.85),
- new Hero("后羿", 80, 15, 12, 0.7),
- new Hero("妲己", 50, 20, 5, 0.75),
- new Hero("元芳", 70, 10, 8, 0.7),
- new Hero("露露", 70, 12, 10, 0.8),
- new Hero("大鱼", 100, 5, 20, 0.75)
- };
- System.out.println("[1.张飞 2.后羿 3.妲己 4.元芳 5.露露 6.大鱼]");
- System.out.print("请输入你要选择的英雄的编号:");
- int playerHeroIndex = scanner.nextInt() - 1;
- Hero playerHero = heroes[playerHeroIndex];
- System.out.println("\n" + playerName + " 的英雄:" + playerHero.getName() + "\n");
- Random random = new Random();
- int aiHeroIndex = random.nextInt(heroes.length);
- Hero aiHero = heroes[aiHeroIndex];
- System.out.println("AI 的英雄:" + aiHero.getName() + "\n");
- System.out.println("***************第一回合***************");
- for (int i = 1; i <= 3; i++) {
- System.out.println("\n第[" + i + "]回合");
- System.out.println(playerHero.getName() + "发动了攻击:");
- playerHero.attack(aiHero);
- System.out.println(aiHero.getName() + "发动了攻击:");
- aiHero.attack(playerHero);
- System.out.println();
- }
- System.out.println("结果:");
- if (playerHero.getHealth() > aiHero.getHealth()) {
- System.out.println(playerName + " 胜出!");
- } else if (playerHero.getHealth() < aiHero.getHealth()) {
- System.out.println("AI 胜出!");
- } else {
- System.out.println("平局!");
- }
- System.out.print("\n是否开始下一局(y/n):");
- String continueGame = scanner.next();
- if (continueGame.equalsIgnoreCase("y")) {
- main(args);
- } else {
- System.out.println("\n游戏结束");
- }
- }
- }
复制代码 在这个修正后的代码中, Hero 类的 attack() 方法中根据被攻击英雄的防御值生成一个区间,然后随机生成一个防御值。防御值的范围是从0到被攻击英雄的防御值。每次攻击时,都会生成一个新的随机防御值,并应用于计算伤害。
|
|