Ich erstelle ein kleineres RPG-Spiel in ASP.NET. In diesem Spiel habe ich eine Items-Architektur, wo jeder Gegenstand einige Methoden hat. Zum Beispiel sollten alle Elemente eine Methode teilen wie "Drop", "Untersuchen" und "Verwenden". Einige Elemente werden müssen mit Methoden erweitert wie „Betreiben“, „berechnen“ und so weiter.Liste der Delegierten und Aufruf
Bisher habe ich folgendes Objekt GameActionList erstellt:
public delegate void MyDelegate();
public class GameActionList
{
public List<MyDelegate> Items = new List<MyDelegate>();
public void Add(MyDelegate del)
{
Items.Add(del);
}
public void CallDelegates()
{
foreach (MyDelegate myDelegate in Items)
{
myDelegate();
}
}
}
ich eine BaseItem Klasse, die diesen GameActionList hat. Die get-Eigenschaft dieses in der BaseItem Klasse ist wie folgt:
public GameActionList Actions
{
get
{
GameActionList actions = new GameActionList();
actions.Add(this.Drop);
actions.Add(this.Examine);
return actions;
}
}
Das ist in Ordnung, aber ... Ich habe einige Probleme!
Mein Problem
Ich muss einen Weg allgemeinere GameActionList. Ich brauche nicht nur eine Liste von Lücken, sondern auch Funktionen. Außerdem brauche ich beide Methoden mit Parametern und ohne Parameter.
Zum Beispiel: Die Drop Methode wird ein Player-Objekt benötigen, damit er den Artikel fallen lassen kann. Die Methode Examine muss eine Zeichenfolge zurückgeben, die das Element beschreibt.
Auch brauche ich einige Daten, die ich weiß nicht, wann ich das GameActionList initialisieren: ich zuerst diese Daten wissen, wenn ich die Methode aufrufen ...
So habe ich zwei Fragen:
- Wie erweitern Sie die GameActionList, so kann es eine Liste von beiden Voids und Funktionen enthalten und auch diese beide Parameter haben können oder nicht .. (UND ES ES AUCH Sinn machen ??)
- Wie kann ich einige Daten geben Methode später im Zyklus, wie beim Aufruf?
Auch ... Dies könnte eine sehr dumme Art und Weise, es zu tun, wenn Sie also einen Weg elegantere Lösung haben .. Ich bin mehr als bereit, es zu hören!
Vielen Dank ...! Lars
Thanks a lot für Ankündigung :) ich nicht diese Funktion wusste .. akzeptiert einfach die richtigen Antworten der letzten Fragen .. :-) –