Código:
graphics 800,600,16,2.
Setbuffer backbuffer().
Mario=loadanimimage (Mario, (*.png),64,76,0,13)
Maskimage Mario,255,0,255.
Mario.
Global mx=300 ;posición x.
Global my=300 ;posición y.
Global mvy=0 ;velocidad y.
Global max=10 ;aceleración x.
Global mayg=15 ;aceleración de la gravedad.
Global m=1 ;masa.
Global mf=6 ;frame.
Global ms=0 ;estado.
Global mt=0 ;indicador tiempo.
Global mi=true ;indicador intervalos.
Salto.
Global Jump=false ;verdadero si esta saltando.
Global jumpi=0 ;indicador salto.
Global jumpimax=3 ;duración del salto.
General.
Global fps=30 ;frames por segundo.
Timer = createtimer(fps) ;timer para fps.
Mf, ms ;
; 0 ; 0, agachado <
; 1 ; 1, saltar <
; 2 ; 2, deslizando <
; 3.4.5 ; 3, caminar <
; 6 ; 4, parado <
; 7 ; 5, parado >
; 8.9.10 ; 6, caminar >
; 11 ; 7, deslizando >
; 12 ; 8, saltar >
; 13 ; 9, agachado >.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.
While not keyhit(1).
Cls.
Line 0,376,800,376
Line 0,55,800,55
Line 100,55,100,376
Line 200,55,200,376
Line 300,55,300,376
Line 400,55,400,376
Line 500,55,500,376
Line 600,55,600,376
Line 700,55,700,376.
If keydown(203) ;left.
Walkl()
Elseif keydown(205) ;right.
Walkr()
Else.
If mx < 400
Ms = 5
Mf = 7
Else.
Ms = 4
Mf = 6
Endif.
Endif.
If mx < -50 then mx = 800
If mx > 800 then mx = -50.
If my < 300 ;fall.
Mvy = mvy + mayg.
If (my + mvy) > 300 then mvy = 300 - My.
Else.
If keyhit(57)
Jump=true.
Else.
Endif.
If Jump=false then mvy=0.
Endif.
If Jump=true ;jump loop.
If ms>4 then ms=8
If ms<5 then ms=1
If ms=8 then mf=12
If ms=1 then mf=1
Mvy = mvy - 20
If jumpi = jumpimax.
Jumpi=0
Jump=false.
Else.
Jumpi = jumpi + 1
Endif.
Else.
Endif.
My = my + mvy.
Drawimage Mario,mx,my,mf.
Delay 100
Flip.
Wend.
End.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.
Function walkr()
T = 0
If ms = 3 and max = 20
Mt = 0
Ms = 7
Mac = false, si ms es caminando para el otro lado deslizar |
Endif.
If ms = 7, deslizar |
Mf = 2
Mt = mt + 1
Mx = mx - 5 + mt.
If mt = 5
Ms = 6
Mf = 9
Mt = 0
Max = 5
Endif.
Else.
If ms <> 6, inicialización |
Ms = 6
Mf = 9
Mt = 0
Max = 5
Endif.
If mt < 5 then mt = mt + 1, mt incrementando |
If max < 20 then max = max + mt, aceleración incrementando |
Mx = mx + max, mov cord x |
If mf = 9 and mi = true, cambios de frame : patai - Medio - Patad - Medio - Patai. |
Mf = 10
Mi = false.
Elseif mf = 9 and mi = false.
Mf = 8
Mi = true.
Else.
If mf = 10 then mf = 9
If mf = 8 then mf = 9
Endif.
Endif.
End function.
Function walkl()
T = 0
If ms = 6 and max = 20
Mt = 0
Ms = 2
Mac = false, si ms es caminando para el otro lado deslizar |
Endif.
If ms = 2, deslizar |
Mf = 11
Mt = mt + 1
Mx = mx + 5 - Mt.
If mt = 5
Ms = 3
Mf = 4
Mt = 0
Max = 5
Endif.
Else.
If ms <> 3 ;inicialización |
Ms = 3
Mf = 4
Mt = 0
Max = 5
Endif.
If mt < 5 then mt = mt + 1, mt incrementando |
If max < 20 then max = max + mt, aceleración incrementando |
Mx = mx - Max, mov cord x |
If mf = 4 and mi = true, cambios de frame : patai - Medio - Patad - Medio - Patai. |
Mf = 5
Mi = false.
Elseif mf = 4 and mi = false.
Mf = 3
Mi = true.
Else.
If mf = 5 then mf = 4
If mf = 3 then mf = 4
Endif.
Endif.
End function.
-
Saludos, el aprendiz 3d.