"for Each " in BlitzMax
Übersicht

![]() |
marcel_bohnBetreff: "for Each " in BlitzMax |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo
Ich habe folgendes Problem ich habe verschiedene Objekte (Monster,Player,Item) diese sind alle in einer separaten liste (Monster_list,Player_list,Item_list). Nun möchte ich für alle diese Objekte eine Collide Funktion erstellen. Da alle auf der Karte befindlichen Objekte "extends World_object" sind: BlitzMax: [AUSKLAPPEN]
Wollte ich meine Collide Funktion Wie beim guten alten BB machen, eben eine schleife die für alle "World_objects" gilt. Die einzige Lösung die ich habe ist das ich jedes objekt zusätzlich in eine World_object_list mache. brauche eben einfach eine "for each" schleife wie es sie bei BB gab oder ähnliches. |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wo exakt liegt denn nun das Problem? Du kannst die Objekte in beliebig viele Listen eintragen. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
BB erzeugt dir für jeden Type eine eigene Liste. Das ist auch der Grund wieso du alle Variablen eines Types mit For Each durchlaufen kannst.
BlitzMax macht das aber nicht. Du musst deine Listen selber managen und wie du schon festgestellt hast, könntest du alle deine World_objects zusätzlich in eine World_object_list eintragen. Das heißt nicht, dass die Objekte dann doppelt vorhanden sind (nur die Referenzen auf die Objekte), also kannst du das getrost machen, sofern du beim Löschen deiner Objekte daran denkst, sie aus allen Listen zu entfernen, in denen sie drinnen stehen ![]() |
||
![]() |
marcel_bohn |
![]() Antworten mit Zitat ![]() |
---|---|---|
und wenn ich dann das objekt löschen will, dann muss ich das doch aus jeder liste löschen, oder nicht?
BlitzMax: [AUSKLAPPEN]
|
||
![]() |
Tennisball |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, so löschst du die Referenzen auf das Objekt, sodass früher oder später das Objekt an sich vom GC gelöscht wird. | ||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was auch geht, ist, dass du in deinem Typ WorldObject eine Liste hast, in der die Listen aller Untertypen sind. Dann brauchst du nur noch sowas:
BlitzMax: [AUSKLAPPEN]
Damit ist auch kein Eintrag doppelt vorhanden, was dir kompliziertes Gelösche erspart. |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
![]() |
marcel_bohn |
![]() Antworten mit Zitat ![]() |
---|---|---|
Genial ![]() Wenn ich das nächste Spiel beginne werde ich es vorher besser durchdenken... Wenn ich nur daran denke wie ich das Spiel auf BB programmiert hatte ![]() ![]() |
||
![]() |
ChaosCoder |
![]() Antworten mit Zitat ![]() |
---|---|---|
marcel_bohn hat Folgendes geschrieben: Wenn ich das nächste Spiel beginne werde ich es vorher besser durchdenken... Dieser Spruch ist bei Entwicklern übrigens sehr beliebt. Auch beim nächsten Projekt wirst du etwas lernen, was du dann beim nächsten Mal auf jeden Fall von Anfang an machst. Ich hab den bisher bei (fast) all meinen Projekten gebracht ![]() Schwierig wird's nur, wenn man zu viel nachdenkt und gar nicht mehr weiß, wie man anfangen soll, weil einen das durchdachte, hochkomplexe System quasi erschlägt. *Aus eigener Erfahrung sprech* |
||
Projekte: Geolaria | aNemy
Webseite: chaosspace.de |
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
ChaosCoder hat da definitiv recht.
Was bei Projekten aber sehr hilft, ist sich zuerst hinzusetzen, und alles halbwegs durchzuplanen, vor allem auch die technische Seite, also verwendete Datenstrukturen und Typen und so. Wärend dem Programmieren sieht man dann zwar oft, das manches nicht so geht, wie man sich es gedacht hat, oder so keinen Sinn macht, aber es ist immer besser einen Plan zu haben, als keinen. |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group