lol... The main loop of my program, is the function, so this is basically how my program works.
I make 1 or 2 functions only, that is all my main loop, of all my program, all i got to do for the rest of the program, is to change the variables outside the function. The first time i started to write it, i wanted it to be easy to work with, so thats kinda what i made. Its easier than u guys think rly, its just one main function acting as the one that moves the character, the scenario, the enemies, and everything else, and the variables to change the content of the function, look, this is my code:
Sync on ; sync rate 60
Global MonitorX
Global MonitorY
MonitorX=desktop width()
MonitorY=desktop height()
Set display mode MonitorX,MonitorY, 0
color backdrop rgb(50,175,250)
Maximize window
rem Imgenes''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
rem Imagenes de Wilson
Load image "Media\WilsonPj\Wilson_Animacion_Corre_1.png" ,1
Load image "Media\WilsonPj\Wilson_Animacion_Corre1_izquierda.png" ,18
Load image "Media\WilsonPj\Wilson_Animacion_Corre_2.png" ,2
Load image "Media\WilsonPj\Wilson_Animacion_Corre2_izquierda.png" ,10
Load image "Media\WilsonPj\Wilson_Animacion_Corre_3.png" ,3
Load image "Media\WilsonPj\Wilson_Animacion_Corre3_izquierda.png" ,11
Load image "Media\WilsonPj\Wilson_Animacion_Corre_4.png" ,4
Load image "Media\WilsonPj\Wilson_Animacion_Corre4_izquierda.png" ,12
Load image "Media\WilsonPj\Wilson_Animacion_Corre_5.png" ,5
Load image "Media\WilsonPj\Wilson_Animacion_Corre5_izquierda.png" ,13
Load image "Media\WilsonPj\Wilson_Animacion_Corre_6.png" ,6
Load image "Media\WilsonPj\Wilson_Animacion_Corre6_izquierda.png" ,14
Load image "Media\WilsonPj\Wilson_Animacion_Cola_1.png" ,7
Load image "Media\WilsonPj\Wilson_Animacion_Cola1_izquierda.png" ,15
Load image "Media\WilsonPj\Wilson_Animacion_Cola_2.png" ,8
Load image "Media\WilsonPj\Wilson_Animacion_Cola2_izquierda.png" ,16
Load image "Media\WilsonPj\Wilson_Animacion_Cola_3.png" ,9
Load image "Media\WilsonPj\Wilson_Animacion_Cola3_izquierda.png" ,17
Load image "Media\WilsonPj\WilsonAgachado1.png" ,19
Load image "Media\WilsonPj\WilsonAgachado_izquierda.png" ,20
Load image "Media\WilsonPj\WilsonDuerme1.png" ,21
Load image "Media\WilsonPj\WilsonDuerme_izquierda.png" ,22
Load image "Media\WilsonPj\WilsonMuerde_1.png" ,23
Load image "Media\WilsonPj\WilsonMuerde_2.png" ,24
Load image "Media\WilsonPj\WilsonMuerde_3.png" ,25
Load image "Media\WilsonPj\WilsonMuerde1_izquierda.png" ,26
Load image "Media\WilsonPj\WilsonMuerde2_izquierda.png" ,27
Load image "Media\WilsonPj\WilsonMuerde3_izquierda.png" ,28
rem Enemigos
Load image "Media\Enemigos\Tiko's\WI_LunatÃko.png" ,29
Sprite 29,1750,490,29
Set sprite priority 29, 19
Hide sprite 29
Load image "Media\Enemigos\Tiko's\WI_LunatÃko2.png" ,30
Sprite 30,0,0,30
Set sprite priority 30, 19
Hide sprite 30
rem Escenario
Load image "Media\Escenarios\Playa\WI_Playa.png" , 1000
Sprite 1000, 0, 170, 1000
Set sprite priority 1000, 2
Load image "Media\Escenarios\Playa\WI_Playa_Fondo.png" , 1003
Sprite 1003, -25, 295, 1003
Load image "Media\Escenarios\Playa\WI Playa_Terreno_1.png" ,1001
Sprite 1001,0,580, 1001
Set sprite priority 1001, 1
Load image "Media\Escenarios\Playa\WI Playa_Terreno_2.png" ,1002
Sprite 1002,2480,580, 1002
Set sprite priority 1002, 1
Load image "Media\Escenarios\Jungla\WI_Puerta_Jungla.png" ,1004
Sprite 1004, 4300, 320, 1004
Set sprite priority 1004, 3
Global PuertaVisible
Show sprite 1004 ; PuertaVisible=1
Rem Musica'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
load music "Media\Musica\Playa\WWM_Playa-Jungla1.mp3" ,1
loop music 1
set music volume 1, 0
Rem Sonidos''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Load sound "Media\Sonidos\WilsonSnds\chomp.wav" ,1
Set sound volume 1, 80
Load sound "Media\Sonidos\WilsonSnds\step7.wav" ,2
Set sound volume 2, 90
rem Data ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Global F2xE
F2xE=1
Global F2x
F2x=X
Global Fy
Fy=0
Global X
X=MonitorX/2/2
Global Y
Y=495
Global A
A=Y
Global AW
AW=150
Global YW1
YW1=50
Global YW1O
YW1O=YW1
Global YW2O
YW2O=YW2
Global aYW
aYW=10
Global FxX
FxX=25
Global WFxX
WFxX=31.7
Global FxDL
FxDL=MonitorX*-4+175+50
Global FxIL
FxIL=-25
Global WxDL
WxDL=775
Global WxIL
WxIL=50
Global F1Primero
F1Primero=1
Global F1Ultimo
F1Ultimo=5
Global F2Primero
F2Primero=1
Global F2Ultimo
F2Ultimo=1
Global FxIM
FxIM=MonitorX/2
Global FxDM
FxDM=MonitorX/2
Global Mordidas
Mordidas=1
Global WSpritePrimero
WSpritePrimero=1
Global WSpriteUltimo
WSpriteUltimo=28
Global TerrenoPrimero
TerrenoPrimero=1001
Global TerrenoUltimo
TerrenoUltimo=1002
Global Contador
Contador=0
Global TikosN
TikosN=1
Global TikoCDoI
TikoCDoI=1
Global TikoE
TikoE=1
Global WMTikoVisible
WMTikoVisible=0
Global WGolpeadoVisible
WGolpeadoVisible=0
Global WColaWait
WColaWait=100
Global WDuermeWait
WDuermeWait=60
Global WCorreWait
WCorreWait=60
Global WSaltaWait1
WSaltaWait1=100
Global WSaltaWait2
WSaltaWait2=60
Global WAgachaWait
WAgachaWait=100
Global WMuerdeWait
WMuerdeWait=100
Global TikoMaxX
TikoMaxX=2000
Global TikoMinX
TikoMinX=1500
Global C1Wait
C1Wait=0
Global C2Wait
C2Wait=0
Global PlataformaE
PlataformaE=0
Global PlataformaPrimero
PlataformaPrimero=0
Global PlataformaUltimo
PlataformaUltimo=0
Global ParedE
ParedE=0
Global ParedPrimera
ParedPrimera=0
Global ParedUltima
ParedUltima=0
Global F3E
F3E=0
Global F3Primero
F3Primero=0
Global F3Ultimo
F3Ultimo=0
Global PuertaPrimera
PuertaPrimera=1
Global PuertaUltima
PuertaUltima=1
Global Escenario
Escenario=1
Global FyUpL
FyUpL=0
Global FyUpM
FyUpM=MonitorY/2-50
Global FyDownL
FyDownL=175
Global FyDownM
FyDownM=MonitorY/2+50
Global FyY
FyY=25
For WilsonSprites= 1 to 28
Sprite WilsonSprites,0,0,WilsonSprites
Hide sprite WilsonSprites
Set sprite priority WilsonSprites,20
Next WilsonSprites
Global F1
Dim F1(10)
F1(1)=1000
F1(2)=1001
F1(3)=1002
F1(4)=29
F1(5)=1004
Global F1x
Dim F1x(10)
F1x(1)=Fx
F1x(2)=0
F1x(3)=2480
F1x(4)=1750
F1x(5)=4300
Global F1y
Dim F1y(10)
F1y(1)=170
F1y(2)=580
F1y(3)=580
F1y(4)=490
F1y(5)=320
Global F2
Dim F2(10)
F2(1)=1003
Global F2x
Dim F2x(10)
F2x(1)=-25
Global F2y
Dim F2y(10)
F2y(1)=295
Global F2xX
Dim F2xX(10)
F2xX(1)=4
Global F2yY
Dim F2yY(10)
F2yY(1)=4
Global F3
Dim F3(10)
F3(1)=0
Global F3x
Dim F3x(10)
F3x(1)=0
Global F3y
Dim F3y(10)
F3y(1)=0
Global F3xX
Dim F3xX(10)
F3xX(1)=0
Global F3yY
Dim F3yY(10)
F3yY(1)=0
Global Tikos
Dim Tikos(10)
Tikos(1)=29
Tikos(2)=30
Global WWait
Dim WWait(10)
WWait(1)=60
WWait(2)=100
Global Puerta
Dim Puerta(10)
Puerta(1)=1004
Global Puertas
Dim Puertas(10)
Puertas(1)=Jungla1
Wilson()
Function Wilson()
rem Main loop '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Do
WilsonDerecha:
Do
If inkey$()<>"s"
If inkey$()<>"S"
If rightkey()=1
If leftkey()=1
Inc Contador, 2
gosub WD
Else
gosub WCD
Endif
Endif
Endif
Endif
If inkey$()="s" OR inkey$()="S" then gosub WSD
If downkey()=1 then gosub WAD
If inkey$()="a" OR inkey$()="A" then gosub WMD
If rightkey()=0
If leftkey()=1 then gosub WilsonIzquierda
endif
gosub WD
loop
WilsonIzquierda:
Do
If inkey$()<>"s"
If inkey$()<>"S"
If leftkey()=1
If rightkey()=1
Inc Contador, 2
gosub WI
else
gosub WCI
Endif
Endif
Endif
Endif
WMCorriendoI:
If inkey$()="s" OR inkey$()="S" then gosub WSI
If downkey()=1 then gosub WAI
If inkey$()="a" OR inkey$()="A" then gosub WMI
If leftkey()=0
If rightkey()=1 then goto WilsonDerecha
Endif
gosub WI
loop
Loop
Rem Subrutinas ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Rem Wilson Derecha ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
WD:
WCaida=0
WIzquierda=0
WDerecha=1
For WDD=1 to 40
For WDSprites=1 to 4
WWait(2)=100
If WDSprites=1 then WDSprite=7
If WDSprites=2 then WDSprite=8
If WDSprites=3 then WDSprite=7
If WDSprites=4 then WDSprite=9
If Gravedad>20 then YW1=Gravedad*-1 : gosub WCSD
If WCaida=1 AND Gravedad<50 then inc Gravedad, 10
inc Y, Gravedad : WCaida=1
If F1y(Escenario)=<FyUpL AND Y<=FyUpM
inc Y, FyY
For F1N=F1Primero to F1Ultimo
inc F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
inc F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
inc F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
If F1y(Escenario)=>FyDownL AND Y>=FyDownM
dec Y, FyY
For F1N=F1Primero to F1Ultimo
dec F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
dec F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
dec F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
Sprite WDSprite, X, Y, WDSprite
Show sprite WDSprite ; WGolpeadoVisible=WDSprites
If TikoE=1
If Contador=>4 then TikosN=2
If Contador<4 then TikosN=1
If Contador>=7 then Contador=0
If F1x(4)=>F1x(1)+2000 then TikoCDoI=2
If F1x(4)=<F1x(1)+1500 then TikoCDoI=1
Tiko(Tikos,TikosN)
Else
WWait(2)=120
Endif
sync
CdeC()
Wait WWait(2)
Hide sprite WDSprite ; WGolpeadoVisible=0
For Terreno= TerrenoPrimero to TerrenoUltimo
If PlataformaE=1
For Plataforma= PlataformaPrimero to PlataformaUltimo
If Terreno=Plataforma then Sprite WDSprite, X, Y+50, WDSprite
Next Plataforma
Endif
while pixelcol(Terreno,WDSprite)=1
WCaida=0
Gravedad=10
NumMordidas=0
dec Y, 5
sprite WDSprite,X,Y,WDSprite
endwhile
Next Terreno
Inc Contador, 1
If NumMordidas<>Mordidas
If inkey$()="a" OR inkey$()="A"
If WMordio=0 then Goto WilsonDerecha
Else
WMordio=0
Endif
Endif
If rightkey()=1 then Goto WilsonDerecha
If leftkey()=1 then Goto WilsonIzquierda
If inkey$()="s" OR inkey$()="S" then Goto WilsonDerecha
If downkey()=1 then Goto WilsonDerecha
If upkey()=1
For PuertaN=PuertaPrimera to PuertaUltima
If pixelcol(Puerta(PuertaN),WDSprites)=1
If PuertaVisible=1
Color backdrop rgb(0,0,0)
sync
Goto Jungla1
Endif
endif
Next Puertas
Endif
Next WDSprites
Next WDD
Rem Wilson Duerme Derecha:
WCaida=0
Do
WWait(1)=60
If rightkey()=1 then hide sprite 21 : Goto WilsonDerecha
If leftkey()=1 then hide sprite 21 : Goto WilsonIzquierda
If inkey$()="s" OR inkey$()="S" then hide sprite 21 : Goto WilsonDerecha
If downkey()=1 then hide sprite 21 : Goto WilsonDerecha
If inkey$()="a" OR inkey$()="A" then hide sprite 21 : Goto WilsonDerecha
If Gravedad>20 then YW1=0 : gosub WCSD
If WCaida=1 AND Gravedad<50 then inc Gravedad, 10
inc Y, Gravedad : WCaida=1
If F1y(Escenario)=<FyUpL AND Y<=FyUpM
inc Y, FyY
For F1N=F1Primero to F1Ultimo
inc F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
inc F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
inc F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
If F1y(Escenario)=>FyDownL AND Y>=FyDownM
dec Y, FyY
For F1N=F1Primero to F1Ultimo
dec F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
dec F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
dec F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
Sprite 21, X, Y+30, 21
Set Sprite priority 21,20
Show sprite 21 ; WGolpeadoVisible=21
If TikoE=1
If Contador=>4 then TikosN=2
If Contador<4 then TikosN=1
If Contador>=7 then Contador=0
If F1x(4)=>F1x(1)+2000 then TikoCDoI=2
If F1x(4)=<F1x(1)+1500 then TikoCDoI=1
Tiko(Tikos,TikosN)
Else
WWait(1)=80
Endif
CdeC()
sync
Wait WWait(1)
hide sprite 21 ; WGolpeadoVisible=0
For Terreno= TerrenoPrimero to TerrenoUltimo
If PlataformaE=1
For Plataforma= PlataformaPrimero to PlataformaUltimo
If Terreno=Plataforma then Sprite 21, X, Y+40, 21
Next Plataforma
Endif
while pixelcol(Terreno,21)=1
WCaida=0
Gravedad=10
NumMordidas=0
dec Y, 5
sprite 21,X,Y,21
endwhile
Next Terreno
Inc Contador, 1
Loop
Rem Wilson Corre Derecha ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
WCD:
WCaida=0
Do
WPared=0
WWait(1)=60
For WCDSprite= 2 to 6
If NumMordidas<>Mordidas
If inkey$()="a" OR inkey$()="A"
If WMordio=0 then Goto WMD
Else
WMordio=0
Endif
Endif
If rightkey()=0 then Goto WilsonDerecha
If leftkey()=1 then Goto WilsonDerecha
If inkey$()="s" OR inkey$()="S" then Goto WilsonDerecha
If ParedE=1
Sprite WCDSprite, X+50, Y, WCDSprite
For Pared=ParedPrimera to ParedUltima
If pixelcol(Pared,WCDSprite)=1
Goto WD
Endif
Next Pared
Endif
If F1x(Escenario)=>FxDL AND X>=FxIM
For F1N=F1Primero to F1Ultimo
dec F1x(F1N), FxX
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
dec F2x(F2N), FxX/F2xX(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
dec F3x(F3N), FxX+F3xX(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Else
If X>=WxDL then Goto WD
inc X, WFxX
Endif
If F1y(Escenario)=<FyUpL AND Y<=FyUpM
inc Y, FyY
For F1N=F1Primero to F1Ultimo
inc F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
inc F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
inc F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
If F1y(Escenario)=>FyDownL AND Y>=FyDownM
dec Y, FyY
For F1N=F1Primero to F1Ultimo
dec F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
dec F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
dec F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
If WCDSprite=2 OR WCDSprite=5 then play sound 2
If Gravedad>40 then YW1=0 : gosub WCSD
If WCaida=1 AND Gravedad<50 then inc Gravedad, 10
inc Y, Gravedad : WCaida=1
Sprite WCDSprite, X, Y, WCDSprite
Show sprite WCDSprite ; WGolpeadoVisible=WCDSprite
If TikoE=1
If Contador=>4 then TikosN=2
If Contador<4 then TikosN=1
If Contador>=7 then Contador=0
If F1x(4)=>F1x(1)+2000 then TikoCDoI=2
If F1x(4)=<F1x(1)+1500 then TikoCDoI=1
Tiko(Tikos,TikosN)
Else
WWait(1)=80
Endif
Sync
CdeC()
wait WWait(1)
hide sprite WCDSprite ; WGolpeadoVisible=0
For Terreno= TerrenoPrimero to TerrenoUltimo
If PlataformaE=1
For Plataforma= PlataformaPrimero to PlataformaUltimo
If Terreno=Plataforma then Sprite WCDSprite, X, Y+50, WCDSprite
Next Plataforma
Endif
while pixelcol(Terreno,WCDSprite)=1
WCaida=0
Gravedad=10
NumMordidas=0
dec Y, 5
sprite WCDSprite,X,Y,WCDSprite
endwhile
Next Terreno
Inc Contador, 1
Next WCDSprite
loop
Rem Wilson Salta Derecha ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
WSD:
YW1=YW1O
WSDSprite=3
NumMordidas=0
WMAire=1
WWait(2)=100
play sound 2
Sprite 1,X+50,Y,1
Set sprite priority 1,20
show sprite 1 ; WGolpeadoVisible=1
If TikoE=1
If Contador=>4 then TikosN=2
If Contador<4 then TikosN=1
If Contador>=7 then Contador=0
If F1x(4)=>F1x(1)+2000 then TikoCDoI=2
If F1x(4)=<F1x(1)+1500 then TikoCDoI=1
Tiko(Tikos,TikosN)
Else
WWait(2)=120
Endif
sync
CdeC()
Wait WWait(2)
hide sprite 1 ; WGolpeadoVisible=0
Play sound 2
Inc Contador, 1
WCSD:
Do
WPared=0
WWait(1)=60
If ParedE=1
Sprite WSDSprite, X+50, Y, WSDSprite
For Pared=ParedPrimera to ParedUltima
If pixelcol(Pared,WSDSprite)=1
WPared=1
Endif
Next Pared
Endif
If WPared=0
If X<WxDL
If rightkey()=1
If F1x(Escenario)=>FxDL AND X>=FxIM
For F1N=F1Primero to F1Ultimo
dec F1x(F1N), FxX
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
dec F2x(F2N), FxX/F2xX(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
dec F3x(F3N), FxX+F3xX(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Else
Inc X,WFxX
Endif
Endif
Endif
If X>WxIL
If rightkey()=0
If leftkey()=1
If F1x(Escenario)=<FxIL AND X<=FxDM
For F1N=F1Primero to F1Ultimo
inc F1x(F1N), FxX/2
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
inc F2x(F2N), FxX/F2xX(F2N)/2
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
inc F3x(F3N), (FxX+F3xX(F3N))/2
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Else
Dec X,WFxX/2
Endif
Endif
Endif
Endif
Endif
If WSDSprite=3
If F1y(Escenario)=<FyUpL AND Y<=FyUpM
inc Y, FyY
For F1N=F1Primero to F1Ultimo
inc F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
inc F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
inc F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
Endif
If WSDSprite=4
If F1y(Escenario)=>FyDownL AND Y>=FyDownM
dec Y, FyY
For F1N=F1Primero to F1Ultimo
dec F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
dec F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
dec F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
Endif
If NumMordidas<>Mordidas
If inkey$()="a" OR inkey$()="A"
If WMordio=0
YW1=0
Goto WMDS
Endif
Else
WMordio=0
Endif
Endif
If YW1<=0 then WSDSprite=4
Dec Y,YW1
Sprite WSDSprite,X+50,Y,WSDSprite
Set sprite priority WSDSprite,20
Show sprite WSDSprite ; WGolpeadoVisible=WSDSprite
If TikoE=1
If Contador=>4 then TikosN=2
If Contador<4 then TikosN=1
If Contador>=7 then Contador=0
If F1x(4)=>F1x(1)+2000 then TikoCDoI=2
If F1x(4)=<F1x(1)+1500 then TikoCDoI=1
Tiko(Tikos,TikosN)
Else
WWait(1)=80
Endif
sync
CdeC()
wait WWait(1)
hide sprite WSDSprite ; WGolpeadoVisible=0
If YW1>-50 then dec YW1, aYW
For Terreno= TerrenoPrimero to TerrenoUltimo
If PlataformaE=1
For Plataforma= PlataformaPrimero to PlataformaUltimo
If Terreno=Plataforma then Sprite WSDSprite, X, Y+25, WSDSprite
Next Plataforma
Endif
If pixelcol(Terreno,WSDSprite)=1
If WSDSprite=4
inc Y, YW1+50
Play sound 2
Gravedad=10
WMAire=0
Goto WD
Endif
endif
Next Terreno
Inc Contador, 1
Loop
Rem Wilson Agachado Derecha '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
WAD:
WCaida=0
Do
WWait(2)=100
If downkey()=0
Hide sprite 19
Goto WilsonDerecha
Endif
If Gravedad>20 then YW1=0 : gosub WCSD
If WCaida=1 AND Gravedad<50 then inc Gravedad, 10
inc Y, Gravedad : WCaida=1
If F1y(Escenario)=<FyUpL AND Y<=FyUpM
inc Y, FyY
For F1N=F1Primero to F1Ultimo
inc F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
inc F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
inc F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
If F1y(Escenario)=>FyDownL AND Y>=FyDownM
dec Y, FyY
For F1N=F1Primero to F1Ultimo
dec F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
dec F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
dec F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
Sprite 19,x+55,y+30,19
Set sprite priority 19,20
Show sprite 19 ; WGolpeadoVisible=19
If TikoE=1
If Contador=>4 then TikosN=2
If Contador<4 then TikosN=1
If Contador>=7 then Contador=0
If F1x(4)=>F1x(1)+2000 then TikoCDoI=2
If F1x(4)=<F1x(1)+1500 then TikoCDoI=1
Tiko(Tikos,TikosN)
Else
WWait(2)=120
Endif
Sync
CdeC()
wait WWait(2)
hide sprite 19 ; WGolpeadoVisible=0
For Terreno= TerrenoPrimero to TerrenoUltimo
If PlataformaE=1
For Plataforma= PlataformaPrimero to PlataformaUltimo
If Terreno=Plataforma then Sprite 19, X, Y+50, 19
Next Plataforma
Endif
while pixelcol(Terreno,19)=1
WCaida=0
Gravedad=10
NumMordidas=0
dec Y, 10
sprite 19,X,Y,19
If PlataformaE=1
For Plataforma= PlataformaPrimero to PlataformaUltimo
If Terreno=Plataforma
If inkey$()="s" Or inkey$()="S"
YW1=0
inc y, 125
goto WCSD
Endif
Endif
Next Plataforma
Endif
endwhile
Next Terreno
Inc Contador, 1
Loop
Rem Wilson Muerde Derecha '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
WMD:
WWait(2)=100
Sprite 1,X+75,Y,1
Set sprite priority 1,20
show sprite 1 ; WGolpeadoVisible=1
If TikoE=1
If Contador=>4 then TikosN=2
If Contador<4 then TikosN=1
If Contador>=7 then Contador=0
If F1x(4)=>F1x(1)+2000 then TikoCDoI=2
If F1x(4)=<F1x(1)+1500 then TikoCDoI=1
Tiko(Tikos,TikosN)
Else
WWait(2)=120
Endif
sync
CdeC()
Wait WWait(2)
hide sprite 1 ; WGolpeadoVisible=0
Inc Contador, 1
WMDS:
Do
WPared=0
WWait(2)=100
For WMDSSprite=23 to 25
If ParedE=1
Sprite WMDSSprite, X+50, Y, WMDSSprite
For Pared=ParedPrimera to ParedUltima
If pixelcol(Pared,WMDSSprite)=1
WPared=1
Endif
Next Pared
Endif
If WPared=0
If X<WxDL
If rightkey()=1
If F1x(Escenario)=>FxDL AND X>=FxIM
For F1N=F1Primero to F1Ultimo
dec F1x(F1N), FxX
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
dec F2x(F2N), FxX/F2xX(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
dec F3x(F3N), FxX+F3xX(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Else
inc X,WFxX
Endif
Endif
Endif
If X>WxIL
If rightkey()=0
If leftkey()=1
If F1x(Escenario)=<FxIL AND X<=FxDM
For F1N=F1Primero to F1Ultimo
inc F1x(F1N), FxX/2
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
inc F2x(F2N), FxX/F2xX(F2N)/2
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
inc F3x(F3N), (FxX+F3xX(F3N))/2
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Else
Dec X,WFxX/2
Endif
Endif
Endif
Endif
Endif
If F1y(Escenario)=<FyUpL AND Y<=FyUpM
inc Y, FyY
For F1N=F1Primero to F1Ultimo
inc F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
inc F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
inc F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
If F1y(Escenario)=>FyDownL AND Y>=FyDownM
dec Y, FyY
For F1N=F1Primero to F1Ultimo
dec F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
dec F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
dec F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
If WMDSSprite=23 then Play sound 1
Sprite WMDSSprite, X+75, Y, WMDSSprite
Set sprite priority WMDSSprite,20
Show sprite WMDSSprite ; WMTikoVisible=WMDSSprite
If TikoE=1
If Contador=>4 then TikosN=2
If Contador<4 then TikosN=1
If Contador>=7 then Contador=0
If F1x(4)=>F1x(1)+2000 then TikoCDoI=2
If F1x(4)=<F1x(1)+1500 then TikoCDoI=1
Tiko(Tikos,TikosN)
Else
WWait(2)=120
Endif
Sync
CdeC()
Wait WWait(2)
Hide sprite WMDSSprite ; WMTikoVisible=0
Inc Contador, 1
Next WMDSSprite
inc NumMordidas, 1
WMordio=1
If WMAire=0 then Goto WD
If WMAire=1 then Goto WCSD
loop
Rem Wilson Izquierda ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
WI:
WCaida=0
WDerecha=0
WIzquierda=1
For WDI=1 to 40
For WISprites= 1 to 4
WWait(2)=100
If WISprites=1 then WISprite=15
If WISprites=2 then WISprite=16
If WISprites=3 then WISprite=15
If WISprites=4 then WISprite=17
If Gravedad>20 then YW1=0 : gosub WCSI
If WCaida=1 AND Gravedad<50 then inc Gravedad, 10
inc Y, Gravedad : WCaida=1
If F1y(Escenario)=<FyUpL AND Y<=FyUpM
inc Y, FyY
For F1N=F1Primero to F1Ultimo
inc F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
inc F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
inc F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
If F1y(Escenario)=>FyDownL AND Y>=FyDownM
dec Y, FyY
For F1N=F1Primero to F1Ultimo
dec F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
dec F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
dec F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
Sprite WISprite, X, Y, WISprite
Set sprite priority WISprite,20
Show sprite WISprite ; WGolpeadoVisible=WISprite
If TikoE=1
If Contador=>4 then TikosN=2
If Contador<4 then TikosN=1
If Contador>=7 then Contador=0
If F1x(4)=>F1x(1)+2000 then TikoCDoI=2
If F1x(4)=<F1x(1)+1500 then TikoCDoI=1
Tiko(Tikos,TikosN)
Else
WWait(2)=120
Endif
Sync
CdeC()
Wait WWait(2)
Hide sprite WISprite ; WGolpeadoVisible=0
For Terreno= TerrenoPrimero to TerrenoUltimo
If PlataformaE=1
For Plataforma= PlataformaPrimero to PlataformaUltimo
If Terreno=Plataforma then Sprite WISprite, X, Y+50, WISprite
Next Plataforma
Endif
while pixelcol(Terreno,WISprite)=1
WCaida=0
Gravedad=10
NumMordidas=0
dec Y, 5
sprite WISprite,X,Y,WISprite
endwhile
Next Terreno
Inc Contador, 1
If NumMordidas<>Mordidas
If inkey$()="a" OR inkey$()="A"
If WMordio=0 then Goto WilsonIzquierda
Else
WMordio=0
Endif
Endif
If leftkey()=1 then Goto WilsonIzquierda
If rightkey()=1 then Goto WilsonDerecha
If inkey$()="s" OR inkey$()="S" then Goto WilsonIzquierda
If downkey()=1 then Goto WilsonIzquierda
If upkey()=1
If pixelcol(1004,WISprites)=1
If PuertaVisible=1
Color backdrop rgb(0,0,0)
sync
Goto Jungla1
Endif
endif
Endif
Next WISprites
Next WDI
Rem Wilson Duerme Izquierda:
WCaida=0
Do
WWait(1)=60
If leftkey()=1 then hide sprite 22 : Goto WilsonIzquierda
If rightkey()=1 then hide sprite 22 : Goto WilsonDerecha
If inkey$()="s" OR inkey$()="S" then hide sprite 22 : Goto WilsonIzquierda
If downkey()=1 then hide sprite 22 : Goto WilsonIzquierda
If inkey$()="a" OR inkey$()="A" then hide sprite 22 : Goto WilsonIzquierda
If Gravedad>20 then YW1=0 : gosub WCSI
If WCaida=1 AND Gravedad<50 then inc Gravedad, 10
inc Y, Gravedad : WCaida=1
If F1y(Escenario)=<FyUpL AND Y<=FyUpM
inc Y, FyY
For F1N=F1Primero to F1Ultimo
inc F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
inc F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
inc F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
If F1y(Escenario)=>FyDownL AND Y>=FyDownM
dec Y, FyY
For F1N=F1Primero to F1Ultimo
dec F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
dec F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
dec F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
Sprite 22, X, Y+30, 22
Set Sprite priority 22,20
Show sprite 22 ; WGolpeadoVisible=WGolpeadoVisible
If TikoE=1
If Contador=>4 then TikosN=2
If Contador<4 then TikosN=1
If Contador>=7 then Contador=0
If F1x(4)=>F1x(1)+2000 then TikoCDoI=2
If F1x(4)=<F1x(1)+1500 then TikoCDoI=1
Tiko(Tikos,TikosN)
Else
WWait(1)=80
Endif
sync
CdeC()
Wait WWait(1)
Hide sprite 22 ; WGolpeadoVisible=0
For Terreno= TerrenoPrimero to TerrenoUltimo
If PlataformaE=1
For Plataforma= PlataformaPrimero to PlataformaUltimo
If Terreno=Plataforma then Sprite 22, X, Y+40, 22
Next Plataforma
Endif
while pixelcol(Terreno,22)=1
WCaida=0
Gravedad=10
NumMordidas=0
dec Y, 5
sprite 22,X,Y,22
endwhile
Next Terreno
Inc Contador, 1
Loop
Rem Wilson Corre Izquierda ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
WCI:
WCaida=0
Do
WWait(1)=60
For WCISprites=10 to 14
If NumMordidas<>Mordidas
If inkey$()="a" OR inkey$()="A"
If WMordio=0 then Goto WMI
Else
WMordio=0
Endif
Endif
If leftkey()=0 then Goto WilsonIzquierda
If rightkey()=1 then Goto WilsonIzquierda
If inkey$()="s" OR inkey$()="S" then Goto WilsonIzquierda
If ParedE=1
Sprite WCISprites, X-50, Y, WCISprites
For Pared=ParedPrimera to ParedUltima
If pixelcol(Pared,WCISprites)=1
Goto WI
Endif
Next Pared
Endif
If F1x(Escenario)=<FxIL AND X<=FxDM
For F1N=F1Primero to F1Ultimo
inc F1x(F1N), FxX
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
inc F2x(F2N), FxX/F2xX(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
inc F3x(F3N), FxX+F3xX(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Else
If X<=WxIL then Goto WI
Dec X, WFxX
Endif
If F1y(Escenario)=<FyUpL AND Y<=FyUpM
inc Y, FyY
For F1N=F1Primero to F1Ultimo
inc F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
inc F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
inc F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
If F1y(Escenario)=>FyDownL AND Y>=FyDownM
dec Y, FyY
For F1N=F1Primero to F1Ultimo
dec F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
dec F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
dec F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
If WCISprites=10 OR WCISprites= 13 then play sound 2
If Gravedad>20 then YW1=0 : gosub WCSI
If WCaida=1 AND Gravedad<50 then inc Gravedad, 10
inc Y, Gravedad : WCaida=1
Sprite WCISprites, X, Y, WCISprites
Set sprite priority WCISprites,20
Show sprite WCISprites ; WGolpeadoVisible=WCISprites
If TikoE=1
If Contador=>4 then TikosN=2
If Contador<4 then TikosN=1
If Contador>=7 then Contador=0
If F1x(4)=>F1x(1)+2000 then TikoCDoI=2
If F1x(4)=<F1x(1)+1500 then TikoCDoI=1
Tiko(Tikos,TikosN)
Else
WWait(1)=80
Endif
Sync
CdeC()
wait WWait(1)
hide sprite WCISprites ; WGolpeadoVisible=0
For Terreno= TerrenoPrimero to TerrenoUltimo
If PlataformaE=1
For Plataforma= PlataformaPrimero to PlataformaUltimo
If Terreno=Plataforma then Sprite WCISprites, X, Y+50, WCISprites
Next Plataforma
Endif
while pixelcol(Terreno,WCISprites)=1
WCaida=0
Gravedad=10
NumMordidas=0
dec Y, 5
sprite WCISprites,X,Y,WCISprites
endwhile
Next Terreno
Inc Contador, 1
Next WCISprites
loop
Rem Wilson Salta Izquierda '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
WSI:
YW1=YW1O
WSISprite=11
NumMordidas=0
WMAire=1
WWait(2)=100
play sound 2
Sprite 18,X-50,Y,18
Set sprite priority 18,20
show sprite 18 ; WGolpeadoVisible=18
If TikoE=1
If Contador=>4 then TikosN=2
If Contador<4 then TikosN=1
If Contador>=7 then Contador=0
If F1x(4)=>F1x(1)+2000 then TikoCDoI=2
If F1x(4)=<F1x(1)+1500 then TikoCDoI=1
Tiko(Tikos,TikosN)
Else
WWait(2)=120
Endif
sync
CdeC()
Wait WWait(2)
hide sprite 18 ; WGolpeadoVisible=0
play sound 2
Inc Contador, 1
WCSI:
Do
WPared=0
WWait(1)=60
If ParedE=1
If YW1<=0 then WSISprite=12
Sprite WSISprite, X-50, Y, WSISprite
For Pared=ParedPrimera to ParedUltima
If pixelcol(Pared,WSISprite)=1
WPared=1
Endif
Next Pared
Endif
If WPared=0
If X>WxIL
If leftkey()=1
If F1x(Escenario)=<FxIL AND X<=FxDM
For F1N=F1Primero to F1Ultimo
inc F1x(F1N), FxX
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
inc F2x(F2N), FxX/F2xX(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
inc F3x(F3N), FxX+F3xX(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Else
dec X,WFxX
Endif
endif
Endif
If X<WxDL
If leftkey()=0
If Rightkey()=1
If F1x(Escenario)=>FxDL AND X>=FxIM
For F1N=F1Primero to F1Ultimo
dec F1x(F1N), FxX/2
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
dec F2x(F2N), FxX/F2xX(F2N)/2
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
dec F3x(F3N), (FxX+F3xX(F3N))/2
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Else
inc X,WFxX/2
Endif
Endif
Endif
Endif
Endif
If WSISprite=11
If F1y(Escenario)=<FyUpL AND Y<=FyUpM
inc Y, FyY
For F1N=F1Primero to F1Ultimo
inc F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
inc F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
inc F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
Endif
If WSISprite=12
If F1y(Escenario)=>FyDownL AND Y>=FyDownM
dec Y, FyY
For F1N=F1Primero to F1Ultimo
dec F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
dec F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
dec F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
Endif
If NumMordidas<>Mordidas
If inkey$()="a" OR inkey$()="A"
If WMordio=0
YW1=0
Goto WMIS
Endif
Else
WMordio=0
Endif
Endif
If YW1<=0 then WSISprite=12
Dec Y,YW1
Sprite WSISprite,X-50,Y,WSISprite
Set sprite priority WSISprite,20
Show sprite WSISprite ; WGolpeadoVisible=WSISprite
If TikoE=1
If Contador=>4 then TikosN=2
If Contador<4 then TikosN=1
If Contador>=7 then Contador=0
If F1x(4)=>F1x(1)+2000 then TikoCDoI=2
If F1x(4)=<F1x(1)+1500 then TikoCDoI=1
Tiko(Tikos,TikosN)
Else
WWait(1)=80
Endif
sync
CdeC()
wait WWait(1)
hide sprite WSISprite ; WGolpeadoVisible=0
If YW1>=-50 then dec YW1, aYW
For Terreno= TerrenoPrimero to TerrenoUltimo
If PlataformaE=1
For Plataforma= PlataformaPrimero to PlataformaUltimo
If Terreno=Plataforma then Sprite WSISprite, X, Y+25, WSISprite
Next Plataforma
Endif
If pixelcol(Terreno,WSISprite)=1
If WSISprite=12
inc Y, YW1+50
Play sound 2
Gravedad=10
WMAire=0
NumMordidas=0
Goto WI
Endif
endif
Next Terreno
Inc Contador, 1
Loop
Rem Wilson Agachado Derecha '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
WAI:
WCaida=0
Do
WWait(2)=100
If downkey()=0
Hide sprite 20
Goto WilsonIzquierda
Endif
If Gravedad>20 then YW1=0 : gosub WCSI
If WCaida=1 AND Gravedad<50 then inc Gravedad, 10
inc Y, Gravedad : WCaida=1
If F1y(Escenario)=<FyUpL AND Y<=FyUpM
inc Y, FyY
For F1N=F1Primero to F1Ultimo
inc F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
inc F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
inc F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
If F1y(Escenario)=>FyDownL AND Y>=FyDownM
dec Y, FyY
For F1N=F1Primero to F1Ultimo
dec F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
dec F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
dec F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
Sprite 20,x-55,y+30,20
Set sprite priority 20,20
Show sprite 20 ; WGolpeadoVisible=20
If TikoE=1
If Contador=>4 then TikosN=2
If Contador<4 then TikosN=1
If Contador>=7 then Contador=0
If F1x(4)=>F1x(1)+2000 then TikoCDoI=2
If F1x(4)=<F1x(1)+1500 then TikoCDoI=1
Tiko(Tikos,TikosN)
Else
WWait(2)=120
Endif
Sync
CdeC()
Wait WWait(2)
Hide sprite 20 ; WGolpeadoVisible=0
For Terreno= TerrenoPrimero to TerrenoUltimo
If PlataformaE=1
For Plataforma= PlataformaPrimero to PlataformaUltimo
If Terreno=Plataforma then Sprite 20, X, Y+50, 20
Next Plataforma
Endif
while pixelcol(Terreno,20)=1
WCaida=0
Gravedad=10
NumMordidas=0
dec Y, 10
sprite 20,X,Y,20
If PlataformaE=1
For Plataforma= PlataformaPrimero to PlataformaUltimo
If Terreno=Plataforma
If inkey$()="s" OR inkey$()="S"
YW1=0
inc y, 125
goto WCSI
Endif
Endif
Next Plataforma
Endif
endwhile
Next Terreno
Inc Contador, 1
Loop
Rem Wilson Muerde Izquierda ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
WMI:
WWait(2)=100
Sprite 18,X-75,Y,18
Set sprite priority 18,20
show sprite 18 ; WGolpeadoVisible=18
If TikoE=1
If Contador=>4 then TikosN=2
If Contador<4 then TikosN=1
If Contador>=7 then Contador=0
If F1x(4)=>F1x(1)+2000 then TikoCDoI=2
If F1x(4)=<F1x(1)+1500 then TikoCDoI=1
Tiko(Tikos,TikosN)
Else
WWait(2)=120
Endif
sync
CdeC()
Wait WWait(2)
hide sprite 18 ; WGolpeadoVisible=0
Inc Contador, 1
WMIS:
Do
WPared=0
WWait(2)=100
For WMISSprites=26 to 28
If ParedE=1
Sprite WMISSprites, X-50, Y, WMISSprites
For Pared=ParedPrimera to ParedUltima
If pixelcol(Pared,WMISSprites)=1
WPared=1
Endif
Next Pared
Endif
If WPared=0
If X>WxIL
If leftkey()=1
If F1x(Escenario)=<FxIL AND X<=FxDM
For F1N=F1Primero to F1Ultimo
inc F1x(F1N), FxX
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
inc F2x(F2N), FxX/F2xX(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
inc F3x(F3N), FxX+F3xX(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Else
dec X,WFxX
Endif
Endif
Endif
If X<WxDL
If leftkey()=0
If rightkey()=1
If F1x(Escenario)=>FxDL AND X>=FxIM
For F1N=F1Primero to F1Ultimo
dec F1x(F1N), FxX/2
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
dec F2x(F2N), FxX/F2xX(F2N)/2
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
dec F3x(F3N), (FxX+F3xX(F3N))/2
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Else
inc X,WFxX/2
Endif
Endif
Endif
Endif
Endif
If F1y(Escenario)=<FyUpL AND Y<=FyUpM
inc Y, FyY
For F1N=F1Primero to F1Ultimo
inc F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
inc F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
inc F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
If F1y(Escenario)=>FyDownL AND Y>=FyDownM
dec Y, FyY
For F1N=F1Primero to F1Ultimo
dec F1y(F1N), FyY
Sprite F1(F1N),F1x(F1N), F1y(F1N), F1(F1N)
Next F1N
If F2xE=1
For F2N=F2Primero to F2Ultimo
dec F2y(F2N), FyY/F2yY(F2N)
Sprite F2(F2N),F2x(F2N), F2y(F2N), F2(F2N)
Next F2N
Endif
If F3E=1
For F3N=F3Primero to F3Ultimo
dec F3y(F3N), FyY+F3yY(F3N)
Sprite F3(F3N),F3x(F3N), F3y(F3N), F3(F3N)
Next F3N
Endif
Endif
If WMISSprites=26 then Play sound 1
Sprite WMISSprites, X-75, Y, WMISSprites
Set sprite priority WMISSprites,20
Show sprite WMISSprites ; WMTikoVisible=WMISSprites
If TikoE=1
If Contador=>4 then TikosN=2
If Contador<4 then TikosN=1
If Contador>=7 then Contador=0
If F1x(4)=>F1x(1)+2000 then TikoCDoI=2
If F1x(4)=<F1x(1)+1500 then TikoCDoI=1
Tiko(Tikos,TikosN)
Else
WWait(2)=120
endif
Sync
CdeC()
Wait WWait(2)
Hide sprite WMISSprites ; WMTikoVisible=0
Inc Contador, 1
Next WMISSprites
inc NumMordidas, 1
WMordio=1
If WMAire=0 then goto WI
If WMAire=1 then goto WCSI
loop
Endfunction
Rem FUNCIONES''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Rem TÃko '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function Tiko(Tikos,TikosN)
For Terreno= TerrenoPrimero to TerrenoUltimo
sprhit=sprite collision(Terreno,Tikos)
if sprhit>0
while pixelcol(Terreno,Tikos(TikosN))=1
dec F1y(4), 10
sprite Tikos(TikosN),F1x(4),F1y(4),Tikos(TikosN)
endwhile
endif
Next Terreno
If TikoCDoI=1
If F1x(4)<=F1x(1)+TikoMaxX
inc F1x(4), 7
Endif
Endif
If TikoCDoI=2
If F1x(4)>=F1x(1)+TikoMinX
Dec F1x(4), 7
Endif
Endif
inc F1y(4), 10
Sprite Tikos(TikosN), F1x(4), F1y(4), Tikos(TikosN)
If TikosN=1 then Hide Sprite 30
If TikosN=2 then Hide Sprite 29
Show sprite Tikos(TikosN) ; TikoAtkVisible=1
sync
For WMTiko=23 to 28
sprhit=sprite collision(WMTiko,Tikos(TikosN))
if sprhit>0
If pixelcol(WMTiko,Tikos(TikosN))=1
If WMTikoVisible=WMTiko
TikoE=0
Hide sprite 29 ; Hide sprite 30 ; TikoAtkVisible=0
Endif
Endif
endif
Next WMTiko
For TikoAtk=1 to 22
sprhit=sprite collision(TikoAtk,Tikos(TikosN))
if sprhit>0
If pixelcol(TikoAtk,Tikos(TikosN))=1
If TikoAtkVisible=1 And WGolpeadoVisible=TikoAtk
End
Endif
Endif
endif
Next TikoAtk
Endfunction
`=======================================================
`==== PIXEL-PERFECT SPRITE COLLISION BY CLOGGY =========
function pixelcol(sp1,sp2)
`load sprite images into memory
make memblock from image 1,sprite image(sp1)
make memblock from image 2,sprite image(sp2)
`store image sizes
sw1=memblock dword(1,0)
sh1=memblock dword(1,4)
sw2=memblock dword(2,0)
sh2=memblock dword(2,4)
`store image positions
x1=sprite x(sp1)-sprite offset x(sp1)
y1=sprite y(sp1)-sprite offset y(sp1)
x2=sprite x(sp2)-sprite offset x(sp2)
y2=sprite y(sp2)-sprite offset y(sp2)
`calculate collision rectangle
rx1=getmax(x1,x2)
Global ry1
ry1=getmax(y1,y2)
rx2=getmin(x1+sw1-1,x2+sw2-1)
ry2=getmin(y1+sh1-1,y2+sh2-1)
`calculate area of first sprite that has overlapped second
sx1=rx1-x1
sy1=ry1-y1
ex1=rx2-x1
ey1=ry2-y1
`calculate area of second sprite that has overlapped first
sx2=rx1-x2
sy2=ry1-y2
ex2=rx2-x2
ey2=ry2-y2
`check through both sprites to see if any pixels collide
for row=0 to ey1-sy1
for col=0 to ex1-sx1
` bit1=memblock dword(1,12+((row+sy1)*(sw1*4))+((col+sx1)*4))
` bit2=memblock dword(2,12+((row+sy2)*(sw2*4))+((col+sx2)*4))
bit1=memblock byte(1,12+((row+sy1)*(sw1*4))+((col+sx1)*4)+3)
bit2=memblock byte(2,12+((row+sy2)*(sw2*4))+((col+sx2)*4)+3)
` AND bits together to see if a collision has occured
if bit1>0 and bit2>0
`Collision has occured
collision=1
`Clean up memblocks and return
delete memblock 1
delete memblock 2
exitfunction 1
endif
next col
next row
`no collision clean up memblocks and return
delete memblock 1
delete memblock 2
endfunction 0
function getmax(v1,v2)
`Calculate the larger of 2 numbers
if v1>v2
exitfunction v1
else
exitfunction v2
endif
endfunction v1
function getmin(v1,v2)
`calculate the smaller of 2 numbers
if v1<v2
exitfunction v1
else
exitfunction v2
endif
endfunction v1
Rem Cuadro de colision ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function CdeC()
If F1x(1)>-1850 And F1x(1)<1
For WWaitN=1 to 2
dec WWait(WWaitN), C1Wait
Next WWaitN
Endif
If F1x(1)>-3900 And F1x(1)=<-1850
For WWaitN=1 to 2
dec WWait(WWaitN), C2Wait
Next
Endif
Endfunction
That is the code that contain all the main functions, AND the first lvl.And thats why its soooooooo big.
And, this is the code that contains the second lvl, which only uses the main function, as simply as that. Look at it:
Jungla1:
Rem sprites reset''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
For SpriteHider1=1 to 28
Hide sprite SpriteHider1
Next SpriteHider1
For SpriteHider2=1000 to 1004
Hide sprite SpriteHider2
Next SpriteHider2
PuertaVisible=0
For MusicStoper=1 to 1
Stop music MusicStoper
Next MusicStoper
For SoundStoper=1 to 2
Stop sound SoundStoper
Next SoundStoper
Color backdrop rgb(30,75,30)
sync
Rem Escenario''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Load image "Media\Escenarios\Jungla\WI_Jungla1_Terreno1.png" ,1005
Sprite 1005, 0, 640, 1005
Show sprite 1005
Set sprite priority 1005, 1
Load image "Media\Escenarios\Jungla\WI_Jungla1_Terreno2.png" ,1006
Sprite 1006, 2480, 472, 1006
Show sprite 1006
Set sprite priority 1006, 1
Load image "Media\Escenarios\Jungla\WI_Jungla1_Plataforma1.png" ,1007
Sprite 1007, 4532, 355,1007
Show sprite 1007
Set sprite priority 1007,1
Load image "Media\Escenarios\Jungla\WI_Jungla1_Plataforma2.png" ,1008
Sprite 1008, 4322, 208, 1008
Show sprite 1008
Set sprite priority 1008,1
Load image "Media\Escenarios\Jungla\WI_Jungla1_Pared1.png" ,1009
Sprite 1009, 2545, 511, 1009
Show sprite 1009
Set sprite priority 1009, 1
Load image "Media\Escenarios\Jungla\WI_Jungla1.png" ,1010
Sprite 1010, 0, -102, 1010
Show sprite 1010
Set sprite priority 1010, 3
Load image "Media\Escenarios\Jungla\WI_Jungla1_Lianas.png" ,1011
Sprite 1011, 1035, -100, 1011
Show sprite 1011
Set sprite priority 1011, 21
Load image "Media\Escenarios\Jungla\WI_Jungla1_Fondo1.png" ,1012
Sprite 1012, 0, -100, 1012
Show sprite 1012
Set sprite priority 1012, 2
Rem Musica'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Load music "Media\Musica\Jungla\097 Shipwreck at Keyhaul Key.mp3" ,2
Loop music 2
Set music volume 2, 0
Loop music 1
Set music volume 1, 0
Rem Sonidos''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set sound volume 1, 80
Set sound volume 2, 90
Rem Data'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
F2xE=1
F2Primero=1
F2Ultimo=1
F2x=X
Fy=0
X=MonitorX/2/2/2.5
Y=560
A=Y
AW=150
YW1=50
YW1O=YW1
YW2O=YW2
aYW=10
FxX=25
F2xX=4
WFxX=31.7
FxDL=MonitorX*-4+175+50
FxIL=-25
WxDL=775
WxIL=50
F2x=-25
F1Primero=1
F1Ultimo=6
FxIM=MonitorX/2
FxDM=MonitorX/2
Mordidas=1
WSpritePrimero=1
WSpriteUltimo=28
TerrenoPrimero=1005
TerrenoUltimo=1008
Contador=0
TikosN=1
TikoCDoI=1
TikoE=0
WMTikoVisible=0
WGolpeadoVisible=0
WColaWait=100
WDuermeWait=60
WCorreWait=60
WSaltaWait1=100
WSaltaWait2=60
WAgachaWait=100
WMuerdeWait=100
TikoMaxX=2000
TikoMinX=1500
C1Wait=7
C2Wait=13
PlataformaE=1
PlataformaPrimero=1007
PlataformaUltimo=1008
ParedE=1
ParedPrimera=1009
ParedUltima=1009
F3E=1
F3Primero=1
F3Ultimo=1
Escenario=6
FyUpL=-1
FyUpM=MonitorY/2-50
FyDownL=-75
FyDownM=MonitorY/2+50
FyY=25
For WilsonSprites= 1 to 28
Sprite WilsonSprites,0,0,WilsonSprites
Hide sprite WilsonSprites
Set sprite priority WilsonSprites,20
Next WilsonSprites
Dim F1(10)
F1(1)=1005
F1(2)=1006
F1(3)=1007
F1(4)=1008
F1(5)=1009
F1(6)=1010
Dim F1x(10)
F1x(1)=0
F1x(2)=2480
F1x(3)=4499
F1x(4)=4310
F1x(5)=2545
F1x(6)=0
Dim F1y(10)
F1y(1)=640
F1y(2)=474
F1y(3)=372
F1y(4)=218
F1y(5)=513
F1y(6)=-100
Dim F2(10)
F2(1)=1012
Dim F2x(10)
F2x(1)=0
Dim F2y(10)
F2y(1)=-100
Dim F2xX(10)
F2xX(1)=2
Dim F3(10)
F3(1)=1011
Dim F3x(10)
F3x(1)=1035
Dim F3y(10)
F3y(1)=-100
Dim F3xX(10)
F3xX(1)=10
Dim Tikos(10)
Tikos(1)=29
Tikos(2)=30
Dim WWait(10)
WWait(1)=60
WWait(2)=100
sync
Wilson()
I hope i explained myself well, its not complicated, in fact, i found the goto commands rly usefull for all my game, and the "spaghetti" problem does not happen if ur careful with it.