java – 使用外部类中的方法从该方法获取特定变量

我正在用 Java编写一个基于文本的基于任务的搜索游戏,以便更好地掌握语言.

我正在尝试创建一个可以从另一个类调用的方法.我想调用的方法包含重复的变量,我希望在使用switch语句时显示正确的变量.

public class Enemies {

    String enemyName = "Generic Enemy";//initialised the enemy stats so something is called if the switch failed
    double enemyHealth = 110.0;
    int enemyAttackDamage = 10;
    int enemyDefenseLevel = 1;
    int hardLevel = 1;
    int lootDropped = 50;

    public void enemyDecided(int choice){
        switch(choice)
        {
            case 1: 
                this.enemyName = "Sentient Shoelace";
                this.enemyHealth = 100.0;
                this.enemyAttackDamage = 1;
                this.enemyDefenseLevel = 1;
                this.hardLevel = 2;
                this.lootDropped = 100;
                break;
            case 2:
                this.enemyName = "Slimey Fartbox";
                this.enemyHealth = 100.0;
                this.enemyAttackDamage = 2;
                this.enemyDefenseLevel = 1;
                this.hardLevel = 3;
                this.lootDropped = 100;
                break;
            default: System.out.println("Mess up in the enemy selection process");
        }
    }
}

我试图通过另一个类来调用它

private void fight()
{
    //I'm using a rand.nextInt() to get enemychoice
    Enemies enemyToFight = new Enemies();
    enemy = enemyToFight.enemyDecided(enemyChoice);//
    System.out.println("You run into a "  + enemy.enemyName);
}

我的fight()方法根本不起作用.并且有充分的理由.我所写的是纯粹的废话,虽然我在我的智慧结束和我微薄知识的边缘.

我敢肯定有眼睛的人都能看到我正在尝试构建一个伪结构.作为最近从C转换,我仍然在学习如何做得更好.如果这在Java中是一个非常错误的想法,那么你可以指出我正确的方向.虽然有机会拯救它会让我非常开心.

但是如果可能的话,我想尝试让这个工作正常,所以任何帮助都会受到赞赏.

看起来你真正想要的是你的Enemies类的构造函数,而不是void方法:

public Enemies(int choice){
    switch(choice)
    {
    case 1: 
        this.enemyName = "Sentient Shoelace";
        this.enemyHealth = 100.0;
        this.enemyAttackDamage = 1;
        this.enemyDefenseLevel = 1;
        this.hardLevel = 2;
        this.lootDropped = 100;
        break;
    case 2:
        this.enemyName = "Slimey Fartbox";
        this.enemyHealth = 100.0;
        this.enemyAttackDamage = 2;
        this.enemyDefenseLevel = 1;
        this.hardLevel = 3;
        this.lootDropped = 100;
        break;
    default: System.out.println("Mess up in the enemy selection process");
    }
}

现在您可以更改您的fight()方法,如下所示:

private void fight()
{
    //I'm using a rand.nextInt() to get enemychoice
    Enemies enemy = new Enemies(enemyChoice);
    System.out.println("You run into a "  + enemy.enemyName);
}

您可能还需要思考一些风格问题:

>你真的希望它被称为敌人而不是敌人.>如果你只有两种可能的敌人,你可以考虑使用枚举.>您也可以考虑使用另一个带有六个参数的构造函数,每个参数对应您设置的每个参数.如果您愿意,这可以是私有构造函数,并且可以由采用int选择的公共构造函数调用.

相关文章
相关标签/搜索