OOP "lehrbeispiel" tetris...



  • hallo,
    wiedermal das leidige thema OOP. diesmal soll ein halbwegs simples projekt - tetris - möglichst einwandfrei objekt orientiert umgesetzt werden. es geht also weniger darum, schnell ein tetris zu programmieren (mir ist schon klar, dass man das ohne probleme mal eben in C hinrotzen kann), sondern darum OOP an einem beispiel zu verdeutlichen.
    dabei haben sich (wie üblich) ein paar probleme aufgetan. aber mal von anfang an.
    also, erstmal sind die grundlegenden klassen etc. wohl offensichtlich. man braucht ein spielfeld Board und ausserdem die steine. hier am besten erstmal ne abstrakte basisklassse Piece, die ein interface zum rotieren und bewegen der steine bereitstellt, sowie abgeleitete klassen für die einzelnen steine (LinePiece, SquarePiece etc.), welche sich um die unterschiedlichen anordnungen der blöcke etc. kümmern.
    schwierigkeiten sind aufgekommen, als es daran ging, wie das spielfeld und die steine "interagieren" können, also sachen wie kollisionsabfrage, einen stein zum spielfeld hinzufügen etc.
    eine möglichkeit ist, sowohl Board als auch Piece mit ne menge Get/Set funktionen auszustatten und dann eben die genannten aufgaben "extern" von einer funktion erledigen zu lassen. designproblem: im grunden wird damit die komplette implementation der klassen offen gelegt, auf jedes element wird letztendlich zugegriffen.
    eine andere variante wäre, zb. der Piece-klasse zugriff auf die Board klasse zu geben (zb. über friend-funktionen). somit könnte man das öffentliche interface bei beiden klassen minimieren. ähnliches hab ich öfters in tutorials etc. gesehen, sauber ist das natürlich auch nicht wirklich...
    wie ichs auch dreh, so wirklich schön wird das nicht.
    anregungen?



  • Dekompiliere doch mal ALTC.

    Bye, TGGC (Denken, und gut ist.)



  • @TGGC wirst du langsam menschlich? 🙂

    kein link?



  • Hey, lass das Geflame! 😎

    Bye, TGGC (Dem beste BdT)


Anmelden zum Antworten