2009-08-18 9 views
1

Wir machen ein Spiel mit einem Spielcharakter, der verschiedene Zustände haben wird. In den meisten Beispielen sehe ich eine switch-Anweisung in dem steuerbaren Zeichen basierend auf dem Zustand. Ist das der Standard, wie die Dinge für die meisten Spiele gemacht werden? Oder ist es besser, eine Reihe von Zuständen zu erstellen, die die Animation und Logik dieses Zustands behandeln? Es scheint, als ob letzteres viele Klassen schaffen würde, die vielleicht nicht notwendig sind, aber mehr Flexibilität hätten. Die Case-Anweisungen würden den Code unordentlicher machen, hätten aber weniger allgemeine Dateien. Ich weiß, dass es für AI-Funktionen besser wäre, das Zustandsmodell zu verwenden. Ich schätze, worauf ich hinaus will, sollte ich ein Staatsobjekt für einfache Dinge wie 'Walkleft', 'Walkright' machen? Oder gibt es einen besseren Weg, Dinge zu tun, die mir fehlen?Zustände und kontrollierbare Spielobjekte

Danke, hoffe, das ist klar genug.

Antwort

2

Es hängt alles davon ab, wie groß Ihre Switch-Anweisung ist. Ich würde mich persönlich darauf konzentrieren, einen Haufen Staatsobjekte zu machen. Wenn du deswegen eine Menge Dateien hast, sei es. Das wird wahrscheinlich den Code leichter verständlich machen, da jeder Zustand ein Modul ist, das eine geringere Wahrscheinlichkeit hat, dass ein anderer Code in ihn eingreift. Wenn Sie versuchen, über das Verhalten eines Staates nachzudenken, wird es weniger verschiedenen Code geben, der Sie ablenkt.

Es ist eine gute Übung, Ihr Design in kleine Stücke zu zerlegen, damit Sie sie codieren und, wenn möglich, als eigenständige Module testen können. Dies erleichtert das Debuggen erheblich. Sie müssen sich nicht zu sehr damit beschäftigen, alles zu modularisieren, sondern ich würde mich eher auf viele kleine Klassen konzentrieren als auf ein paar ungemütliche.

Sie haben Recht, ein wenig vorsichtig zu sein, Dinge zu schaffen, die nicht notwendig sind. Zu viel Flexibilität wird zu einem großen Ärgernis. Machen Sie es einfach flexibel genug, um Ihr aktuelles Problem zu lösen. Setzen Sie sich nicht zu sehr mit der Lösung hypothetischer zukünftiger Bedürfnisse auseinander. Konzentriere dich darauf, was du jetzt brauchst. Sie beobachten, dass eine große Switch-Anweisung mit vielen Fällen den Code unordentlich machen würde. Ich denke, das gibt dir deine Antwort genau dort. Tendieren Sie zu einfachem Code mit kleinen Funktionen und kleinen Klassen. Sicher, Sie werden eine Menge davon haben, aber es ist viel einfacher zu verstehen, wie viele kleine Funktionen zusammenpassen, als wie Myriaden von Aussagen, die in einer gigantischen Funktion übereinander gestapelt sind.

0

Verwenden Sie eine Sprungtabelle (auch Branch-Tabelle oder wahrscheinlicher eine Funktions- oder Methodentabelle) als einen Mittelweg zwischen einfachen Case-Anweisungen und einer vollständigen Zustandsmaschine.