-- title: Top Hop
-- author: Mega Sparkmaster
-- desc: A Tiny Challenge
-- script: lua
level=0
start_y=56
mode="title"
function solid(x,y)
return solids[mget((x)/8,(y)/8)]
end
function spring(x,y)
return springs[mget((x)/8,(y)/8)]
end
function init()
solids={
[1]=true,
[2]=true,
[3]=true,
[5]=true,
[6]=true,
[7]=true,
[8]=true,
[11]=true,
[12]=true,
[14]=true,
[15]=true,
[16]=true,
[17]=true,
[18]=true
}
springs={
[3]=true,
[7]=true,
[8]=true,
[11]=true,
[14]=true,
[18]=true
}
map_off=level*30
p={
x=8+map_off*8,
y=start_y,
vx=0,
vy=0,
s=0.35,
sprite=19
}
f=0
mc=0
sp=3
end
init()
music(1,-1,-1,false)
function TIC()
cls()
if mode=="title" then
map(30,17)
print("A Tiny Challenge",10*8,7*8-3,8)
print("PRESS A/Z TO START",9*8,12*8,12)
print("Mega Sparkmaster",11*8,16*8,14,false,1,true)
if btnp(4) then
mode="game"
sfx(5)
music(0)
end
elseif mode=="ending" then
map(0,17)
print("CONGRATULATIONS!",10*8+4,2*8,4)
print("".."You have finally".."\n".."reached the exit...",10*8+4,4*8,12)
print("Thanks for playing!",11*8+4,7*8,4,false,1,true)
print("Press A/Z to return",11*8+4,8*8,13,false,1,true)
if btnp(4) then
level=0
start_y=56
init()
mode="title"
music(1,-1,-1,false)
end
elseif mode=="pause" then
map(map_off,0)
spr(p.sprite+f,p.x-map_off*8,p.y,0)
print("AREA "..level+1,10,10,12,false,1,true)
print("SPRINGS: "..sp,24*8+2,10,13,false,1,true)
print("PAUSE",13*8+2,8*8,12)
if btnp(4) then
mode="game"
sfx(4)
end
elseif mode=="game" then
p.s=0.35+level/15
map_off=level*30
if p.vy==0 then
p.vx=p.s
else
if jumping==true then
p.vx=p.s*1.75
else
p.vx=0
end
end
if solid(p.x+p.vx,p.y+p.vy) or solid(p.x+7+p.vx,p.y+p.vy) or solid(p.x+p.vx,p.y+7+p.vy) or solid(p.x+7+p.vx,p.y+7+p.vy) then
p.vx=0
end
if solid(p.x,p.y+8+p.vy) or solid(p.x+7,p.y+8+p.vy) then
p.vy=0
jumping=false
else
p.vy=p.vy+0.2
end
if p.vy==0 and mget(p.x/8,p.y/8+1)==2 then
p.vy=-3.5
jumping=true
sfx(0)
end
if p.vy<0 and (solid(p.x+p.vx,p.y+p.vy) or solid(p.x+7+p.vx,p.y+p.vy)) then
p.vy=0
end
if mget(p.x/8,p.y/8+1)==9 then
init()
sync(4)
sfx(2)
end
if mget(p.x/8,p.y/8)==13 then
sync(4)
if level==7 then
mode="ending"
music()
sfx(7)
else
p.x=p.x+16
start_y=p.y
level=level+1
sp=3
sfx(3)
end
end
p.x=p.x+p.vx
p.y=p.y+p.vy
mx,my,mp=mouse()
if mp then
if mc==0 then
if spring(mx+map_off*8,my) and sp>0 then
mset(mx/8+map_off,my/8,2)
sp=sp-1
sfx(1)
elseif mget(mx/8+map_off,my/8)==2 and (p.vy>0 or jumping==false) then
mset(mx/8+map_off,my/8,14)
sp=sp+1
sfx(1)
end
end
mc=mc+1
else
mc=0
end
if btnp(4) then
mode="pause"
sfx(4)
end
if sp>=3 then sp=3 end
if mc>=1 then mc=1 end
map(map_off,0)
rectb(math.floor(mx/8)*8,math.floor(my/8)*8,8,8,12)
spr(p.sprite+f,p.x-map_off*8,p.y,0)
print("AREA "..level+1,10,10,12,false,1,true)
print("SPRINGS: "..sp,24*8+2,10,13,false,1,true)
if p.vy==0 then
p.sprite=19
f=(f+p.s/5)%4
elseif p.vy>0 then
p.sprite=41
f=0
elseif p.vy<0 then
p.sprite=42
f=0
end
end
end
--
-- 001:4444444444434443333333333332333222222222222322233333333333343334
-- 002:eedccdeee123321e11655611172332711723327111655611e123321eeedccdee
-- 003:7777777766566656566756677772777222222222222322233333333333343334
-- 004:f000000f0f0000f000f00f00000ff000000ff00000f00f000f0000f0f000000f
-- 005:4444443344434432333333223332332122222211222322123333332233343323
-- 006:3344444433434443223333332232333211222222112322232233333322343334
-- 007:7777777f66566657566756677772777122222211222322123333332233343323
-- 008:f777777776566656766756677772777211222222112322232233333322343334
-- 009:bbbbbbbbbbaabbaaaaaaaaaaaa99aa999999999999aa99aaaaaaaaaaaabbaabb
-- 010:f000000f0faa00aaaaaaaaaaaa99aa999999999999aa99aaaaaaaaaaaabbaabb
-- 011:eddccddeeeeddeeeefdccdfededccdeddedccdedefdccdfeeeeddeeeeddccdde
-- 012:4444444444434443333333333332333277727772566756676656665677777777
-- 013:76555567665cc566676cc676665cc56676555567665cc566676cc676665cc566
-- 014:ee0ee0eeef0000fe00f00f00e00ff00ee00ff00e00f00f00ef0000feee0ee0ee
-- 015:444444334443443233333322333233217772777156675667665666577777777f
-- 016:33444444334344432233333322323332777277727667566776566656f7777777
-- 017:3344443333434432223333222232332111222211112322122233332222343323
-- 018:f777777f76566657766756677772777111222211112322122233332222343323
-- 019:0002220000223100002333000005600000056000000390000009900000022000
-- 020:0000000000022200002231000023330000056000003662000089900001102200
-- 021:0002220000223100002333000006500000065000000930000009900000022000
-- 022:0000000000022200002231000023330000065000000963000099800002201100
-- 023:0e000e000d000d000d000d000c000c000c000c000d000d000d000d000e000e00
-- 024:f00000110f00222200f3330000340c0002400c0002300d0013000d0012000e00
-- 025:12000e0023000d0023000d0034000c0034000c0023000d0023000d0012000e00
-- 026:0e0002100d0003200d0003200c0004300c0004300d0003200d0003200e000210
-- 027:1000000f222000f003330f000c0430000c0042000d0032000d0003100e000210
-- 028:12233221233443320d000d000c000c000c000c000d000d000d000d000e000e00
-- 029:f00011120f00222300f02ccc000f2ccc000f2dcc00f02ddd0f002dddf0002223
-- 030:2233332233444433ccccccccc666666ccc6666ccddd77ddddddddddd33444433
-- 031:2111000f322200f0ccc20f00ccc2f000ccd2f000ddd20f00ddd200f03222000f
-- 032:0000000011111fff22212fef33323ede44434dcd33323ede22212fef11111fff
-- 033:0ffedeff0fedcdef0ffedeff0123432101123211012343210123432101234321
-- 034:0ffedeff1fedcdef1ffedeff3342321044331210332221002221100011100000
-- 035:0ffedeff0fedcdef0ffedeff0012324300121334000122230000112200000011
-- 036:11100000222110003322210044331210334232101ffedeff0fedcdef0ffedeff
-- 037:00000011000011220001222300121334001232430ffedeff0fedcdef0ffedeff
-- 038:11111fff22212fef33323ede44434dcd33323ede2ffedeef1fedcdef0ffedeff
-- 039:11111fff22212fef33323ede44434dcd33323ede22212fef11111fff00000000
-- 040:0ffedeffffedcdeffefedeffede34321dcd23211ede34321fef34321fff34321
-- 041:0002220000223100002333000005600000566720003998000000910000002000
-- 042:0002220000223100002333200055670003066000009900000099000002200000
--
--
--
-- 000:00000000ffffffff00000000ffffffff
-- 001:0123456789abcdeffedcba9876543210
-- 002:0123456789abcdef0123456789abcdef
-- 004:00000000000000ff00000000000000ff
-- 005:000000000000ffff000000000000ffff
-- 006:02468acfca864269bdeeffffeedb9630
--
--
-- 000:4000201000202030404050506060707080809090a0a0b0b0c0c0d0d0e0e0f0f0b000b010b020b030c040c050c060d070d080d090e0a0e0b0e0c0f0d0305000000000
-- 001:917061f033007300b300f300f300f300f300f300f300f300f300f300f300f300f300f300f300f300f300f300f300f300f300f300f300f300f300f300489000000000
-- 002:93207350538053b0630063007300730083008300a310a320b330b340c300d300d300d300e300e300e300e300e300e300f300f300f300f300f300f300502000000000
-- 003:6400441024203430444054506460747084809470a460b450c440d430e420f410b400b410b420b430c440c450c460d470d480d490e4a0e4b0e4c0f4d0300000000000
-- 004:20007080b0f0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000400000000000
-- 005:e320b36073b043f0f300f300430043b053b053a063a06390739073808380837093709360a360a350b350b340c340c330d330d320e320e310f310f300400000000000
-- 006:e300e300e300d300d300d300c300c300c300b300b300b300b300b300b300b300b300b300b300b300b300c300c300c300d300d300d300e300e300e300540000000000
-- 007:30006000204060402070607030b070b040008000500090006000a0007000b0008000c0009000d000a000e000b000f000c000f000d000f000e000f000374000000800
-- 008:340084002530953020708070353075304470647055b055b06070407075b035b084e024e09570257090b030b085e0c5e0f400f400f400f400f400f400360000000000
-- 009:06000600160016002600260036003600460046005600560066006600760076008600860096009600a600a600b600b600c600c600d600d600e600f600260000000000
-- 010:831073107320832083308330934093409350a350a360a360b370b370b370c370c370c370c360c360d350d350d340d340e330e330e320e320e310f310470000000000
--
--
-- 000:40006a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-- 001:400086000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-- 002:400094000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-- 003:9000a8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
--
--
-- 000:040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-- 001:2c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
--
--
-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57
--