首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >一种文本冒险游戏战斗系统的方法

一种文本冒险游戏战斗系统的方法
EN

Stack Overflow用户
提问于 2015-07-21 03:55:03
回答 1查看 1.8K关注 0票数 0

我正在尝试为一个文本冒险游戏创建一个战斗系统,它会产生一个随机的敌人,并有一个随机的生命池,但每个产生的敌人似乎都没有自己的生命池,相反,“主”enemyHealth变量在受到攻击时会递减。因此,输出显示了具有负面健康的新敌人,而不是新的健康池。到目前为止我的代码如下:

代码语言:javascript
运行
复制
 public class Combat{

    //enemy variables
    private int enemyHealth = (int) (Math.random()*75);
    private int maxEnemyDamage = 25;
    private String enemyName;
    //player variables
    private int playerHealth = 100;
    private int playerDamage = 50;
    //health potion variables
    private int numHealthPotions = 3;
    private int healAmount = 30;
    private int dropChance = 50; //percentage

    public String getEnemyName() {
        String[] enemy = {"Zombie", "Witch", "Hell Dog", "Skeleton"};
        int i = (int) (Math.random() * 4);
        this.enemyName = enemy[i];
        return this.enemyName;
    }
    public int getEnemyHealth(){
        return enemyHealth;
    }
    public void enemyAppears(){
        String enemy = getEnemyName();
        System.out.println("A " + enemy + " has appeared with " + enemyHealth + " health.");
    }
    public void attack() {
        int damageTaken =(int) (Math.random() * maxEnemyDamage);
        int damageDealt =(int) (Math.random() * playerDamage);
        enemyHealth -= damageDealt - getEnemyHealth();
        playerHealth -= damageTaken;
        System.out.println("You strike for " + damageDealt);
        System.out.println("You have been hit for " + damageTaken);
        System.out.println("You have " + playerHealth + " hp left.\n The enemy has " + enemyHealth + " hp left.");
        if (playerHealth < 0){
            System.out.println("You died.");
            System.exit(15);
        }

调用这些方法的main方法:

代码语言:javascript
运行
复制
 Combat combat = new Combat();
    Scanner input = new Scanner(System.in);
    System.out.println("Welcome to the dungeon");
    boolean running = true;
    GAME:
    while(running){

        combat.enemyAppears();

        System.out.println("Choose:\n1. To Attack \n2. To Heal \n3. To Run");
        String choice = input.next();
        if(choice.equals("1")) {
            combat.attack();
        } else if (choice.equals("2")){
            combat.heal();
        } else {
            combat.run();
            break;
        }
    }
}

我想把敌人作为对象(我只是按原样随机生成名字),因为我认为这可以解决这个问题,但我不太清楚我的构造函数需要什么。我可以猜测为什么我的代码不能工作,但我也不能修复它。有没有一个简单的构造函数或者setter可以解决这个问题呢?

EN

Stack Overflow用户

发布于 2015-07-21 03:58:07

您只有一个变量enemyHealth。如果你想让每个敌人都有自己的健康变量,你就必须使用int[]。除此之外,真正的OOP方法也是将敌人实现为对象。注意:您也可以使用java.util.Random类来创建随机数。这个类还将提供在给定范围内直接创建随机int的方法。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31525207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档