Play game
bOXed's itch.io pageCompressed Bytes used
1024
Source Code (OPTIONAL)
a={5}b=rnd(2)\1+1c=0d=0
e=0
f=0
g=0h=0
i=0
pal(1,129,1)
pal(2,130,1)j={{}}k={{}}
for l=0,8 do
add(j[1],0)add(k[1],{l})
end
for l=0,11 do
m=rnd(min(#k,3))\1
n=o
while not n do
m+=1
n=select(rnd(#k[m])\1+1,unpack(k[m]))
end
del(k[m],n)r=j[1]
for l=1,#n-1 do
r=r[n[l]+1]
end
r[n[#n]+1]={0,0,0,0,0,0,0,0,0}
if(m==#k) add(k,{})
for l=0,8 do
add(k[m+1],{unpack(n),l})
end
end
function _update60()
if#a>0 then
if(btnp(0) and a[#a]>1) a[#a]-=1
if(btnp(1) and a[#a]<9) a[#a]+=1
if(btnp(2) and a[#a]>3) a[#a]-=3
if(btnp(3) and a[#a]<7) a[#a]+=3
s={j,j[1]}
if btnp(4) then
r=j[1]
for u in all(a) do
if type(r[u])[1]=='t'then
r=r[u]
add(s,r)
else
if r[u]==0 then
r[u]=b
while#a>0 do
v=0
w='123456789147258369159357'
for l=1,8 do
x,y,z=s[#s][tonum(w[l*3-2])],s[#s][tonum(w[l*3-1])],s[#s][tonum(w[l*3])]
if x==y and y==z and type(x)[1]=='n'and x>0 then
s[#s-1][a[#s-2] or 1]=x
v=o
end
end
if(v) break
deli(a,#a)
deli(s,#s)
c=ba
e=bb
g=bc
i=0
h=max(0,#a-1)
d=0
f=0
for l,u in ipairs(a) do
if l!=#a then
d+=be(((u-1)%3)*108,l)
f+=be(((u-1)\3)*108,l)
end
end
end
if(#a>0) b=b%2+1
end
r=o
break
end
end
if r then
add(a,5)
c=ba
e=bb
g=bc
i=0
h=max(0,#a-1)
d=0
f=0
for l,u in ipairs(a) do
if l!=#a then
d+=be(((u-1)%3)*108,l)
f+=be(((u-1)\3)*108,l)
end
end
end
end
if btnp(5) and#a>1 then
deli(a,#a)
c=ba
e=bb
g=bc
i=0
h=max(0,#a-1)
d=0
f=0
for l,u in ipairs(a) do
if l!=#a then
d+=be(((u-1)%3)*108,l)
f+=be(((u-1)\3)*108,l)
end
end
end
end
i=min(1,i+1/8)
bf=(((3^(g-h))^i)-1)/(3^(g-h)-1)
ba=c+(d-c)*bf
bb=e+(f-e)*bf
bc=g+(h-g)*i
bg=3^bc
camera(ba*bg-9,bb*bg-9)
cls(b)
if#a>0 then
x=0
y=0
for l,u in ipairs(a) do
x+=be((u-1)%3*108,l-bc)
y+=be((u-1)\3*108,l-bc)
end
rectfill(x,y,x+be(108*bg,#a),y+be(108*bg,#a),3)
end
bh(j,0,0,-bc)
end
function bh(j,bi,bj,m)
local bk=be(108,m)
for l=0,#j==1 and 0 or 8 do
x=l%3
y=l\3
rect(bi+bk*x,bj+bk*y,bi+bk*x+bk,bj+bk*y+bk,7)
bl=j[l+1]
if bl==1 and m<2.1 then
line(bi+bk*(x+0.3)+1,bj+bk*(y+0.3)+1,bi+bk*(x+0.7),bj+bk*(y+0.7),12)
line(bi+bk*(x+0.3)+1,bj+bk*(y+0.7),bi+bk*(x+0.7),bj+bk*(y+0.3)+1)
elseif bl==2 and m<2.1 then
oval(bi+bk*(x+0.3)+1,bj+bk*(y+0.3)+1,bi+bk*(x+0.7),bj+bk*(y+0.7),14)
elseif type(bl)[1]=='t'then
bh(bl,bi+bk*x,bj+bk*y,m+1)
end
end
end
function be(x,y)
return y>0 and x/(3^y) or x*(3^-y)
end
Leave a comment
Log in with itch.io to leave a comment.
Comments
Never played recursive tic-tac-toe before - but this is very clever.
Really slick gameplay (esp. with the 'tween'ing zoom movement)
Alas, had to play with myself (...and STILL lost! ๐ ๐)
Nice one!