"for Each " in BlitzMax
Übersicht BlitzMax, BlitzMax NG Allgemein
marcel_bohnBetreff: "for Each " in BlitzMax |
Sa, Jul 06, 2013 14:47 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 |
Sa, Jul 06, 2013 15:32 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 |
Sa, Jul 06, 2013 16:09 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 |
Sa, Jul 06, 2013 16:12 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 |
Sa, Jul 06, 2013 16:21 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 |
So, Jul 07, 2013 0:05 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 |
Di, Jul 09, 2013 14:15 Antworten mit Zitat |
|
---|---|---|
Genial etwas in die Richtung hab ich gesucht! Hab noch nie darüber gedacht "eachin" auf diese Weise zu benutzen, jetzt muss ich nur leider einiges umprogrammieren xD.
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 ich hatte alles verworfen als ich mir Bmax gekauft hab. Danke für eure Hilfe bin eben ein Amateur |
||
ChaosCoder |
Di, Jul 09, 2013 20:24 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 |
Di, Jul 09, 2013 20:30 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 BlitzMax, BlitzMax NG Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group