Bewegen einer figur auf tiles

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Quäiny

Betreff: Bewegen einer figur auf tiles

BeitragMi, Apr 30, 2008 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Apr 30, 2008 20:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

also SetBuffer Backbuffer()
darf nicht in der Hauptschleife sein, is unnötig und macht das Spiel langsam,
mach es auserhalb der schleife Smile

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.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group