Type oder Array

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

maerki

Betreff: Type oder Array

BeitragDi, Sep 23, 2008 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich habe folgendes Problem: Ich will in meinem 2D J&R pro Level ca. 50 Münzen einfügen. Diese kann ich im TileStudio als ein spezielles Bound-Nummer angeben und so über GetBounds abrufen. Nun kommt mein Problem: Wenn ich die Positionen der Münzen berechnen will, habe ich folgenden Code:

Code: [AUSKLAPPEN]

For witdh = 0 To M_Width
    For height = 0 To M_Height
        ;Falls GetBounds(level, width, height) 50 zurückliefert, x/y speichern
    Next
Next


Nagt das nun nicht ziemlich an der Performance beim Starten des Spiels? Denn GetBounds wird immerhin 200*20, also 4000x ausgeführt.

Jetzt kommt die Frage: Soll ich das ganze in ein Array speichern? Oder soll ich Types nehmen? Wohlgemerkt wird dann GetBounds 4000 * Anzahl Type-Objekte durchgeführt. Dies würde bei mir 20000x entsprechen! Oder irre ich mich da?

Oder gibt es für das ganze sogar eine elegantere Lösung? Hauptsache ich kann die Münzen im TileStudio einfügen

Liebe Grüsse
 

bbprogger

BeitragMi, Sep 24, 2008 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde Types benutzen, weil ich in meinem Spiel ebenfalls Types benutzte und es nicht viel langsamer läuft und
weil die ganzen Samples auch Types benutzten.

Aber probier es doch einfach aus. Very Happy

coolo

BeitragMi, Sep 24, 2008 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Deine Aussage muss ich verneinen bbprogger. Mit Types wird das erheblich langsamer(mach mal ne 256*256 große Map dann weißte was ich mein). Darum empfehle ich dir Arrays. Noch ein Vorteil von Arrays, du kannst sie direkt ansprechen, und musst nichtr erst alle types durchlaufen, bis du das gefunden hast, welches du brauchst.
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project!
"Eigenzitate sind nur was für Deppen" -Eigenzitat
 

maerki

BeitragDo, Sep 25, 2008 8:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok vielen Dank für den Rat. Ich habe das Ganze nun mit Arrays verwirklicht und es funktioniert ohne Probleme. Wie es nun mit der Performance aussieht weiss ich nicht genau, gibts da irgendwelche Programme zum Überwachen oder muss das mit dem Task-Manager reichen?

Gruss

Smily

BeitragDo, Sep 25, 2008 8:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Deine Aussage muss ich verneinen bbprogger. Mit Types wird das erheblich langsamer(mach mal ne 256*256 große Map dann weißte was ich mein). Darum empfehle ich dir Arrays. Noch ein Vorteil von Arrays, du kannst sie direkt ansprechen, und musst nichtr erst alle types durchlaufen, bis du das gefunden hast, welches du brauchst.


bbprogger hat schon recht, bei den coins bieten sich wirklich types besser an. Wie stellst du es dir vor, solche dinge in einem dim (ja, hier ist übrigens von dims, und nicht von arrays die Rede) zu halten?
hascoin(200,40)? Ich glaube das ist mehr als unperformant.

Types magen vlt etwas langsamer sein, aber ich schätze mal, das bei einem kleinen jump&run-game die performance nicht haupt-augenmerk ist.

Ich würde gleich einen Type Machen, der alle "Speziellen" dinge in dem Jump&run hällt. Coins, Powerups, "Spezial-teile" (wie der pilz bei mario Wink ) usw. usf.

Die münzen über das Dims abzurufen würde irgendwann schwierigere probleme machen,

ciao,
Smily0412
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

maerki

BeitragSo, Sep 28, 2008 14:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok vielen Dank für die Tipps. Hab mir das ganze nochmal überlegt und dann das Ganze mit Types gemacht. Ich denke wenn ich andere Spiele sehe, dürfte mein kleines J&R auf mit noch sovielen Schleifendurchläufen eigentlich kein Problem seitens der Perfromance haben.

Vielen Dank für die Antworten

Gruss maerki

Jolinah

BeitragMo, Sep 29, 2008 12:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

du kannst Arrays und Types auch kombinieren:

Code: [AUSKLAPPEN]
Type Feld
  Field TileNummer
  Field ItemNummer
  Field SonstWas#
End Type

Dim typeArray.Feld(100,100)

typeArray(0,0) = new Feld
typeArray(0,0)\TileNummer = 5

...


So ersparst du dir unnötige Loops, kannst aber trotzdem die Vorteile der Types geniessen Wink

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group