Problem mit Types (BB+)
Übersicht

![]() |
JPDBetreff: Problem mit Types (BB+) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
ich hänge mal wieder an einem für mich unlösbaren Problem, habe in Foren dazu nichts gefunden. Also: Ich habe nen kleinen Weltraumshooter der sich von rechts nach Links über den Monitor bewegt. Meine Tiles wurden mit DIM-Feldern programmiert. Nun hänge ich an der einen logischen Frage: "Wie komme ich an die Items (Type) ran, von Position x - y, also der Bildschirmausschnitt" Am liebsten würde ich sagen, "Hey, gib mir alle Arrays aus, die X > 640 und X < 1280 sind" Ein Versuch mit einer For-each Schleife geht zwar, aber ist nicht wirklich schnell und lahmt den Rechner zu, mit OBJECT und HANDLER konnte ich nicht viel Anfangen. Und bei Types die mit DIM-Feldern verknüpft sind, woher soll ich die Pixelgenaue Position eines Feldes herausbekommen!? Irgendwie komme ich nicht dahinter ... hab ich nen Denkfehler? Vlg Jan |
||
![]() |
BlitzcoderNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du speicherst die Types in einem Dim Feld:
Code: [AUSKLAPPEN] type TItem
field typ$ field bla end type dim items.TItem(10,10) for x=1 to 10 for y=1 to 10 items(x,y) = new TItem items(x,y)\typ="Bombe" next next ;Zugreifen Items(2,8) EDIT: Achso, du meintest das etwas anders. Da bleibt dir nichts anderes übrig, als 2 Felber X und Y zu erstellen, dann alle types mit for each durchzugehen und immer zu prüfen, was kleiner und grösser ist. EDIT: Noch was, wenn ich das richtig verstanden habe, dann willst du prüfen, über welchem Tile das Item ist. Das könntest du auch so machen: Du legst den Items noch 2 Felder mehr an, in denen das Tile x Und y gespeichert ist. Und immer wenn du das Item bewegst, prüfst du, ob es ein Tile weiter ist und änderst dann die Werte ab. MfG Blitzcoder |
||
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________ |°°°°°°°°°°°°°°||'""|""\__,_ |______________ ||__ |__|__ |) |(@) |(@)"""**|(@)(@)****|(@) |
![]() |
JPD |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jo, so weit war ich dann auch schon ![]() jede der Varianten bringt seine Probleme, klaro ist das mit den "DIM-TYPES" ne feine Sache für nen Leveleditor, aber im Spiel stößt man auf Grenzen, oder ich steh grad auf ner Leitung. Falls noch jemandem was dazu einfällt, bitte lassts mich wissen ![]() Grüße, Jan PS: Nein, ich will meine Items (also Punkte, Flugzeige usw) die im Spiel verteilt sind nur dann anzeigen, wenn auch der Bildschirmausschnitt da ist ... und bei ca 3000-4000 Objekten wirds schwer mit ner For-earch - oder? |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erstell die Types doch erst bevor sie ins Bild kommen, denn du brauchst sie doch erst dann!
Wenn sie aus dem Bild raus sind kannste du sie löschen! Dann brauchtdu auch keine Abfragen ob sie gezeichnet werden sollen, da es eh alle sind. Alledings mußt du prüfen ob schon neue erstellt werden müssen! |
||
[BB2D | BB3D | BB+]
|
![]() |
JPD |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was würde mir denn das bringen wenn ein Level geladen wird und später nur der Teil aktiv ist, der nur Sichtbar ist ... ich habe gestern noch einen Test gemacht: Und zwar hab ich eine For-Each Schleife so programmiert, dass sie nur Felder mit dem Wert X anzeigt. Ich habe ca 100000 Objekte angelegt und davon ca 100 angezeigt. Die Geschwindkeit war optimal so. Allerdings alle 100000 anzuzeigen, da gingen die FPS an die 0-Komma grenze. Resultat: Eine Abfrage was angezeigt werden darf und nicht (die alte Version siehe oben) ist optimal und lahmt mein Spielchen nicht zu. Ich mein, wer erstellt schon 100000 Objekte in einem Level? Die Basis sind eh Tiles.
MfG Jan |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group