demos uploaded
This commit is contained in:
@@ -1 +1,226 @@
|
||||
print("Maziacs!")
|
||||
SIZE = 64
|
||||
mapa = {}
|
||||
|
||||
hero = {
|
||||
x=4,
|
||||
y=3
|
||||
}
|
||||
sprites = {
|
||||
{color=0x70, data={32,97,101,32,98,102,99,100,103}}
|
||||
}
|
||||
function init()
|
||||
mode(3)
|
||||
setchar(97,0,60,126,123,126,60,24,126)
|
||||
setchar(98,126,90,58,25,63,60,36,34)
|
||||
setchar(99,0,0,0,0,0,1,0,0)
|
||||
setchar(100,33,32,32,64,128,0,192,0)
|
||||
setchar(101,0,0,0,0,0,0,2,4)
|
||||
setchar(102,8,16,32,64,128,0,0,0)
|
||||
setchar(103,0,128,64,64,64,64,112,0)
|
||||
|
||||
--mapa = newsurf((SIZE+1)*2, (SIZE+1)*2)
|
||||
for i=0,(SIZE*SIZE)-1 do
|
||||
mapa[i] = 1
|
||||
end
|
||||
|
||||
local startx = 1+flr(rnd((SIZE/2)-2))*2
|
||||
local starty = 1+flr(rnd((SIZE/2)-2))*2
|
||||
--pset(startx-1, starty-1, 7)
|
||||
--pset(startx-1, starty, 7)
|
||||
--pset(startx-1, starty+1, 7)
|
||||
--pset(startx+1, starty-1, 7)
|
||||
--pset(startx+1, starty, 7)
|
||||
--pset(startx+1, starty+1, 7)
|
||||
--pset(startx, starty-1, 7)
|
||||
--pset(startx, starty+1, 7)
|
||||
--local rando = flr(rnd(2))
|
||||
currentx,currenty=startx,starty--1
|
||||
--if rando == 0 then
|
||||
-- pset(startx+2, currenty, 7)
|
||||
-- pset(startx+3, currenty, 7)
|
||||
-- currentx=startx+3
|
||||
--elseif rando == 1 then
|
||||
-- pset(startx-2, currenty, 7)
|
||||
-- pset(startx-3, currenty, 7)
|
||||
-- currentx=startx-3
|
||||
--end
|
||||
|
||||
create()
|
||||
tomap()
|
||||
--settrans(255)
|
||||
--poke(32,65)
|
||||
end
|
||||
|
||||
mazedone = false
|
||||
longest_path = 1
|
||||
current_path = 1
|
||||
lx = 0
|
||||
ly = 0
|
||||
|
||||
function pget(x,y)
|
||||
return mapa[(x%SIZE)+(y%SIZE)*65]
|
||||
end
|
||||
|
||||
function pset(x,y,val)
|
||||
mapa[(x%SIZE)+(y%SIZE)*65] = val
|
||||
end
|
||||
|
||||
function create()
|
||||
local LIMIT = SIZE-2
|
||||
while mazedone == false do
|
||||
local val = pget(currentx, currenty)
|
||||
local paths = {}
|
||||
local numpaths = 0
|
||||
if (currentx > 2) and (pget(currentx-2, currenty)==1) then
|
||||
paths[numpaths] = 0
|
||||
numpaths = numpaths + 1
|
||||
end
|
||||
if (currentx < LIMIT) and (pget(currentx+2, currenty)==1) then
|
||||
paths[numpaths] = 1
|
||||
numpaths = numpaths + 1
|
||||
end
|
||||
if (currenty > 2) and (pget(currentx, currenty-2)==1) then
|
||||
paths[numpaths] = 2
|
||||
numpaths = numpaths + 1
|
||||
end
|
||||
if (currenty < LIMIT) and (pget(currentx, currenty+2)==1) then
|
||||
paths[numpaths] = 3
|
||||
numpaths = numpaths + 1
|
||||
end
|
||||
if numpaths > 0 then
|
||||
current_path = current_path + 1
|
||||
local option = paths[flr(rnd(numpaths))]
|
||||
if option == 0 then
|
||||
pset(currentx-1, currenty, 7)
|
||||
currentx = (currentx - 2)%SIZE
|
||||
pset(currentx, currenty, 7)
|
||||
elseif option == 1 then
|
||||
pset(currentx+1, currenty, 7)
|
||||
currentx = (currentx + 2)%SIZE
|
||||
pset(currentx, currenty, 7)
|
||||
elseif option == 2 then
|
||||
pset(currentx, currenty-1, 7)
|
||||
currenty = (currenty - 2)%SIZE
|
||||
pset(currentx, currenty, 7)
|
||||
elseif option == 3 then
|
||||
pset(currentx, currenty+1, 7)
|
||||
currenty = (currenty + 2)%SIZE
|
||||
pset(currentx, currenty, 7)
|
||||
end
|
||||
else
|
||||
if longest_path < current_path then
|
||||
longest_path = current_path
|
||||
lx = currentx
|
||||
ly = currenty
|
||||
end
|
||||
current_path = current_path - 1
|
||||
pset(currentx, currenty, 8)
|
||||
if (currentx > 2) and (pget(currentx-1, currenty)==7) and (pget(currentx-2, currenty)==7) then
|
||||
pset(currentx-1, currenty, 8)
|
||||
currentx = (currentx-2)%SIZE
|
||||
elseif (currentx < LIMIT) and (pget(currentx+1, currenty)==7) and (pget(currentx+2, currenty)==7) then
|
||||
pset(currentx+1, currenty, 8)
|
||||
currentx = (currentx+2)%SIZE
|
||||
elseif (currenty > 2) and (pget(currentx, currenty-1)==7) and (pget(currentx, currenty-2)==7) then
|
||||
pset(currentx, currenty-1, 8)
|
||||
currenty = (currenty-2)%SIZE
|
||||
elseif (currenty < LIMIT) and (pget(currentx, currenty+1)==7) and (pget(currentx, currenty+2)==7) then
|
||||
pset(currentx, currenty+1, 8)
|
||||
currenty = (currenty+2)%SIZE
|
||||
else
|
||||
while pget(lx, ly-1) ~= 1 do ly = ly - 1 end
|
||||
pset(lx, ly, 9)
|
||||
mazedone = true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function mset(x, y, val)
|
||||
local addr = x+y*32
|
||||
poke(addr, 32) addr=addr+1
|
||||
poke(addr, 32) addr=addr+1
|
||||
poke(addr, 32) addr=addr+30
|
||||
poke(addr, 32) addr=addr+1
|
||||
poke(addr, 32) addr=addr+1
|
||||
poke(addr, 32) addr=addr+30
|
||||
poke(addr, 32) addr=addr+1
|
||||
poke(addr, 32) addr=addr+1
|
||||
poke(addr, 32) addr=0x300+x+y*32
|
||||
poke(addr, val) addr=addr+1
|
||||
poke(addr, val) addr=addr+1
|
||||
poke(addr, val) addr=addr+30
|
||||
poke(addr, val) addr=addr+1
|
||||
poke(addr, val) addr=addr+1
|
||||
poke(addr, val) addr=addr+30
|
||||
poke(addr, val) addr=addr+1
|
||||
poke(addr, val) addr=addr+1
|
||||
poke(addr, val)
|
||||
end
|
||||
|
||||
function mset2(x, y, val)
|
||||
poke(x+y*32, 32)
|
||||
poke(0x300+x+y*32, val)
|
||||
end
|
||||
|
||||
function draw_sprite(x,y,num)
|
||||
local addr = (x*3)+(y*3)*32
|
||||
poke(addr, sprites[num].data[1]) addr=addr+1
|
||||
poke(addr, sprites[num].data[2]) addr=addr+1
|
||||
poke(addr, sprites[num].data[3]) addr=addr+30
|
||||
poke(addr, sprites[num].data[4]) addr=addr+1
|
||||
poke(addr, sprites[num].data[5]) addr=addr+1
|
||||
poke(addr, sprites[num].data[6]) addr=addr+30
|
||||
poke(addr, sprites[num].data[7]) addr=addr+1
|
||||
poke(addr, sprites[num].data[8]) addr=addr+1
|
||||
poke(addr, sprites[num].data[9]) addr=0x300+(x*3)+(y*3)*32
|
||||
poke(addr, sprites[num].color) addr=addr+1
|
||||
poke(addr, sprites[num].color) addr=addr+1
|
||||
poke(addr, sprites[num].color) addr=addr+30
|
||||
poke(addr, sprites[num].color) addr=addr+1
|
||||
poke(addr, sprites[num].color) addr=addr+1
|
||||
poke(addr, sprites[num].color) addr=addr+30
|
||||
poke(addr, sprites[num].color) addr=addr+1
|
||||
poke(addr, sprites[num].color) addr=addr+1
|
||||
poke(addr, sprites[num].color)
|
||||
end
|
||||
|
||||
camx = 0
|
||||
camy = 0
|
||||
|
||||
function tomap()
|
||||
for y=0,7 do
|
||||
for x=0,9 do
|
||||
local val = 0x77
|
||||
if pget(x+camx,y+camy) == 1 then val = 0x11 end
|
||||
mset(x*3, y*3, val)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
snd=100
|
||||
function update()
|
||||
if cnt() >= 6 then
|
||||
rst()
|
||||
if btn(KEY_LEFT) and pget(hero.x-1,hero.y) ~= 1 then
|
||||
hero.x = hero.x-1
|
||||
sound(snd,5) if snd==100 then snd=120 else snd=100 end
|
||||
end
|
||||
if btn(KEY_RIGHT) and pget(hero.x+1,hero.y) ~= 1 then
|
||||
hero.x = hero.x+1
|
||||
sound(snd,5) if snd==100 then snd=120 else snd=100 end
|
||||
end
|
||||
if btn(KEY_UP) and pget(hero.x,hero.y-1) ~= 1 then
|
||||
hero.y = hero.y-1
|
||||
sound(snd,5) if snd==100 then snd=120 else snd=100 end
|
||||
end
|
||||
if btn(KEY_DOWN) and pget(hero.x,hero.y+1) ~= 1 then
|
||||
hero.y = hero.y+1
|
||||
sound(snd,5) if snd==100 then snd=120 else snd=100 end
|
||||
end
|
||||
camx = hero.x-4
|
||||
camy = hero.y-3
|
||||
tomap()
|
||||
draw_sprite(4,3,1)
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user