Написание всей вашей программы выходит за рамки того, что может обеспечить переполнение стека, но я могу дать несколько общих советов.
Начинающие часто застревают, потому что они не разбили свою проблему на решаемые шаги.В программировании вы обычно разбиваете проблему на этапы, создавая классы.Вы создали класс для врагов, но если вы хотите «сделать что-то ... где вы сражаетесь более чем с одним врагом», вам нужно создать класс для этого.
public class Encounter
{
Player player;
IEnumerable<Enemy> enemies;
public Encounter(Player player)
{
if (player == null) throw new ArgumentNullException(nameof(player));
this.player = player;
enemies = new List<Enemy>();
}
}
Теперь вместо того, чтобы сражаться с врагамивы боретесь со встречами:
var encounter = new Encounter(player);
У вас есть много неопределенных идентификаторов в вашем примере.Я предполагаю, что это статические переменные.Вы не должны использовать их, вы должны создавать переменные и методы класса;Ваш encounterMenu
метод должен выглядеть примерно так:
switch (choice)
{
case 1:
player.Attack(encounter);
encounter.Attack(player);
break;
case 2:
encounter.Attack(player);
player.Heal();
break;
}
Вы также не должны жестко программировать консольные команды в своей логике.Если вам нужно напечатать имя или запрос, вы должны сделать это в своем пользовательском интерфейсе:
Console.WriteLine($"A {encounter.name} appears!");