Spiel Architektur verbessern
-
Was hältst du von der Idee, das als Publisher/Subscriber zu lösen? Damit entkoppelst du GameLogic und Screen.
-
Meine Frage wäre eher: Warum muss der Screen was von der Game-Logik wissen? Ich denke das sollte sich vermeiden lassen.
-
Und wenn wir schon dabei sind Fragen zu stellen:
Warum ist das allesstatic
?
-
@hustbaer da die Funktionen zum zeichnen in GameLogic gebunden sind. Screen soll halt die Logik aus der Klasse rausnehmen und in screen.cpp verlagern. Geht leider nicht wirklich anders
-
Naja, es würde schon anders gehen - siehe z.B. Vorschlag von DocShoe.
Ist auch etwas irritierend, dass die GameLogic Variable wieder Screen heißt.
-
@Mechanics MHH naja ich baue das ganze jetzt in SFML, da ist das wenigstens nicht son Drama
-
@Gamestarplayer41
Verstehe ich das richtig dass die Funktionen zum Zeichnen des Screens in der KlasseGameLogic
sind, und die Funktionen für die Game-Logik in der KlasseScreen
? Falls ja würde ich mal behaupten dass deine Namensgebung echt suboptimal ist.
-
@hustbaer Also GameLogic erbt von PixelGameEngine, wo die Zeichen funktionen drin sind. Namensgebung ist wirklich doof
-
@Gamestarplayer41 sagte in Spiel Architektur verbessern:
@hustbaer Also GameLogic erbt von PixelGameEngine, wo die Zeichen funktionen drin sind. Namensgebung ist wirklich doof
Sofern du jetzt nicht noch erzählst, dass
EatFood
,MoveSnake
etc. bei dir auch Namen für Zeichenfunktionen sind, dann ist die Modellierung trotzdem falsch. Vererbung heißt eine "ist ein"-Beziehung. D.h. deine GameLogic ist eine PixelGameEngine. Klingt nicht sinnvoll.Geschichte zur Vererbung: https://www.c-plusplus.net/forum/topic/75672/kennt-ihr-schon-die-geschichte-des-mannes-der-regel-35-von-ecp-nicht-beachtet-hat
Aber auch Komposition ist hier nicht so ganz das Wahre. DocShoe hat bereits wertvolle Stichworte genannte, wie man Systeme entkoppelt.
Aber allgemein: Bring deine Namensgebung in Ordnung! Du verwirrst nicht nur dich selbst und potentielle Helfer. Wenn du gründlich über Namen von Klassen und Objekten nachdenkst, dann denkst du auch über ihre Aufgabe nach und findest dabei Modellierungsfehler, wenn dir auffällt, dass es für ein Ding keinen klaren, eindeutigen Namen gibt.
-
@SeppJ Stimmt, GameLogic müsste engine heißen oder so ähnlich zumindest. War mir garnicht klar.
Hast du zufällig einen Link der Gut subscriber und Publisher erklärt?