Seite 1 von 1

Wie kann man im array Scrollen

Verfasst: 18.07.2006 20:31
von Ghost
Hi
Hab mal wieder eine Frage :oops:

Wie kann man eigentlich in ein array Scrollen (nicht die einzelnen Sprits sondern die Teile des arrays)?

Verfasst: 18.07.2006 20:39
von roherter
Häh was ist mit Sprit und was meinst du mit im Array Scrollen :freak: :lol:

Verfasst: 18.07.2006 20:48
von Ghost
wusste net wie ich es Formulieren sollte

zB: wenn man ein strategiespiel Programiert benutzt man doch für das Schlachtfeld ein array (wäre Pracktischer)so und wie kann man das machen das man darauf Scrollen kann also das schlachtfeld bewegen kann ?
bei Normale Sprites ist ja leichtr da man nur die Koordinaten verändern muss aber wie ghet das bei dem array ?

Verfasst: 18.07.2006 21:04
von roherter
Wieso benutzt du nich ne datasection
um das Spielfeld zu zeichen?

Verfasst: 18.07.2006 21:09
von Ghost
achso sorry ich ja :oops: :oops: :oops:

also ich benutze eine datasection
und wie kann man dort Scrollen?

Verfasst: 18.07.2006 23:34
von Kaeru Gaman
@roherter
was soll denn das jetzt mit data-section?

natürlich benutzt man ein array.

selbst wenn du die daten in ner data-section einbaust, statt aus ner datei zu laden, wirst du sie in ein array packen, da man eine data-section nicht (ohne weiteres) dynamisch auslesen kann.


@ghost
du scrollst nicht das array selbst, sondern zeigst nur den ausschnitt an, den du sehen willst.
dein array wird ja größer sein als der bildausschnitt, den du anzeigst.
du änderst also das array-feld, bei dem du anfängst anzuzeigen.

Code: Alles auswählen

For t=0 to 18
  For n=0 to 24
    DisplaySprite( Map( MapX + n, MapY + t ), 32*n, 32*t )
  Next
Next
wenn du MapX und/oder MapY veränderst, veränderst du den Bildausschnitt, den du anzeigst, aber das Array bleibt wie es ist.

Verfasst: 19.07.2006 11:33
von Ghost
ok danke :D
aber wieo hast du die 2. Klammer (die in der anderen Klammer)?

reicht das nicht so

DisplaySprite(2, mx*32+ 32*x, my*32 + 32*y)
und wenn man x bezw y verändert bewegt sich der ausschnitt

im ganzen hab ich es jetzt so

Code: Alles auswählen

  Restore Map 
  For my=0 To 17 
    For mx=0 To 24 
      
      a.b 
      Read a 
      If a = 1 

        DisplaySprite(2, mx*32+ 64*x, my*64 + 64*y) 
      EndIf 
      
    Next 
  Next 

Verfasst: 19.07.2006 12:33
von Kaeru Gaman
die spritenummer steht in deinem array

Code: Alles auswählen

Map( MapX + n, MapY + t )
du arbeitest im moment nur mit einem sprite, das angezeigt wird, wenn in deinem Data ne 1 steht.
in dem Array (und auch in Data) können aber theoretisch viele verschiedene stehen.

nun however...

mit deinen koordinatenberechnungen komm ich nich klar...
was willst du denn erreichen?

> DisplaySprite(2, mx*32+ 64*x, my*64 + 64*y)

wie groß sind deine sprites? wie groß ist dein screen?
warum multipizierst du x und y auch mit 64?
einmal 32 drin, tippfehler?

Verfasst: 19.07.2006 12:51
von Ghost
stimmt dann müsste ich es mit jeder Spritenummer machen heißt dass wenn ich Map( MapX + n, MapY + t ) verwende das den nur einmal für das ganze array benutzen müsste?
aber Map( MapX + n, MapY + t ) funktioniert nicht ganz so toll bei mir (der sagt immer es ist keine Funktion oder List (hab aber mich damit noch nicht soviel beschäftigt weil ich heut net viel Zeit habe (nur ne Stunde))


die 32 ist ein Tippfehler
die sprites sind 64 groß

stimmt bei +y*64 \ +x*64 ist *64 überflüsig (Ich hab nicht drann gedacht das y\x verschieden werte anehmen kann)es diente nur dazu das scrollen einwenig zu beschleunigen undzwar jewals um 64 pixel per Frame (so groß wie die Sprites sind)