GLBasic forum

Other languages => GLBasic - de => Topic started by: Shogun on 2009-Sep-19

Title: scrollen
Post by: Shogun on 2009-Sep-19
Hallo alle zusammen,
w?rde mich freuen wenn mir jemand erkl?rt warum der screen anf?ngt zu scrollen.
Ich habe mir aus mehreren Schnipseln eine einfache L?sung zum scrollen gebastelt, es funktioniert auch nur leider verstehe ich es nicht so richtig.
Also, folgender Code:

DRAWSPRITE array
Title: Re: scrollen
Post by: Schranz0r on 2009-Sep-19
Du setzt beim Tastendruck die Variable ScrollX oder ScrollY h?her oder tiefer

Scrolling solltest du aber nur auf die Tilemap/Map anwenden, sonst machts weniger Sinn ;)
Title: Re: scrollen
Post by: D2O on 2009-Sep-19
Hmmm, ist etwas verwirrend ;)

Du hast die pos und scroll Variablen.

Von der pos wird scroll immer abgezogen OK
Pos hat "0" und scroll jenachdem +3 oder -3, Ok.

Jetzt bewegts Du den Player nach rechts, ab einem gewissen punkt soll die map nach links scrollen,
ist der erreicht,  bekommt scroll den wert "+3".

Nun schaut das so aus

pos - scroll
"0 - (+3)" = - 3

Verwirrend gell ;)

Folgendes, es wird von Pos immer etwas abgezogen, aber hiert heist das +3 das von pos 3 weiter ins Negative abgezogen wird,
anders herum genauso.
Soll das ganze nach rechts scrollen wird von
pos - scroll
"0 - (-3)" = +3
pos auch 3 abgezogen, da es aber selber einen Negativen wert hat muss man hier etwas umdenken da das ganze jetzt durch das zweifache - ins posetive
rutscht.

Man ist das d?mmlich zu erkl?ren... :puke:

Ich hoffe Du verstehst den mist denn ich hier schreibe :)

Hier ein beispielprogram:
Code (glbasic) Select

a% = 100

PRINT pos - a,10,10


a% = -100
PRINT pos - a,10,30


SHOWSCREEN
KEYWAIT
Title: Re: scrollen
Post by: Shogun on 2009-Sep-19
Das ist klar, aber wenn ich z.Bsp. eine Player-Variable hoch oder runter setze, bewegt sich der Spieler, aber der screen scrollt ja nicht.
Ich verstehe den Zusammenhang mit xpos-scrollx, xpos-scrolly nicht.
Title: Re: scrollen
Post by: D2O on 2009-Sep-19
Mom, ich scheib mal ein Beispiel.

Edit:

posx und posy sind hier die Grundkoordinaten
damit man etwas hat wovon etwas abgezogen oder dazugez?hlt werden kann.
Ich bin im erkl?ren nicht der st?rkste  :S
aber ich Denke das Dir der Code weiter helfen wird wie das Funktioniert.

Er ist einfach gehalten und nicht auf speedoptiemierung ausgelegt.
Code (glbasic) Select

// Die Tiles sind hier 32 x32 Pixel gross
/// F?r die Map
DRAWRECT 0,0,32,32,RGB(0xff, 0x00, 0x00)
DRAWRECT 1,1,30,30,RGB(0xff, 0xff, 0x00)

GRABSPRITE 0,0,0,32,32
BLACKSCREEN


//F?r den Player
DRAWRECT 0,0,32,32,RGB(0x00, 0x80, 0xff)
GRABSPRITE 1,0,0,32,32
BLACKSCREEN


// gebrauchte Variablen
GLOBAL posx%, posy%, scrollx%,scrolly%,playerx%,playery%,x%,y%







WHILE TRUE


// map zeichnen
/// simple map ohne extras ;)
// 20 felder lang und hoch

FOR y = 0 TO 19
FOR x = 0 TO 19
///pos ist hier die grundposition
DRAWSPRITE 0 ,(posx-scrollx) +( 32*x) , (posy-scrolly) + (32*y)

NEXT
NEXT

// player zeichnen

DRAWSPRITE 1, playerx, playery

//----------------------------------------------

// Berechnungen
IF KEY(200) THEN playery=playery-3
IF KEY(208) THEN playery=playery+3
IF KEY(203) THEN playerx=playerx-3
IF KEY(205) THEN playerx=playerx+3

IF playerx<440 AND KEY(203) THEN scrollx=scrollx-3
IF playerx>200 AND KEY(205) THEN scrollx=scrollx+3

IF playery<200 AND KEY(200) THEN scrolly=scrolly-3
IF playery>240 AND KEY(208) THEN scrolly=scrolly+3

IF playerx<0 THEN playerx=0
IF playerx>590 THEN playerx=590

IF playery<0 THEN playery=0
IF playery>410 THEN playery=410



SHOWSCREEN
WEND
Title: Re: scrollen
Post by: Shogun on 2009-Sep-19
schon mal danke, ich schaue es mir mal an.
Title: Re: scrollen
Post by: Schranz0r on 2009-Sep-19
Der player bleibt ja auf seinen X;Y Koordinaten  nur die Map wird unter deinem Hintern verschoben :D
Stell dir vor die stehst aufm Laufband, genau das gleiche, du "stehts" am fleck rennst aber und das Laufband bewegst sich 10 KM/H nach -Y :D
Title: Re: scrollen
Post by: Orpheus_2003 on 2009-Sep-21
Ich finde es f?r ein Jump&Run so besser.
Der Player kann sich in einem Teil des Bildes bewegen.
Kommt er ausserhalb, scrollt die Map.
So funktioniert es bei meinem Game wunderbar.....