Om vi bortser från just C#, då jag inte har full koll.
Det du vill göra
List<Enemy> enemies = new List<Enemy>();
enemies.Add(new Enemy.Rat(Location = new Point(5, 5));
enemies.Add(new Enemy.Snake(Location = new Point(10, 5));
Första tipset: Använd arv redan från början om du senare vill utöka din funktionalitet av vissa enemies, kanske speciella attacker eller attribut som att flyga etc.
Säg då att du kanske har
public class Rat : Enemy
{
protected SpecialAbility ability { get; set; }
public Rat(Point position, ... [andra parametrar som har med Enemy att göra], SpecialAbility sAbility){
//Ärvda från Superklassen Enemy
this.position = position;
this.rewardXp = .... etc etc
// Speficikt för klassen Rat
this.ability = sAbility;
}
public override void Attack()
{
// Råttor attackerar med sina klor?
Console.WriteLine("Attacking with claws");
}
}
Genom att använda polymorfism kan du då underlätta ditt arbete lite, exempelvis då
List<Enemy> enemies = new List<Enemy>();
enemies.add(new Rat(1,2,3,4,5,[alla parametrar som du redan har för en enemy],new Point(5,5), new SpecialAbility(....);
enemies.add(new Bird(...., new Point(3,2))
foreach (Enemy e in enemies)
{
e.attack();
}
och då kommer t.ex att bli
"Rat is attacking with claws"
"Bird is attacking with.. näbb?"
EDIT:
Själva frågan handlade nog egentligen om att du behövde en parameter när du skapar din enemy för att kunna tilldela en position när du skapar objektet
Tips
Försök att vara consistent i hur du skriver dina variabelnamn, kolla vilken standard som gäller för C# men viktigast är att inte blanda.
Exempelvis har du både variabler som ser ut såHär, SåHär , såhÄR, såhär
Lite om just arv och polymorfism
https://msdn.microsoft.com/en-us/library/ms173149.aspx
https://msdn.microsoft.com/en-us/library/ms173152.aspx