![]() |
Re: Rotierendes Array
Also die Lösung hatte ich ja bereits nun (das Array umkopieren), aber ich glaube, die beiden anderen Kollegen haben das eigentliche Problem nicht gesehen, oder ich habe die Lösung nicht verstanden ;-)
Das könnten wir ja nochmal klären. Beispielarray (2,2) der Tile-Map:
Code:
Der "Screen" ist jetzt mal 2 Zeilen hoch ;-)
Array Arrayindex-Y
1|2|3 0 4|5|6 1 7|8|9 2 Beim Start wird das "Grundarray" angezeigt und am Bildschirm sieht man (s.o. > unsichtbare Zeile):
Code:
Jetzt werden die 64x64 Großen Tiles pixelweise nach unten verschoben, so dass sich nach einem "Umlauf" (also 64 Pixel nach unten geschoben) folgendes auf dem Screen befindet:
Array Arrayindex-Y
4|5|6 1 7|8|9 2
Code:
Der Teil mit 7|8|9 ist unten "rausgefallen" und kommt jetzt aus technischer Sicht wieder oben auf:
Array Arrayindex-Y
1|2|3 0 4|5|6 1
Code:
Programmtechnisch das Problem in eine Do-Loop-Schleife verpackt:
Array Arrayindex-Y
7|8|9 2 1|2|3 0 4|5|6 1
Code:
Da bringt meiner Meinung nach ein MOD bzw. die Abfrage IF xx > 2 in diesem Falle nichts, oder sehe ich das falsch?
DO
FOR iY=0 to 2 FOR iX=0 to 2 ZEIGE ARRAY([Hier muss der passende Y-Index des Arrays rein], iX),iX*64,(iY-1)*64+iScrollY {Das Array wird hier bei jedem Umlauf 3-Mal mit inkrementierenden Y-Werten angesprochen: 1.1. Durchlauf: 0 1.2. Durchlauf: 1 1.3. Durchlauf: 2 2.1. Durchlauf: 2 2.2. Durchlauf: 0 2.3. Durchlauf: 1 3.1. Durchlauf: 1 3.2. Durchlauf: 2 3.3. Durchlauf: 0 danach wäre das komplette Array einmal über den Screen gescrollt und wir können wieder bei 1.1 anfangen} NEXT iX NEXT iY INC iScrollY IF iScrollY > 64 iScrollY=0 {Nach diesem Umlauf muss jetzt die Korrektur des Arrayindex-Y erfolgen, also Änderung des Arrayindex-Y von z.B. 1.1 > 2.1, 2.1 > 3.1 oder 3.1 > 1.1} ENDIF LOOP Gruß Igotcha |
Re: Rotierendes Array
Zitat:
also:
Code:
(schematisch)
... anfang=1 anzeigen(anfang) .. proceure anzeigen(anfang) if anfang<0 then anfang=2 if anfang>2 then anfang=0 anzahl=2 y=anfang for n=1 to anzahl do begin zeige(array(y)) inc(y) if y>2 then y=0 end end Anzeige: Array Arrayindex-Y 4|5|6 1 7|8|9 2 hochrücken: .. dec(anfang) anzeigen(anfang) .. anzeige 1|2|3 0 4|5|6 1 ... so sollte der ablauf funktionieren ... |
Re: Rotierendes Array
Könnte funktionieren - hab's aber nicht getestet.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz