<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Zentralisierung vs. Parameterübergabe vs. ???]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>jetzt komm ich mal mit der nächsten Designfrage:</p>
<p>Ich bastle gerade an einem Spiel und stehe vor ein paar grundsätzlichen Entscheidungen (bei denen mir die OO-Grundlagen und die mir bekannten Design Patterns bisher nur bedingt weiterhalfen).</p>
<p>Es geht im Wesentlichen darum, wie ich innerhalb des Codes auf Spielelemente zugreife. Ein Ansatz wäre, allen Klassen, Methoden und Funktionen jeweils die Elemente als Parameter zu übergeben, die sie für ihre Arbeit benötigen, der andere Ansatz wäre eine zentrale Instanz zu machen (Spielmanager), bei dem man sich holen kann, was man braucht.</p>
<p>Ein Beispiel: Ich habe für Benutzerinteraktionen eine Aktivitätsklasse gemacht. Diese bekommt im Konstruktor das Cursorobjekt übergeben (dieses ändert sich bei Anwahl/Abwahl einer Benutzeraktion) und das Spielerobjekt (da diesem ja mitgeteilt werden soll, welche Aktion der Spieler gerade ausführen möchte). Das Ganze kann sich aber auch noch für weitere Spielelemente ergeben!</p>
<p>Nun bin ich mir aber nicht sicher, ob es zukünftig nicht auch Benutzeraktionen geben kann, die z.B. kein Cursorobjekt benötigen. Daher der Gedanke des zentralen Spielmanagers, bei dem man sich alles besorgen kann (Cursorobjekt, Spielerobjekt, usw. usf.).</p>
<p>Eine weitere Möglichkeit wäre auch noch zusätzliche Spezialisierung, also Benutzeraktion mit Cursorobjekt im Konstruktor und eine weitere Klasse für Benutzeraktionen ohne Cursor. Oder nur zwei versch. Konstruktoren (bzw. zwei verschiedene Methoden).</p>
<p>Das es aber mit Sicherheit nicht bei den beiden Objekten für diese Aktionen bleiben wird, und das Thema in gleicher Form auch noch andere Elemente betreffen wird, frage ich mich, ob nicht der zentrale Spielemanager die bessere Lösung wäre, als mit vielen speziellen Schnittstellen zu jonglieren (auch wenn das aus OO-Sicht die schlechtere Variante ist).</p>
<p>Gibt es hier ein paar gute Entscheidungshilfen, Designtips o.ä.? Wie sind eure Gedanken dazu?</p>
<p>Dank euch schon mal!</p>
<p>Ciao</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/268106/zentralisierung-vs-parameterübergabe-vs</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 03:07:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/268106.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 04 Jun 2010 11:09:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zentralisierung vs. Parameterübergabe vs. ??? on Fri, 04 Jun 2010 11:09:37 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>jetzt komm ich mal mit der nächsten Designfrage:</p>
<p>Ich bastle gerade an einem Spiel und stehe vor ein paar grundsätzlichen Entscheidungen (bei denen mir die OO-Grundlagen und die mir bekannten Design Patterns bisher nur bedingt weiterhalfen).</p>
<p>Es geht im Wesentlichen darum, wie ich innerhalb des Codes auf Spielelemente zugreife. Ein Ansatz wäre, allen Klassen, Methoden und Funktionen jeweils die Elemente als Parameter zu übergeben, die sie für ihre Arbeit benötigen, der andere Ansatz wäre eine zentrale Instanz zu machen (Spielmanager), bei dem man sich holen kann, was man braucht.</p>
<p>Ein Beispiel: Ich habe für Benutzerinteraktionen eine Aktivitätsklasse gemacht. Diese bekommt im Konstruktor das Cursorobjekt übergeben (dieses ändert sich bei Anwahl/Abwahl einer Benutzeraktion) und das Spielerobjekt (da diesem ja mitgeteilt werden soll, welche Aktion der Spieler gerade ausführen möchte). Das Ganze kann sich aber auch noch für weitere Spielelemente ergeben!</p>
<p>Nun bin ich mir aber nicht sicher, ob es zukünftig nicht auch Benutzeraktionen geben kann, die z.B. kein Cursorobjekt benötigen. Daher der Gedanke des zentralen Spielmanagers, bei dem man sich alles besorgen kann (Cursorobjekt, Spielerobjekt, usw. usf.).</p>
<p>Eine weitere Möglichkeit wäre auch noch zusätzliche Spezialisierung, also Benutzeraktion mit Cursorobjekt im Konstruktor und eine weitere Klasse für Benutzeraktionen ohne Cursor. Oder nur zwei versch. Konstruktoren (bzw. zwei verschiedene Methoden).</p>
<p>Das es aber mit Sicherheit nicht bei den beiden Objekten für diese Aktionen bleiben wird, und das Thema in gleicher Form auch noch andere Elemente betreffen wird, frage ich mich, ob nicht der zentrale Spielemanager die bessere Lösung wäre, als mit vielen speziellen Schnittstellen zu jonglieren (auch wenn das aus OO-Sicht die schlechtere Variante ist).</p>
<p>Gibt es hier ein paar gute Entscheidungshilfen, Designtips o.ä.? Wie sind eure Gedanken dazu?</p>
<p>Dank euch schon mal!</p>
<p>Ciao</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1906698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1906698</guid><dc:creator><![CDATA[Reth]]></dc:creator><pubDate>Fri, 04 Jun 2010 11:09:37 GMT</pubDate></item><item><title><![CDATA[Reply to Zentralisierung vs. Parameterübergabe vs. ??? on Fri, 04 Jun 2010 11:59:47 GMT]]></title><description><![CDATA[<p>Klingt beides ziemlich schrecklich. Das ganze sollte abstrakter und besser getrennt sein. Das Spielerobjekt kennt kein &quot;Cursorobjekt&quot; oder irgenwelche Eingabe Sachen.<br />
<a href="http://de.wikipedia.org/wiki/Model_View_Controller" rel="nofollow">http://de.wikipedia.org/wiki/Model_View_Controller</a><br />
<a href="http://de.wikipedia.org/wiki/Observer_%28Entwurfsmuster%29" rel="nofollow">http://de.wikipedia.org/wiki/Observer_(Entwurfsmuster)</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1906720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1906720</guid><dc:creator><![CDATA[sissieCode]]></dc:creator><pubDate>Fri, 04 Jun 2010 11:59:47 GMT</pubDate></item><item><title><![CDATA[Reply to Zentralisierung vs. Parameterübergabe vs. ??? on Fri, 04 Jun 2010 15:27:47 GMT]]></title><description><![CDATA[<p>Naja, MVC und Observerpattern sind eigentlich schon implementiert. Bei den Benutzeraktionen handelt es sich um Objekte einer Klasse (Klasse UserActivityC), die man z.B. hinter Menüeinträge, Buttons und HotKeys legen kann, und die dann bei Aktivieren eines dieser Dinge die entsprechende Aktion auslösen. Damit sie dies tun können, benötigen sie das Cursorobjekt, um dessen Darstellung zu ändern und das Spielerobjekt, um dort die entsprechende Aktion zu markieren. So die Idee. Das Spielerobjekt hat mit dem Cursor überhaupt nichts zu tun und kennt diesen auch nicht! Hätte ich noch deutlicher beschreiben sollen.</p>
<p>Das nächste Thema mit diesen Benutzeraktionen ist: Wie viele machen? Eine abgeleitete Klasse pro unterschiedlicher Aktion (diese würden allerdings immer dasselbe machen: Cursor anders darstellen lassen und Aktion beim Spieler markieren) oder eine Klasse für alle Aktionen, wobei die Aktionen durch ihren Typ (z.B. Konstanten) unterschieden werden?</p>
<p>Ciao</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1906825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1906825</guid><dc:creator><![CDATA[Reth]]></dc:creator><pubDate>Fri, 04 Jun 2010 15:27:47 GMT</pubDate></item></channel></rss>