Bewegen einer figur auf tiles
Übersicht

QuäinyBetreff: Bewegen einer figur auf tiles |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Graphics 1280,1024
;tileset tileset = LoadAnimImage("tiles.bmp",16,25,0,2) ;figur ich = LoadImage("ichkleinformat5.png") ichhinten=LoadAnimImage("ichkleinformat.png",16,25,0,3) ichrechts=LoadAnimImage("ichkleinformat2.png",16,25,0,3) ichlinks=LoadAnimImage("ichkleinformat3.png",16,25,0,3) ichvorne=LoadAnimImage("ichkleinformat4.png",16,25,0,3) ;px Variable des Spielers px = 2 ;py Variable des Spielers py = 2 ;Direckt move = 1 damit die Figur auch am Anfang sichbar ist move = 1 MaskImage ich,32,156,0 MaskImage ichhinten,32,156,0 MaskImage ichrechts,32,156,0 MaskImage ichlinks,32,156,0 MaskImage ichvorne,32,156,0 ;die map-array Dim map(21,9) ;die Karte ; 0 = tapette ; 1 = teppich timer=CreateTimer(5) Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 Data 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 Data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;einlesen und die zahlen der Tiles in der array speichern For y = 0 To 8 For x = 0 To 20 Read map(x,y) Next Next Repeat SetBuffer BackBuffer() Cls If KeyDown(1) Then End CreateTimer(1) ;malt die karte. Die auf der map gespeicherten zahlen einfach als framezahl des tilesets nehmen For y = 0 To 9 For x = 0 To 21 DrawBlock tileset,x*16,y*25,map(x,y) Next Next ;einfach wenn tastendruck dann If KeyDown(208) Then ;wenn die position des spielers (px,py+1) mit einem tile kollidiert, dass in der array einen höeren ;wert als 2 hat geht der if-satz nicht weiter und die figur bleibt stehen ;die 2 ist gleichzeitig das frame des tilesets If map(px,py+1) <1 Then ;die figur wird um ein tile bewegt py = py+1 ;überträgt die spielerkoordinaten auf die x und y variablen der map und malt unsere figur move = 1 End If End If If KeyDown(200) Then If map(px,py-1) <1 Then py = py -1 move =1 End If End If If KeyDown(203) Then If map(px-1,py) < 1 Then px = px -1 move = 1 End If End If If KeyDown(205) Then If map(px+1,py) < 1 Then px = px +1 move =1 End If End If If KeyDown(203)=0 And KeyDown(205)=0 And KeyDown(200)=0 And KeyDown(208)=0 Then x = px * 16: y = py * 25 DrawImage ich,px+x,py+y EndIf If KeyDown(205) n=(n+1) Mod 3 x=px*16 DrawImage ichrechts, px+x, py+y,n If KeyDown(203) n=(n+1) Mod 3 x=px/16 DrawImage ichlinks, x+px, y+py,n If KeyDown(200) n=(n+1) Mod 3 y=y/25 DrawImage ichhinten, x+px, y+py,n If KeyDown(208) n=(n+1) Mod 3 y=y*25 DrawImage ichvorne, x+px, py+y,n WaitTimer(timer) Flip 0 Forever Hier ist ein kleiner denkfehler glaub ich.px und py sind ja 2. ich glaub das ist das problem. also wenn ich nach unten klcike kann man nicht sehen, wie der nach unten läuft sondern der ist dann außerhalb!!und so ist das überall |
||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
also SetBuffer Backbuffer() darf nicht in der Hauptschleife sein, is unnötig und macht das Spiel langsam, mach es auserhalb der schleife ![]() createtimer(1) muss so sein auserhalb der main schleife timer=createtimer(60) ;ich würde 60 nehmen ^^ und in der main schleife waittimer(timer) außerdem würde ich nicht in der main schleife das tilebild immer neu zusammensetzen, das macht das spiel langsam mfg TimBo |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group