以下是一个简单的Java程序,模拟了《洛克王国》游戏的基本宠物对战功能。程序包含宠物选择、技能攻击和战斗逻辑:

import java.util.Scanner;

class Pet {
    private String name;
    private int hp;
    private int attack;
    private int speed;
    private String[] skills;

    public Pet(String name, int hp, int attack, int speed, String[] skills) {
        this.name = name;
        this.hp = hp;
        this.attack = attack;
        this.speed = speed;
        this.skills = skills;
    }

    public String getName() { return name; }
    public int getHp() { return hp; }
    public int getAttack() { return attack; }
    public int getSpeed() { return speed; }
    public String[] getSkills() { return skills; }

    public void takeDamage(int damage) {
        hp -= damage;
        if (hp < 0) hp = 0;
    }

    public boolean isFainted() {
        return hp <= 0;
    }
}

public class RockKingdomGame {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // 创建宠物库
        Pet[] pets = {
            new Pet("火花", 100, 30, 40, new String[]{"火焰喷发", "热力爆弹", "龙之爪牙", "暴击枪"}),
            new Pet("水灵", 120, 25, 35, new String[]{"高压喷射", "水之波纹", "治愈之泉", "漩涡术"}),
            new Pet("喵喵", 90, 35, 50, new String[]{"藤鞭打击", "种子机枪", "阳光烈焰", "寄生种子"})
        };

        System.out.println("欢迎来到洛克王国!");
        System.out.println("请选择你的宠物:");
        
        // 显示宠物选项
        for (int i = 0; i < pets.length; i++) {
            System.out.printf("%d. %s (HP: %d, 攻击: %d, 速度: %d)\n", 
                i + 1, pets[i].getName(), pets[i].getHp(), pets[i].getAttack(), pets[i].getSpeed());
        }

        // 玩家选择宠物
        int choice;
        do {
            System.out.print("输入选择 (1-" + pets.length + "): ");
            choice = scanner.nextInt();
        } while (choice < 1 || choice > pets.length);
        
        Pet playerPet = pets[choice - 1];
        System.out.println("你选择了: " + playerPet.getName());

        // 随机选择对手
        Pet opponent = pets[(int)(Math.random() * pets.length)];
        while (opponent == playerPet) {
            opponent = pets[(int)(Math.random() * pets.length)];
        }
        System.out.println("\n你的对手是: " + opponent.getName());
        
        // 战斗开始
        System.out.println("\n===== 战斗开始! =====");
        
        while (!playerPet.isFainted() && !opponent.isFainted()) {
            // 显示状态
            System.out.println("\n" + playerPet.getName() + " HP: " + playerPet.getHp());
            System.out.println(opponent.getName() + " HP: " + opponent.getHp());
            
            // 玩家回合
            System.out.println("\n你的回合!选择技能:");
            String[] skills = playerPet.getSkills();
            for (int i = 0; i < skills.length; i++) {
                System.out.println((i + 1) + ". " + skills[i]);
            }
            
            int skillChoice;
            do {
                System.out.print("选择技能 (1-" + skills.length + "): ");
                skillChoice = scanner.nextInt();
            } while (skillChoice < 1 || skillChoice > skills.length);
            
            String chosenSkill = skills[skillChoice - 1];
            int damage = (int)(playerPet.getAttack() * (0.8 + Math.random() * 0.4));
            
            // 应用伤害
            opponent.takeDamage(damage);
            System.out.printf("%s 使用了 %s! 造成 %d 点伤害!\n", 
                playerPet.getName(), chosenSkill, damage);
            
            if (opponent.isFainted()) {
                System.out.println(opponent.getName() + " 失去战斗能力!");
                break;
            }
            
            // 对手回合
            String opponentSkill = opponent.getSkills()[(int)(Math.random() * opponent.getSkills().length)];
            int opponentDamage = (int)(opponent.getAttack() * (0.7 + Math.random() * 0.4));
            
            playerPet.takeDamage(opponentDamage);
            System.out.printf("%s 使用了 %s! 造成 %d 点伤害!\n", 
                opponent.getName(), opponentSkill, opponentDamage);
            
            if (playerPet.isFainted()) {
                System.out.println(playerPet.getName() + " 失去战斗能力!");
            }
        }
        
        // 战斗结果
        System.out.println("\n===== 战斗结束! =====");
        if (playerPet.isFainted()) {
            System.out.println("很遗憾,你输了...");
        } else {
            System.out.println("恭喜你获胜了!");
        }
    }
}


要运行此程序,只需将代码复制到名为RockKingdomGame.java的文件中,然后使用Java编译器编译运行即可。

 

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐