我正在制作一个简单的D&D战斗程序。我正在尝试获取使随机数量的对象命名为敌人的程序。我以为自己做到了,但是当我console.writeline
的敌人列表时,我得到的是同一物体的双倍?
namespace ConsoleApp2
{
public class Enemy
{
int HP = Tool.RandomNum(5, 20);
public static int currentEnemies;
public string Name = "Enemy ";
}
public static void CreateEnemies(int NumberOfEnemies)
List<Enemy> Enemieslist = new List<Enemy>();
int EnemyName=0;
while (NumberOfEnemies>0)
{
NumberOfEnemies--;
EnemyName++;
Enemieslist.Add (new Enemy { Name = "Enemy " + (EnemyName) });
foreach (var Enemy in Enemieslist)
{
Console.WriteLine(Enemy.Name);
}
Enemy.currentEnemies++;
}
static void Main(string[] args)
{
Tool.CreatePlayers();
Tool.CreateEnemies(Tool.RandomNum(1,10)); //Tool.RandomNum(Highest Possible Value, Lowest)
Console.WriteLine("{0} Enemies Approach...", Enemy.currentEnemies);
Console.WriteLine("{0} Fighters Stands Ready...", Player.currentPlayers);
}
输出:
how many Players? 1
Player 1 what is you name? Ragnar
Enemy 1
Enemy 1
Enemy 2
Enemy 1
Enemy 2
Enemy 3
Enemy 1
Enemy 2
Enemy 3
Enemy 4
Enemy 1
Enemy 2
Enemy 3
Enemy 4
Enemy 5
Enemy 1
Enemy 2
Enemy 3
Enemy 4
Enemy 5
Enemy 6
Enemy 1
Enemy 2
Enemy 3
Enemy 4
Enemy 5
Enemy 6
Enemy 7
7 Enemies Approach...
1 Fighters Stand Ready...
Press any key to continue . . .
该程序似乎在制造正确数量的敌人,但多次写下他们的名字。
答案 0 :(得分:1)
您有一个循环
while (NumberOfEnemies > 0)
{
foreach (var Enemy in Enemieslist)
{
Console.WriteLine(Enemy.Name);
}
}
在while循环中,您正在编写每个Enemy.Name
,这是您获得的输出。
public static void CreateEnemies(int NumberOfEnemies)
丢失了{ }
答案 1 :(得分:0)
看起来您有writeline语句来指示敌人的名字写在错误的位置-在创建第一个敌人后,它会为所有敌人写 所有敌人都只是“敌人1”
但是在创建第二个敌人之后,它会再次为所有敌人书写。“ Enemy1,Enemy2”
然后再进行第3次。然后进行第4次
每次创建敌人时,它就会写出全部敌人列表。