| 

.NET C# Java Javascript Exception

1
Hallo Leute,
mein Idee sieht folgendermaßen aus:
Hauptklasse "Engine"
play = new spielfeld
player = new player
monst = new monster etc..
- spielerbewegen()
- monsterbewegen()
- spielfeld_nach_sicht_zeichnen()// wird ja nicht alles gezeichnet, sondern nur der Bereich den man sieht.
- sontiges events()

Alle unterklassen werden in der "Engine" Klasse instanziiert.

Unterklasse "Spielfeld"
- größe, sprite each sqm, position x, position y, etc.

Unterklasse "Spieler"
- level, hp, schwertskill, position x, position y, sprite etc.

Unterklasse "Monster"
- level, hp, position x, position y, sprite etc.

Unterklasse "Waffe"
- Angriffswert, Def. Wert, etc.


was haltet ihr davon? Sollte ich den Aufbau anders gestalten?

Gruß
Spicejam
26.10.2010
spicejam 853 2 6
1 Antwort
2
Sieht für den Angang ganz gut auf folgende Änderungen würde ich vornehmen:

Sieht für den Angang ganz gut auf folgende Änderungen würde ich vornehmen:

Hauptklasse "Engine"
play = new spielfeld
player = new player
List<IMonster> monst = new List<IMonster>()
- Methode: StartLeve(int LevelId)
{
//Soviele Monster wie das Level zum start hat hinzufügen und positionieren
monst.add(new mosnter(...));
}
- spielerbewegen()
- monsterbewegen()
- spielfeld_nach_sicht_zeichnen()// wird ja nicht alles gezeichnet, sondern nur der Bereich den man sieht.
- sontiges events()

Alle unterklassen werden in der "Engine" Klasse instanziiert.

Unterklasse "Spielfeld"
- größe, sprite each sqm, position x, position y, etc.

//========================================================

Interface "IEntity"
- level
- Position
- List<ISkills>
- List<IWeapon>
- List<IStats> (Hier dann HP, Angriffskraft, ...)

//Buff ein Buff / Debuff ist eine temporäre Steigerung der Fähigkeiten
// oder Attribute (z.b. "SuperHpPot, Erhöht die HP für 20 sec. um 10%")
- List<DeBuffs>


Unterklasse "MonsterTyp_SehrBöhse" : "Monster"
- MustOverwride Methode: init(){ //alternative Construtor
//Muss überschrieben werden!
//- Hier Liste der Skills, Waffem, Stats inizialisieren, z.B. aus einer Datenbank
}

Unterklasse "Spieler" : "IEntity"
- init(){
//Liste der Fähigkeiten aufbauen
base.Skills.Add(new AttackSkill(Name: "Baseattack", Schaden: 10, ...)

}

Interface "IMonster" : "IEntity"
Unterklasse "MonsterTyp_SehrBöse" : "IMonster"
- init(){
//Liste der Fähigkeiten aufbauen
base.Skills.Add(new AttackSkill(Name: "Baseattack", Schaden: 10, ...)
}
Unterklasse "MonsterTyp_SehrBöserZauberer" : "IMonster"
- init(){
//Liste der Fähigkeiten aufbauen
base.Skills.Add(new AttackSkill(Name: "Baseattack", Schaden: 10, ...)
base.Skills.Add(new CastSkill(Name: "Feuerball", Schaden: 30, CastTime: 3sec., ...)
}

//========================================================

Interface "IWeapon"
- Name
- BasisSchaden

Unterklasse "Schwert" : "IWeapon"
- List<IStats>

//========================================================

Interface IStats
- Wert
- MustOverwride Methode: ToString()
- Methode: enhance(wert) //Stat erhöhen
- Methode: decrease(wert) //Stat abschwächen

Unterklasse "HP" : "IStats"
- Methode: ToString() => "Lebenspunkte"


Im wesendlichen immer für jeden neuen Objekttyp auf dem Spielfeld auch ein eigenes Objekt machen und Zusatzinformationen wie Fähigkeiten, Attribute, Waffen etc. ebenfalls von Objekten und Interface ableiten.
Damit bist du am ende am flexibelsten und kannst schnell neue Sachen hinzufügen ohne diese an 20 Stellen nachzupflegen.
26.10.2010
Floyd 14,6k 3 9
Wie immer, sehr geile Antwort von dir. Thumbs up! Jetzt aber eine Frage mit der ich den DAU- Award überreicht bekomme(bin ich mir ziemlich sicher). Undzwar der Punkt "Interface". Ein Interface ist doch nichts anderes als eine abstrakte Klasse die abgeleitete Klassen nutzt. Richtig oder falsch?
spicejam 26.10.2010
Oh, ich nehme die Frage da oben zurück :-)! Wie ich sehe, habe ich ein riesiges Kapitel in der OOP übersprungen. Das ganze ist ja noch komplexer als die Klassifizierung. Ich verstehe nur Bahnhof!
spicejam 26.10.2010
1
Hallo spicejam, als als erstes kann ich dir anbieten das wir uns mal privat um Skype oder Teamspeak oder so treffen und du deine Fragen direkt loswerden kannst :D
Als zweites: Interfaces dienen der Beschreibung einer Schnittstelle. Jede Klasse (ob abstract oder nicht) kann eines oder mehrere Interface implementieren und muss dann die im Interface geforderten Methoden (und Eigenschaften, Properties etc) zur Verfügung stellen. Ein Interface selber kann jedoch keinerlei Programmcode enthalten. Warum? Weil ein Interface eine Beschreibung ist. Und Programmcode gehört nicht in eine solche.
Floyd 26.10.2010
1
Ein weiteres Thema ist Vererbung. Klassen können von anderen Klassen erben und somit alle Methoden(..) der Basisklasse übernehmen und überschreiben. Ansonsten verhalten Sie sich wie normale Klassen. (Wichtig: In C# ist es nicht möglich von mehreren Klassen zu erben! In VB.Net geht das) Fügst du nun der Basisklasse eine neue Methode hinzu, erben alle abgeleiteten Klassen ebenfalls diese Methode. Änderst du eine Methode in der Basisklasse brauchst du keinerlei Änderungen an den abgeleiteten Klassen vornehmen.
Floyd 26.10.2010
1
Ein Beispiel, die Klasse "Dictionary" aus System.Collections.Generic: "public class Dictionary<TKey,TValue> : Object, IDictionary<TKey,TValue>, IDictionary, ISerializable, IDeserializationCallback" Diese Klasse Implemtiert 3(respektive 4) Interfaces. Und zwar IDictionary, ISerializable und IDeserializationCallback. Dazu erbt Sie alle Eigenschaften und Methoden der Klasse "Object".
Floyd 26.10.2010
1
Btw. zum Thema DAU-Award. Ich würd dir lieber den DAP-Award überreichen (DA Programmer :D) .. ne Spaß beiseite. Wir haben alle mal klein angefangen. Jeder der sich heute GURU nennt hat sich das alles erarbeiten müssen. Auch wenn viele so tun als ob sie mit dem ganzen Wissen schon gebohren wurden.
Floyd 26.10.2010
Hallo spicejam, du hast dich zum Thema Skype noch nicht geäußert. Wenn du interesse hast, kannst du mir unter der Adresse: fzygom@tempalias.com eine E-Mail (z.B. mit deinem Skype-Name) zukommen lassen. Diese E-Mailweiterleitung ist die nächsten 10 Tage gültig.
Floyd 26.10.2010
Hey Floyd. Vielen dank für die ausführliche Erklärung! Dein Angebot nehme ich gerne entgegen :-). bin nur momenten ziemlich im Arbeitsstress! Ich schicke dir aber aufjedenfall meine E-Mail zu. Danke.
spicejam 06.11.2010
Ich würde die empfehlen dir das StrategyPattern anzuschauen. http://de.wikipedia.org/wiki/Strategie_(Entwurfsmuster)
Weiti 14.01.2011

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH