.50AE hat folgendes geschrieben: |
[...]
@monster:
[1] Wenn ich alles selbst in ein Stringgrid male, dauert es dann nicht trotzdem noch sehr lange?
[2] Nun zu den Spielfiguten etc.. Die bewegen sich natürlich schon pixelweise.
Da man bei den TImages Transparenz einstellen kann, seh ich kein Problem darin, auch die Objekte damit darzustellen. |
zu 1: sollte es nicht, die Zellen des Stringgrid sind ja keine Objektinstanzen wie deine Imagearmee und Du zeichnest die Bilder ja sozusagen onDemand (schönes Unword

). Du hast sie also an zentraler Stelle im Speicher und malst sie nur, wenn der User das Feld auch tatsächlich sieht.
zu 2: Das ist das Problem an stringgrids und auch an Images, es ist zwar möglich, alle Spielobjekte wie das Spielersubstitut (ist heute nicht der Tag des Machwortes? Das wollt ich schon immer mal benutzen *g*) und die Gegnerhorden etc. auch pixelweise darzustellen, aber das führt doch zu dem Problem, dass Du berechnen musst, wieviel Spieler1 jetzt in Feld x, y und wieviel in x+1,y und wieviel in x+1, y+1 etc.pp. steckt. Deshalb würde ich ein Array nehmen, das u.a. Verweise auf die zu verwendende Grafik (als integer oder als Zeiger) und die Information über Durchlässigkeit eines Tiles enthält (sprich ob die Spielerfigur da durch kann (Luft) oder nicht (solide).
Außerdem brauchst Du eine Prozedur, die das malt (und zwar nur die Tiles, die man auch sieht). Dann würde ich eine Klasse TWorldObject oder so erstellen, die zum Beispiel die absoluten Koordinaten ausgehend vom Ursprung der Karte enthält (links oben) und die zugrundeliegende(n) Grafik(en). Schließlich noch eine Funktion um die Kartenkoordinate in die Zeichenflächenkoordinate umzurechnen, damit eine Zeichenfunktion die Objekte pixelgenau platzieren kann.
Ich hab das Jump'n'Run nie gespielt, das dir als Vorbild dient, aber Du kannst wohl davon ausgehen, dass es etwas schwieriger wird als Du vielleicht annimmst.
Wann werden Gegner erstellt? Wann werden sie getötet? Wer gibt zerstörte Gegnerobjekte wieder frei? Kollisionsabfrage? Gravitation? Wann wird die Gegnerintelligenz aktiviert und wie implementiere ich unterschiedliche KI für jeden Gegnertyp?
Ich hab darüber mal nachgedacht und kam zu dem Schluß, dass es wohl das Einfachste ist, wenn man einen Klassenstammbaum von Spielobjekten macht, die alle von TWorldObject abgeleitet sind und sofern nötig eigene Methoden für KI etc. haben, die von einer zentralen TWorld-Klasse verwaltet werden, etwa mit Arrays, in die sich Instanzen eintragen können, um wenn gewünscht benachrichtigt zu werden, falls der Spieler etwa zu nah an eine wild nach allem schnappende fleischfressende Pflanze kommt, damit sie ihr Köpfchen zu ihm rüber neigt.
Will nicht sagen, dass mein Ansatz toll ist, will nur wissen, ob Du das denn schon wenigstens im Kopf soweit durchdacht hast, denn selbst ein billiges Jump'n'Run kann ganz schnell ganz langsam und unübersichtlich werden, wenn man nicht wenigstens nen ungefähren Plan hat...
(Ich muss mir angewöhnen, weniger zu schreiben, sorry *g*).
Viel Spaß mit deiner Hüpforgie
