Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Hmm ich geb das Fenster halt weiter damit ich es Updaten kann, ich versteh sonst nicht wie ich den Spieler sonst in das Fenster drawen soll? Ich definier ja das Sprite erst in der Spieler klasse, somit ist es in der eigentlichen Run() funktion nicht bekannt, soll ich jetzt das Sprite von der Spielerklasse zurück an die Run klasse geben oder das Fenster von der Run in die Spielerklasse?
Die Methode "Run" sagt ihrem Namen nach nicht, dass sie ein Sprite irgendwohin zeichnet. Sonst hieße sie ja RunAndRender. Wie ich schon sagte, spalte das Design auf. Die Methode macht zu viel auf einmal. Das sollte sie nicht.
@Sacaldur: Sehe ich leicht anders. Ich finde, dass die Position eines Spielers durchaus eine seiner Eigenschaften ist, auch wenn nicht so konkret wie Mütze oder Hose. Sie ist abstrakter. Natürlich kann man sie in eine externe Relation umwandeln, die zwischen Map und Spieler besteht. Wäre ebenso logisch, für mich aber ein unüblicher Ansatz.
alternativ könntest du auch erst die Karte fragen, ob die neue Position gültig ist und ihn dann verschieben
allerdings hast du immer das Problem, dass der Spieler sich (abhängig von der Geschwindigkeit) nicht bis an die Wand ran bewegen kann, sondern ggf. mit geringem Abstand zu dieser stehen bleibt
besser wäre es, wenn du deine Bewegen-Funktion so wie du sie hast/hattest in die Map-Klasse packst, die ganz Kollisionsprüfung dann auch dort durchführst (was ohne Parameter möglich ist) und die Position des Spielers aktualisierst
die Methode muss dazu folgende Dinge wissen:
welcher Spieler?
aktuelle Position?
welche Bewegungsrichtung?
welche Geschwindigkeit?
nicht alle diese Dinge müssen als Parameter übergeben werden
es ließe sich auch so lösen, dass nur noch der Spieler als Parameter übergeben werden muss
und als Randbemerkung noch:
die Position des Spielers in der Umgebung (Map) ist keine Eigenschaft des Spielers und keine Eigenschaft der Map, sondern eine Eigenschaft der Beziehung zwischen Spieler und Map (ein Spieler, der sich nicht in einer Umgebung befindet, benötigt keine Position und eine Map ohne Spieler keine Spielerpositionen)
an der Stelle macht man sich das Leben meist einfacher, indem man dem Spieler die Position gibt
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Werbeanzeige