*Update* Mapscrolling auf einer Tilemap + Laufanimation

Übersicht BlitzBasic FAQ und Tutorials

Neue Antwort erstellen

Freeman

Betreff: *Update* Mapscrolling auf einer Tilemap + Laufanimation

BeitragDi, Dez 23, 2003 13:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab mir gedacht da dieses Thema grad sowieso besprochen wird , also tilemaps etc. , bauste mal nen Mapscrolling . OK, hab mir etwas gedanken gemacht und hab dann das gebastelt :

achso, ich braucht das pic noch, als tile :
user posted image

das die rote Fläche zu lang ist is nich so schlimm weil ich nutzte nur die Größe 16*16

Jetzt der code :Code: [AUSKLAPPEN]

;Mapscroll by Freeman

Graphics 320,240

SetBuffer BackBuffer()
tile = LoadAnimImage("chip1.png",16,16,0,3)

pX = 0 ; ist die Player X Koordinate
pY = 0 ; ist die Player Y Koordinate
fX = 0 ; ist eine gefakete X Koordinate des Players, sie ist sehr nützlich bei
;Dingen wie Mapscrolling oder so ^^
fY = 0 ;; ist eine gefakete y Koordinate des Players, sie ist sehr nützlich bei
;Dingen wie Mapscrolling oder so ^^

Dim Map(40,40)

Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0


For y = 0 To 39
For x = 0 To 39
Read map(x,y)
Next
Next

Repeat
Cls

For y = 0 To 39
For x = 0 To 39
DrawImage tile,x*16-scrollx,y*16-scrolly,map(x,y)
Next
Next



Text 0,0,"py "+ Str(py)
Text 0,16,"fy" + Str(fy)
Text 0,32,"scrolly" + Str(scrolly)
Text 0,48,"pX"+Str(px)
Text 0,64,"fx"+Str(fx)
Text 0,80,"scrollx"+Str(scrollx)


 



If KeyDown(205)
If  210> px
px = px + 1
fx = fx + 1
ElseIf (40*16) - 110 >= fx 
scrollx = scrollx + 1
fx = fx + 1
ElseIf (40*16) - 110 <= fx And fx <= 40*16 - 9
px = px + 1
fx = fx + 1
EndIf
EndIf

If KeyDown(203)
If px < 111 And fx - 111 >=1
scrollx = scrollX - 1
fx = fx - 1
ElseIf fx >= 109
 px = px - 1
fx = fx - 1
ElseIf px <= 109 And px >= 1
 px = px - 1
fx = fx - 1
EndIf
EndIf

If KeyDown(208)
If py >= 140 And fy < (40*16)-100
scrolly = scrolly + 1
fy = fy + 1
Else 
If fy <= (40*16) - 9
fy =fy + 1
py = py + 1
EndIf
EndIf
EndIf

If KeyDown(200)
If py <=100 And fy > 100
scrolly = scrolly -1
fy = fy - 1
Else
If fy > 0
fy = fy - 1
py = py - 1
EndIf
EndIf
EndIf

Color 0,255,0
Rect pX,pY,8,8
Flip


Until KeyDown(1)
 



; Edit : ich habe es etws getestet un ich glaube, diese Variante funktioniert auch wenn X und Y
; unterschiedlich groß sind

;       Freeman


Viel Spassssss damit

Freeman
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28
  • Zuletzt bearbeitet von Freeman am Mo, Dez 29, 2003 22:46, insgesamt einmal bearbeitet

Freeman

BeitragMo, Dez 29, 2003 22:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Update

ich habe jetzt noch eine Spieleranimation mit reingebastelt wie sie beim rm2k üblich ist

hier das bild :

user posted image

und jetzt der Code :

Code: [AUSKLAPPEN]

Viel Spassssss damit

Freeman

;Laufanimation + Mapscroll by Freeman



graphics 320,240
setbuffer backbuffer()
tile = LoadAnimImage("chip1.png",16,16,0,3)
mainchar = loadanimimage("rudra.png",24,32,0,3*4)

pX = 0
pY = -9
fX = 0
fY = -9

Dim Map(40,40)

Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
Data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0

For y = 0 To 39
For x = 0 To 39
Read map(x,y)
Next
Next

Repeat
Cls

For y = 0 To 39
For x = 0 To 39
DrawImage tile,x*16-scrollx,y*16-scrolly,map(x,y)
Next
Next


Text 0,0,"py "+ Str(py)
Text 0,16,"fy" + Str(fy)
Text 0,32,"scrolly" + Str(scrolly)
Text 0,48,"pX"+Str(px)
Text 0,64,"fx"+Str(fx)
Text 0,80,"scrollx"+Str(scrollx)

If KeyDown(205)
If  210> px
px = px + 1
fx = fx + 1
ElseIf (40*16) - 110 >= fx
scrollx = scrollx + 1
fx = fx + 1
ElseIf (40*16) - 110 <= fx And fx <= 40*16 - 21 ; weil kästchenbreite/2 + 9
px = px + 1
fx = fx + 1
EndIf
EndIf

If KeyDown(203)
If px < 111 And fx - 111 >=1
scrollx = scrollX - 1
fx = fx - 1
ElseIf fx >= 109
 px = px - 1
fx = fx - 1
ElseIf px <= 109 And px >= 1
 px = px - 1
fx = fx - 1
EndIf
EndIf

If KeyDown(208)
If py >= 140 And fy < (40*16)-100
scrolly = scrolly + 1
fy = fy + 1
Else
If fy <= (40*16) - 40  ;wegen 32 Kästchenhöhen (besser wäre die Charhöhe ) + 9
fy =fy + 1
py = py + 1
EndIf
EndIf
EndIf

If KeyDown(200)
If py <=100 And fy > 100
scrolly = scrolly -1
fy = fy - 1
Else
If fy > -9
fy = fy - 1
py = py - 1
EndIf
EndIf
EndIf

if keydown(205)
frame      = 4
warten11 = warten11 + 1
if warten11 >= 8
frame = 3
warten12 = warten12 + 1
if warten12 >= 8
frame = 4
warten13 = warten13 + 1
if warten13 >= 8
frame = 5
warten14 = warten14 +1
if warten14 >= 8
warten11 = 0
warten12 = 0
warten13 = 0
warten14 = 0
endif
endif
endif
endif
endif


if keydown(200)
frame = 1
warten = warten + 1
if warten >= 8
frame = 0
warten2 = warten2 + 1
if warten2 >= 8
frame = 1
warten3 = warten3 + 1
if warten3 >= 8
frame = 2
warten4 = warten4 +1
if warten4 >= 8
warten = 0
warten2 = 0
warten3 = 0
warten4 = 0
endif
endif
endif
endif
endif

if keydown(203)
frame = 10
warten6 = warten6 + 1
if warten6 >= 8
frame = 9
warten7 = warten7 + 1
if warten7 >= 8
frame = 10
warten8 = warten8 + 1
if warten8 >= 8
frame = 11
warten9 = warten9 +1
if warten9 >= 8
warten6 = 0
warten7 = 0
warten8 = 0
warten9 = 0
endif
endif
endif
endif
endif

if keydown(208)
frame = 7
warten16 = warten16 + 1
if warten16 >= 8
frame = 6
warten17 = warten17 + 1
if warten17 >= 8
frame = 7
warten18 = warten18 + 1
if warten18 >= 8
frame = 8
warten19 = warten19 +1
if warten19 >= 8
warten16 = 0
warten17 = 0
warten18 = 0
warten19 = 0
endif
endif
endif
endif
endif





maskimage mainchar,7,144,149
drawimage  mainchar,px,py,frame
flip
until keydown(1)
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28
 

konstantin

BeitragMo, Dez 29, 2003 23:19
Antworten mit Zitat
Benutzer-Profile anzeigen
speicher die map extern ab.

Freeman

BeitragDi, Dez 30, 2003 12:59
Antworten mit Zitat
Benutzer-Profile anzeigen
also inner extra datei ja? ok, mach ich dann, thx
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28

joKe

BeitragMo, Feb 09, 2004 11:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt erzähl mir mal wer sich gern so Code anguckt der weder eingerückt noch irgendwo logisch aufgebaut ist ?

Naja und das mit dem Data hätte man auch kleiner dimensonieren können , da es ja nur ein Beispiel ist
Projekt: Pollux Renegades Coop
[Maschine: Intel DualCore2 2x 3Ghz | 4096 DRR2 | GeForce GTX 260 Ultra]

Freeman

BeitragMo, Feb 09, 2004 22:49
Antworten mit Zitat
Benutzer-Profile anzeigen
ja ich sehs ja ein, allerdings warn das meine ersten versuche ... jetz is natürlich alles in Funktionen gepackt und so...., ich mein jeder lernt mit der Zeit dazu und wenn man gleich sagt :"Mann is dasn Müll" dann soll es derjenige doch besser machen und und hier nen Verbesserungsvorschlag posten. das wollte ich nur mal loswerden ohne irgendwehn zu nahe kommen zu wollen.


Freeman
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28
 

SalvA

BeitragSo, Jan 16, 2005 16:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich finde das Tut sehr gut, da kann man eig. nicht groß meckern. Ich versuche z.Z. auch ein RPG auf die Beine zu stellen und du hast mir mit dem Tutorial sehr geholfen. Trotzdem hätte ich noch eine Frage nur um das Thema Laufanimation zu vervollständigen:

Fällt dir was ein um die Figur bei einer bestimten Animation stehen zu lassen? Also so, dass sie einen "Stehenbleibframe" benutzt, wenn der Spieler die Taste nicht mehr drückt (wie bei Secret of Mana z.B.)

thx noch mal wegen dem guten Tut^^

Mo

BeitragMi, Jan 19, 2005 19:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

jop das Problem hab ich bei meinen Animationen auch und bekomme das einfach nicht hin!!!
Die Ani bleibt immer in der Laufposition "eingefrohren"... wär aber cool wenn sie bei Nicht-Taste-Drück wieder in die Anfangsposition zurückfällt.... und dann auch noch in den "Stehenbleibframe" in der die Figur guckt.

Gruß Mo
 

SalvA

BeitragMi, Jan 19, 2005 23:29
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Mo,
sprichst mir aus der Seele^^
Ich tüftle schon die ganze Woche daran, und bin kurz vor der Verzweiflung...

DivineDominion

BeitragDo, Jan 20, 2005 0:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Also Freemans animations mag vielleicht funktionieren, ist aber grottenschlecht programmiert! Smile

Pixel*Tile-Scrolling wäre, wenn man eine Taste druckt und der, bei 16x16 tiles, sich 16 Pixel in die Richtung bewegt. Flüssig. Das geht relativ einfach dann, finde ich:

Restwert = Position Mod 16

Das wäre dann die "Abstufung" zwischen den beiden Tiles, zwischen 0 und 15 müsste das sein Smile

Nun kann man folgendermaßen arbeiten:
Code: [AUSKLAPPEN]

global frame ;Laufanimations-stufe von 0 bis 3; wird auf...
global framebasis ;addiert. Das hier ist 0 für unten, 4 für rechts

;...

If Restwert = 0
  frame = 0
elseif Restwert = 3
  frame = 1
elseif Restwert = 7
  frame = 2
elseif Restwert = 11
  frame = 3
elseif Restwert = 15
  frame = 0
endif

Drawimage Player, X, Y, framebasis + frame


Sind jetzt nur irgendwelche Werte, das müsste man noch ein wenig variieren (zwei mal 0 zuweisen z.b. is nicht nötig und vielleicht sind die Stufen 3,7,11 nicht ganz glücklich anzusehen).


Der Restwert wird dann eben immer berechnet, wenn der Spieler um einen Pixel bewegt wird. Bisschem rumprobieren eben.


Achja, und wenn man eine Taste drückt, setzt eine Variable wie Richtung=OBEN und definiert OBEN, UNTEN, RECHTS und LINKS als const am Anfang, damit ihr den Code später besser lesen könnt.
Dort, bei der Tastaturabfrage, setzt ihr auch sowas wie tasteErlaubt=false und dann kann der spieler erstmal nix drücken bis Restwert=15, also animation abgelaufen. Dann wieder auf true setzen und er kann weiter steuern.
Achja, und da kann man auch frame=0 und framebasis=... für die Richtung setzen!

Hoffe das hilft ein wenig[/code]
christian.tietze@gmail.com - https://christiantietze.de
macOS
 

David

BeitragDo, Jan 20, 2005 8:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Nett das mit dem Scrolling, aber noch verbesserungswürdig.
Beispielsweise wäre es sinnvoll nur den Ausschnitt zu zeichnen der wirklich auf dem Bildschirm sichtbar ist. Und eine unterstützung für weitere Layer wär bestimmt auch interessant. Auch Layer die sich vor dem Spieler befinden etc...
Die Routine zur Animation ist, wie gesagt, noch verbesserungswürdig und wenn du sowieso dabei bist, kannst du ja noch Kollision und simple Physik einbauen! Wink

grüße

Neue Antwort erstellen


Übersicht BlitzBasic FAQ und Tutorials

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group