| | | | |
| |||||||
| Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene |
|
| | LinkBack | Themen-Optionen | Bewertung: |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | ||
| Erfahrener Benutzer Registriert seit: 23.08.2010
Beiträge: 495
PHP-Kenntnisse: Fortgeschritten ![]() ![]() | Zitat:
Es ist üblich, dass Komponenten über eine zentrale Klasse verfügen, die für allgemeine Aufgaben zuständig ist. In deinem Fall wäre das zum Beispiel eine Klasse PlayerManager. In diese Klasse kannst du sowohl register und login reinpacken, als auch createCharacter und selectCharacter. Du solltest nur aufpassen, dass der PlayerManager dadurch nicht zum God Object wird. Bei der Festlegung der Grenzen zwischen den Komponenten ist wieder Fingerspitzengefühl gefragt. Wenn der PlayerManager zu unhandlich wird, dann kannst du Teile der Funktionalität in einen CharacterManager auslagern. Alternative zu diesen Manager-Klassen sind statische Funktionen. | |
| | |
| | |
| Erfahrener Benutzer | move() useSkill() revive() Sind "typische" Spielfigur-Methoden -> Player ( generell eher Avatar ) createPlayer() Ist eine Factory-Methode, die weder in Game sollte noch in Player. Die Factory erzeugt einen Spieler ( Player ) der der Spielewelt ( Game ) übergeben wird. Alternativ dazu als Statische Methode der Player-Klasse zum "self factorizing". Je nach abstraktion der Factory ist das aber irgendwann zu überladen für eine Player-Klasse ( nebst Objekt ) Erstellte Spieler sollen ja nicht nur im Spiel "erzeugt" werden ( Game ) sondern auch gespeichert werden ( avatarStorage ? ) Ohne einen genauen Plan von dem was du da zusammen-"class"'t werden das aber hier schüsse ins blaue, da es kein Allheilmittel zur Methoden-/Klassen-Strukturierung gibt.
__________________ |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 25.09.2009
Beiträge: 2.115
PHP-Kenntnisse: Fortgeschritten ![]() ![]() | naja eienen genauen Plan habe ich ja auch nicht, nur mit OOP sollte man sich ja dann sowas Bildlich vorstellen. Und ich habe mir folgendes vorgestellt: Eine reele Person hat ein Account. Account unterteilt sich in 3 Bereiche: FacebookPlayer (Facebook User) StandardPlayer (Registrierter User) GuestPlayer (Zufällig generierter User) zu jedem Player gehören Mehrere Charaktere(Spielfiguren) Nach einem Login prüft das Script ob eine Figur ausgewählt wurde, wenn nein -> Zeige Spielfigur auswahl (Hier gibt es außer der auswahl, auch noch die Möglichkeit eine Figur zu erstellen, bzw Löschen) wenn ja -> Zeige Spielwelt (Hier finden alle aktionen des Spiels statt) also habe ich mir zu dem plan dann folgendes ausgedacht: PHP-Code: PHP-Code: Mir geht es darum irgendwie die Methoden richtig zu unterteilen in vernüftige klassen. und bezüglich der move() und useskill() methoden.. die müssten dann ja eigentlich auch in die player klasse weil, vom gedanken her bewegt sich die spielfigur nicht von selbst(es seidenn es ist ein NPC) sondern PHP-Code: ist halt gerade viel durcheinander |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() | Stichwort Aggregation und Delegation. Allerdings geht das in dem Fall wieder stark in Richtung God Object, schließlich wird irgendwie jede Aktion vom Spieler ausgelöst. Also führe dir den Unterschied zwischen dem Spieler als Objekt in der Anwendung und dem Spieler als Benutzer der Anwendung vor Augen, um das zu vermeiden. So etwas wie $this->activeCharacter->move($x,$y) ist IMHO völlig okay, ohne dass das Player-Objekt dazwischen stehen müsste. |
| | |
| | |
| Erfahrener Benutzer |
Code: Game
- Avatar $myAvatar
+ setCurrent(Avatar $player)
+ getSkills()
+ isMoveableTo(x,y,z)
+ ...
+ storeCycle()
Client
- Current
+ checkLogin()
- clientControl $control
+ moveAvatar()
+ useSkill()
+ leaveWorld()
+ enterWorld()
+ deleteAvatar()
+ createAvatar()
+ Login($user,$pass,$ip)
+ LoginFB($fbID)
+ LoginGuest()
+ SelectAvatar(Avatar $player)
+ getAvatars()
PlayerFactory
+ create($new_name, $new_class, ...)
+ load($avatarName)
*spoiler* - = properties, + = methoden */spoiler*
__________________ Geändert von tr0y (24.03.2011 um 13:49 Uhr). |
| | |
| | ||
| moderatives Dielektrikum Registriert seit: 21.05.2008
Beiträge: 35.994
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Zitat:
PHP-Code:
__________________ -- One pixel is still too big. Please make it smaller. ASAP. Initiative Mittelstand. Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers. -- | |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Erledigt] Methoden überschreiben | coola | PHP Einsteiger | 11 | 22.03.2011 13:33 |
| Zwei Methoden eines Objekts: PHP übergeht eine der beiden | readyaim | PHP Einsteiger | 5 | 19.01.2011 15:50 |
| [Erledigt] Objekt mit statischen Methoden | hts | JavaScript, Ajax und mehr | 3 | 18.12.2010 21:07 |
| [Erledigt] Methoden zu einer Klasse hinzufügen | ByStones | PHP Tipps 2010 | 3 | 30.08.2010 23:58 |
| Objekte verwenden gleiche Methoden | Cube | PHP Tipps 2010 | 2 | 21.04.2010 09:25 |
| php://stdout und libapache2-mod-php5, wohin werden Nachrichten geschrieben | stebi | PHP Tipps 2010 | 7 | 17.01.2010 16:58 |
| [Erledigt] Wohin gehen bei mit php versendeten mails die Meldungen bei Empfänger unbe | Thamannta | PHP Tipps 2009 | 10 | 05.09.2009 09:04 |
| Methoden werden nicht vererbt | stayInside | PHP Tipps 2009 | 12 | 15.03.2009 00:24 |
| Kindklasse: Methoden über _call() ergänzen? | ciss | PHP Tipps 2008 | 2 | 29.12.2008 18:08 |
| [Erledigt] Methoden auf Objekt aufrufen (und fangen), die nicht existieren | tsisson | PHP Tipps 2008 | 2 | 07.10.2008 18:19 |
| Referenzen Private Methoden. | notyyy | PHP-Fortgeschrittene | 5 | 29.05.2008 09:40 |
| UML - Abstrakte und vererbte Methoden zwingend anzugeben? | MaMo-Net | Off-Topic Diskussionen | 3 | 17.03.2008 06:04 |
| Zugriff auf statische methoden oder konstanten | nightfreak | PHP-Fortgeschrittene | 6 | 14.11.2005 16:56 |
| klassen und methoden anderer klassen in methoden.... | PHP Tipps 2005 | 17 | 25.05.2005 09:46 | |
| wohin sendet mein pc?? | Rotti | Off-Topic Diskussionen | 4 | 13.10.2004 13:14 |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| php spielfigur auswählen |