Guten Abend zusammen,
ich bin gerade dabei mir selbständig das Programmieren beizubringen, als Programmiersprache habe ich für mich C# gewählt. Auf Grund meines Lebensweges ist ein Studium oder eine weitere Ausbildung einfach nicht mehr möglich, daher versuche ich es aus Eigeninterresse mit Hilfe von Büchern, Foren und Videos. Natürlich enstehen dadurch auch einige Wissenslücken, welche dann natürlich zu diversen Problemen im Code führen können. Ich bin auch schon in einem anderen Forum registriert, wo mir zu meinem Glück auch wirklich gut geholfen wird und wo die Mitglieder sehr nett mit Leuten wie mir umgehen, bzw. etwas mehr Verständnis, für die eine oder andere Frage haben.
Als ich letztens bei einem Problem wiedermal das Internet durchstöberte, bin ich auf euer Forum aufmerksam geworden. Da ich als Lernobjekt eine kleine Spieleidee verfolgen möchte, dachte ich mir, das ich in einem Forum für Spieleprogrammierung gar nicht so verkehrt sein kann.
Vorne weg, meine Idee selbst dreht sich um ein Spiel, welches als mmorpg daher kommen könnte. Es geht mir allerdings gar nicht darum das Spiel als solches zu programmieren. Was für mich alleine, ohne blassen Schimmer vom code schreiben auch etwas realitätsfremd wäre. Derzeit bin ich z.B. dabei eine Art Charaktererschaffung zu generieren ( z.Z. über einfache Konsolenanwendungen), um die oop, verwendung von Methoden, Schleifen u.a. zu erlernen. Die Spieleidee soll das ganze einfach nur etwas interessanter zu machen.
Bei der oop habe ich derzeit noch etwas zu knabbern und bin auch dieses mal wieder auf ein kleines Problem gestoßen. Wenn ich wärend der Charaktererschaffung meinem neuen Objekt einen Wert zuweisen möchte, dann erledige ich das über eine meiner Eigenschaften.
int _stamina = 0;
public int Stamina { get { return _stamina;} set { _stamina = value; } }
Gedacht ist, dass ich eine Rasse für meinen Charakter aussuche, normaler Mensch, genveränderter Mensch oder eine Art Zauberer, wobei es in diesem Spiel keine Zauberer gibt ( Zauberer ist nicht wirklich der Audruck dafür). Wenn der Nutzer z.B. die genveränderte Rasse auswählt, sollen auf Grund dieser Auswahl gewisse Grundattribute gesetzt werden. Diese Rasse soll eine Art Tankklasse darstellen, welche von grund auf mehr Lebenspunkte, eine höhere Zähigkeit und leider auch weniger Intelligenz besitzen soll. Die Methoden für die Auswahl sind soweit fertig und funktionieren auch tadellos. Für die Zuweisung der weiteren Werte dachte ich mir folgendes.
public int Stamina { get {return _stamina;} set { if( CharGenus == Genus.ModifiedHuman){ _stamina = 50 }else if( CharGenus == Genus.Human){_stamina = 20}}
Dadurch würde ich ja theoretisch über den Setter gleich nach der Ausführung der SetGenus() die geforderten Werte setzen. Jetzt ist es jedoch so, das die Variable int _stamina wärend der Abfrage im Main dennoch 0 bleibt, da ich die Werte ja nicht mit ref übergebe. Meine Frage hierzu ist, - möchte ich das überhaupt? Würde ich diese Werte mittels ref übergeben, würde ich ja die Attribute direkt in der Klasse ändern (Dies soll ja die Grundklasse für alle weiteren Charaktere sein, blanco sozusagen).
Wenn ich den Wert direkt über den Konstruktor übergebe, dann wird der Wert auch ohne ref entsprechend ausgegeben, ich gehe davon aus, dass der Konstruktor ja direkt ein neues Onjekt mit Wert x erzeugt und mir daher auch der angegebene Wert angezeigt wird. Ist es somit eigentlich gar nicht möglich meine Idee der Wertzuweisung mittels Setter zu realisieren, oder sollte ich für die Zuweisung eine weitere Methode erschaffen, welche meine Idee des Setters ersetzt?
Ich hoffe meine Ausführungen sind halbwegs verständlich.
mit freundlichen Grüßen
Gewinde