所以我对c#和一般编码都很陌生,所以我希望我的问题有意义。我在网上发现了类似的问题,但我的问题非常具体。所以首先我有一个名为" Enemy"的对象类。其中有很多属性。
public class Enemy
{
public string EName { get; set; }
public int EHealth { get; set; }
public int EStamina { get; set; }
public int EPower { get; set; }
public Enemy(string ename, int ehealth, int estamina, int epower)
{
EName = ename;
EHealth = ehealth;
EStamina = estamina;
EPower = epower;
}
}
然后在我的主要内容中,我列出了新的" Enemy"要添加到的对象:
List<Enemy> Enemies = new List<Enemy>();
我有一个1到4之间的随机数,它决定了会产生多少敌人,称为&#34; eNumber&#34;:
for (int i = 1; i <= eNumber; i++)
{
var rndmHealth = rndm.Next(6, 12);
var rndmStamina = rndm.Next(6, 12);
var rndmPower = rndm.Next(6, 12);
var enemy = new Enemy($"Goblin{i}", rndmHealth, rndmStamina, rndmPower);
Console.WriteLine($@"
{enemy.EName}:
Health: {enemy.EHealth}
Stamina: {enemy.EStamina}
Power: {enemy.EPower}
");
}
所以这应该产生一个随机数量的敌人(在这种情况下,&#34; goblins&#34;),以及他们属性的随机整数。然后控制台应告诉玩家敌人的名字及其属性。我现在希望玩家能够输入他想要攻击的怪物的名字,所以就像&#34; Goblin1&#34;或者&#34; Goblin3&#34;,但是如果输入了无效的EName,我希望提示玩家再次尝试。我希望这是有道理的,谢谢你的时间!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
好吧,我几乎已经明白了这一点! 我换了var enemy = new Enemy($"Goblin{i}", rndmHealth, rndmStamina, rndmPower);
与
Enemies.Add(new Enemy($"Goblin{i}", rndmHealth, rndmStamina, rndmPower));
现在,在创建时,新的敌人对象被添加到敌人列表中。但是,现在我不知道如何访问他们的房产:
Console.Writeline(enemy.EName);
^这不再适用。我现在需要知道的是这个的正确语法,我设置:] 感谢所有帮助我的人!
答案 0 :(得分:0)
试试这个:
List<Enemy> Enemies = new List<Enemy>();// Declare your list
// Loop To populate the list
for (int i = 1; i <= eNumber; i++)
{
Enemies.Add(new Enemy($"Goblin{i}", rndm.Next(6, 12), rndm.Next(6, 12), rndm.Next(6, 12)));
}
// Loop Throught The Enemies, Then you can access their status
for (int i = 0; i < Enemies.Count; i++)
{
Console.WriteLine(Enemies[i].EName,Enemies[i].EHealth,Enemies[i].EStamina,Enemies[i].EPower);
}
答案 1 :(得分:-1)
你的问题就在这里 for(int i = 0; i&lt; = Enemies.Count; i ++) { if(Enemies [i] .EType.Contains(ATattack))
它应该是i < Enemies.Count
,因为索引是基于零的
享受