文本冒险,敌人统计数据不是 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);
我这里有一个系统可以随机生成一个敌人角色,该角色具有涉及他们的种族、性别等随机特征。当字符串数组 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);