文本冒险,敌人统计数据不是 storing/updating 从一种方法到另一种方法?

Text Adventure, enemy stats not storing/updating from one method to another?

我这里有一个系统可以随机生成一个敌人角色,该角色具有涉及他们的种族、性别等随机特征。当字符串数组 enemyRace 选择其中一个选项时,我有一个 if 语句块来修改生命值,防御和金钱,无论选择什么种族。

一旦完成,它应该在 EnemyStats() 方法的底部显示该信息,但它没有,所有统计数据都显示为 0。我在 Start class 中初始化这两个方法Main 方法。

你们能帮忙正确显示它的统计数据吗?是因为这些方法无效吗?我还是 C# 的新手,所以任何指导都将不胜感激。

class开始(包含Main方法)

        // Loading in objects 
        Enemy enemy = new Enemy();

        // Loading in the game

        Console.WriteLine("Press enter to create a new character . . . ");
        string input = Console.ReadLine();
        Console.Clear();

        // Game Loop
        enemy.EnemySpawn();
        enemy.EnemyStats();
        Console.ReadLine();

class敌人

    Random random = new Random();

    // Enemy Base Stats
    public static int enemyHP;
    public static int enemyEP;
    public static int enemyCoins;

    // Enemy Attack
    public static int enemyMelee = 0;
    public static int enemyMagic = 0;
    public static int enemyRange = 0;

    // Enemy Defense
    public static int enemyMeleeDefense = 0;
    public static int enemyMagicDefense = 0;
    public static int enemyRangeDefense = 0;

    public void EnemySpawn()
    {

        string[] enemyGender = { "Male ", "Female " };
        string[] enemyRace = { "Human ", "Elf ", "Dwarf ", "Gnome ", "Halfling ", "Half-Elf ", "Half-Orc " };
        string[] enemyClass = { "Ranger", "Paladin", "Thief", "Mage", "Shaman", "Warlock", "Cleric", "Druid", "Monk", "Bard", "Mercenary", "Merchant" };

        // Determines if class is Melee, Magic, Healer, or Clerk
        int enemyClassChance = random.Next(1, 4);

        if (enemyRace.ToString() == "Human ")
        {
            enemyHP += 100;
            enemyEP += 80;
            enemyCoins += 10;

            enemyMelee += 5;
            enemyMagic += 5;
            enemyRange += 5;

            enemyMeleeDefense += 6;
            enemyMagicDefense += 5;
            enemyRangeDefense += 6;
        }
        else if (enemyRace.ToString() == "Elf ")
        {
            enemyHP += 90;
            enemyEP += 90;
            enemyCoins += 10;

            enemyMelee += 5;
            enemyMagic += 9;
            enemyRange += 8;

            enemyMeleeDefense += 4;
            enemyMagicDefense += 8;
            enemyRangeDefense += 4;
        }
        else if (enemyRace.ToString() == "Dwarf ")
        {
            enemyHP += 125;
            enemyEP += 100;
            enemyCoins += 10;

            enemyMelee += 8;
            enemyMagic += 5;
            enemyRange += 5;

            enemyMeleeDefense += 8;
            enemyMagicDefense += 3;
            enemyRangeDefense += 4;
        }
        else if (enemyRace.ToString() == "Gnome ")
        {
            enemyHP += 95;
            enemyEP += 80;
            enemyCoins += 10;

            enemyMelee += 4;
            enemyMagic += 8;
            enemyRange += 4;

            enemyMeleeDefense += 2;
            enemyMagicDefense += 6;
            enemyRangeDefense += 5;
        }
        else if (enemyRace.ToString() == "Halfling ")
        {
            enemyHP += 80;
            enemyEP += 75;
            enemyCoins += 10;

            enemyMelee += 3;
            enemyMagic += 10;
            enemyRange += 7;

            enemyMeleeDefense += 1;
            enemyMagicDefense += 9;
            enemyRangeDefense += 4;
        }
        else if (enemyRace.ToString() == "Half-Elf ")
        {
            enemyHP += 95;
            enemyEP += 80;
            enemyCoins += 10;

            enemyMelee += 2;
            enemyMagic += 8;
            enemyRange += 8;

            enemyMeleeDefense += 5;
            enemyMagicDefense += 8;
            enemyRangeDefense += 2;
        }
        else if (enemyRace.ToString() == "Half-Orc ")
        {
            enemyHP += 150;
            enemyEP += 125;
            enemyCoins += 10;

            enemyMelee += 10;
            enemyMagic += 1;
            enemyRange += 4;

            enemyMeleeDefense += 10;
            enemyMagicDefense += 1;
            enemyRangeDefense += 5;
        }

        switch (enemyClassChance)
        {
            case 1:
                Console.WriteLine(enemySpawnText[random.Next(0, enemySpawnText.Length)] + enemyGender[random.Next(0, enemyGender.Length)] +
                                  enemyRace[random.Next(0, enemyRace.Length)] + enemyClassMelee[random.Next(0, enemyClassMelee.Length)] + ".");
                break;
            case 2:
                Console.WriteLine(enemySpawnText[random.Next(0, enemySpawnText.Length)] + enemyGender[random.Next(0, enemyGender.Length)] +
                                  enemyRace[random.Next(0, enemyRace.Length)] + enemyClassMagic[random.Next(0, enemyClassMagic.Length)] + ".");
                break;
            case 3:
                Console.WriteLine(enemySpawnText[random.Next(0, enemySpawnText.Length)] + enemyGender[random.Next(0, enemyGender.Length)] +
                                  enemyRace[random.Next(0, enemyRace.Length)] + enemyClassHealer[random.Next(0, enemyClassHealer.Length)] + ".");
                break;
            case 4:
                Console.WriteLine(enemySpawnText[random.Next(0, enemySpawnText.Length)] + enemyGender[random.Next(0, enemyGender.Length)] +
                                  enemyRace[random.Next(0, enemyRace.Length)] + enemyClassClerk[random.Next(0, enemyClassClerk.Length)] + ".");
                break;
        }

    }

    public void EnemyStats()
    {
        Console.WriteLine("##################### ");
        Console.WriteLine("Enemy Statistics: ");
        Console.WriteLine(" ");
        Console.WriteLine("Melee:       {0}", enemyMelee);
        Console.WriteLine("Magic:       {0}", enemyMagic);
        Console.WriteLine("Range:       {0}", enemyRange);
        Console.WriteLine(" ");
        Console.WriteLine("Melee Defense:       {0}", enemyMeleeDefense);
        Console.WriteLine("Magic Defense:       {0}", enemyMagicDefense);
        Console.WriteLine("Range Defense:       {0}", enemyRangeDefense);
        Console.WriteLine("##################### ");
        Console.ReadLine();

    }
}

}

在您的 EnemySpawn() 方法中,而不是:

 if (enemyRace.ToString() == "Human ")

在每个条件下替换(即在 if 块中使用 enemyClassChance 作为索引,如下所示)

if (enemyRace[enemyClassChance].ToString() == "Human ")

另外,我相信

 int enemyClassChance = random.Next(1, 4);

应该是:

int enemyClassChance = random.Next(1, enemyRace.Length);