Tilemap Scrolling RAF ICH NICHT!!!!!
Übersicht

HendyBetreff: Tilemap Scrolling RAF ICH NICHT!!!!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich hab mir neulich bei robsite.de
das Jumb ´n run Tutorial 1+2 geladen. das 2 Tutorial tile map scrolling hier der code: Code: [AUSKLAPPEN] ;Teil 1. Einfaches Scrolling durch Steuern der Cursortasten. Mit Begrenzungs- und Kollisionsabfrage.
Graphics 640,480 SetBuffer BackBuffer() frametimer = CreateTimer (30) ClsColor 0, 0, 255 ;Gfx laden Global tile = LoadImage ("tile2.bmp") MaskImage tile, 255, 0, 255 Global dude = LoadAnimImage ("dude2.bmp", 32, 32, 0, 8) MaskImage dude, 255, 0, 255 Global Player_Counter = 8, Player_Frame = 0 ;SpielerFrame ;Variablen und Constante bestimmen ;Die Spielfigur bleibt an einer bestimmten Position stehen. Daher können wir die X- und Y-Variable ;als Constante definieren. Const Player_pos_x = 304, Player_pos_y = 320 ;Diese zusätzlichen Variablen benötigen wir um den Hintergrund zu bewegen Global scroll_x = 0, scroll_Y =0 ;Die Constanten für einen Tastendruck Const rauf = 200, runter = 208, rechts = 205, links = 203, space = 57 ;Kartendaten lesen. Kennen wir ja schon aus dem ersten Tutorial :-) Dim map (20,15) Restore mapdata For y=0 To 15 For x=0 To 20 Read map(x,y) Next Next ;Hauptschleife Repeat Cls WaitTimer (frametimer) DrawMap() MoveDude() DrawImage dude, Player_pos_x, Player_pos_y Flip Until KeyHit (1) End ;----Functionen---- Function DrawMap() For y = 0 To 15 For x = 0 To 20 If map(x,y) = 1 Then ;Sollte ein Tile in dem Array(Datenfeld) stehen, Tile zeichnen DrawImage tile, x*32 - scroll_x, y*32 - scroll_y ;Die Position des Tiles wird einfach durch unseren zusätzlichen Variablen subtrahiert. EndIf Next Next End Function Function MoveDude() ;in dieser Function berechnen wir unsere zusätzliche Scrolling-Variable. If KeyDown(links) Then If Player_Frame <4 Then Player_Frame = 4 ;sobald der Frame kleiner als 4 ist auf 4 setzen Player_Counter = Player_Counter -1 ;Zähler minimieren If Player_Counter = 0 Then ;Sobald Zähler Null erreicht hat Player_Counter = 8 ;Zähler auf neuen Wert setzen Player_Frame = Player_Frame +1 ;Frame erhöhen If Player_Frame = 8 Then Player_Frame = 4 ;Sollte Frame größer als 8 sein, auf 4 zurücksetzen EndIf If map((Player_pos_x + scroll_x) /32,((Player_pos_y +16) + scroll_y) /32)=0 Then ;solange der Spieler nicht gegen ein Tile läuft. scroll_x = scroll_x -4: ;scroll_x minimieren If scroll_x < -320 Then scroll_x = -320 ;Randbegrenzung EndIf ElseIf KeyDown(rechts) Then ;Genauso verhält es sich, wenn die Figur nach Rechts läuft, nur das If Player_Frame >3 Then Player_Frame = 0 ; hier die ersten 4 Frames gebraucht werden. Player_Counter = Player_Counter -1 If Player_Counter = 0 Then Player_Counter = 8 Player_Frame = Player_Frame +1 If Player_Frame = 4 Then Player_Frame = 0 EndIf If map(((Player_pos_x +32) + scroll_x) /32,((Player_pos_y +16) + scroll_y) /32)=0 Then scroll_x = scroll_x +4 If scroll_x > 320 Then scroll_x = 320 EndIf ElseIf KeyDown(rauf) Then If map(((Player_pos_x +16) + scroll_x ) /32,(Player_pos_y + scroll_y) /32)=0 Then scroll_y = scroll_y -4 If scroll_y < -320 Then scroll_y = -320 EndIf ElseIf KeyDown(runter) Then If map(((Player_pos_x +16) + scroll_x) /32,((Player_pos_y +32) + scroll_y) /32)=0 Then scroll_y = scroll_y +4 If scroll_y > 160 Then scroll_y = 160 EndIf EndIf End Function .mapdata Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 Data 1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1 Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 Data 1,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,1 Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 Data 1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1 Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 Data 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 aber ich raf das nicht mit dem scroll_y blabla ich hab es sogar schon mal ausgedruckt und schritt für schritt beschriebenwas passiert aber das wenn die Maustaste rechts gedrückt wird das sich dann die Karte bewegt [/code] |
||
![]() ![]() ![]() |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
das ist doch ganz klar, wenn du die Karte jetzt z.B. so zeichnest: Drawimage tile,x*32-scroll_x,y*32-scroll_y dann haben ja scroll_x und y noch die werte 0 wenn sich noch nix geändert hat. Tust du jetzt z.B. scroll_x um 1 veringern scroll_x = scroll_x - 1 dann wird die karte um 1 Pixel nach links verschoben z.B. sieht es so aus: Drawimage tile,x*32-1,y*32-0 -1 sagt nix außer das die karte Minus 1 Pixel zurück verschoben wird. Ich hoffe das ich dir ein wenig helfen konnte ![]() MfG Andreas |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
Hendy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Yoa ein wenig ![]() |
||
![]() ![]() ![]() |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hier habe ich mal ein beispiel geschrieben, indem ein Text nach links bewegt wird:
Code: [AUSKLAPPEN] Graphics 640,480
SetBuffer BackBuffer() Global x=200,y=200 Global scroll_x,scroll_y While Not KeyHit(1) Cls ;Text zeichnen Text x-scroll_x,y-scroll_y,"Hallo Welt!" ;Scroll_x um eins erhöhen scroll_x = scroll_x + 1 ;Also da Scroll_x jetzt z.B. auf 1 ist, wird x dann ;eins abgezogen und der Text ist dann ein Pixen ;weiter nach links x-1 ; X-scroll_x=Ziel ;#### 200 - 1 = 199 #### Flip Wend End MfG Andreas |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
Hendy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wunderbar danke bruce | ||
![]() ![]() ![]() |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kein problem ![]() |
||
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group