From fe9f4fed9c7a8a9d73b326c6617efea7fae3537f Mon Sep 17 00:00:00 2001 From: Raimon Zamora Date: Fri, 17 Dec 2021 16:40:09 +0100 Subject: [PATCH] Afegida la demo del efecte matrix i el tweetcart equivalent --- demos/matrix.lua | 53 +++++++++++++++++++++++++++++++++++++++++++ tweetcarts/matrix.lua | 11 +++++++++ 2 files changed, 64 insertions(+) create mode 100644 demos/matrix.lua create mode 100644 tweetcarts/matrix.lua diff --git a/demos/matrix.lua b/demos/matrix.lua new file mode 100644 index 0000000..4ea815e --- /dev/null +++ b/demos/matrix.lua @@ -0,0 +1,53 @@ +--[[ +=============================== + MATRIX CODE DEMO + by JailDoctor +=============================== +--]] + +function init() + setmode(1) -- fiquem el mode multicolor de 40x30 caracters + color(0,0) -- tinta i fondo a negre + cls() -- borrem pantalla + + -- La tabla 'col' conté, per a cada columna de la pantalla: la coordenada 'y' actual, la llargaria 's' i la espera 'w' + col = {} + for i=0,39 do + col[i] = { + y=rnd(30), -- la coordenada y valdrà entre 0 i 29, ningún misteri... + s=rnd(5)+2, -- la 's' valdrà entre 2 i 6. S'usarà tant per a definir la llargaria de la estela com per a especificar la velocitat + w=1 -- 'w' es un contador de espera: Fiquem 'w' a un valor, i a cada cicle se resta 1. Quan arribe a 0 updatem la columna i se reseteja 'w' al valor anterior. + } + end + + -- Omplim la tabla 'ma' amb els caracters que volem usar + ma = {} + for i=176,191 do ma[1+#ma] = i end + for i=97,122 do ma[1+#ma] = i end + + -- Omplim la pantalla de caracters aleatoris (dins de la selecció que havem deixa a la tabla 'ma'). + -- No es veuen perque havem ficat el color de tinta i fondo a negre. + for i=0,1199 do poke(i,ma[rnd(#ma)+1]) end +end + +function update() + for i=0,39 do + col[i].w=col[i].w-1 + if col[i].w == 0 then + col[i].w = col[i].s + col[i].y=col[i].y+1 + if (col[i].y >= 30) then col[i].y = 0 end + local pos = 1200+i+col[i].y*40 + poke(pos,15) pos=dec(pos) + poke(pos,14) pos=dec(pos) + for i=0,col[i].s do poke(pos,10) pos=dec(pos) end + for i=0,col[i].s do poke(pos,2) pos=dec(pos) end + for i=0,max(1,col[i].s-3) do poke(pos,8) pos=dec(pos) end + poke(pos,0) + end + end +end + +-- Aquesta funció resta 40 a la adreça (per a pujar una linea). Si detecta que se'n va fora per dalt (menys de 1200), suma 1200 per a que aparega per baix + +function dec(value) return value-40 < 1200 and value+1160 or value-40 end diff --git a/tweetcarts/matrix.lua b/tweetcarts/matrix.lua new file mode 100644 index 0000000..636b459 --- /dev/null +++ b/tweetcarts/matrix.lua @@ -0,0 +1,11 @@ +q=1200 +h={}for i=0,q do poke(i,rnd(99))end +function t(a)poke(q+p,a)p=(p-40)%q end +function update()srand(1)for i=0,39 do +h[i]=(h[i] or rnd(30))+(1/(rnd(5)+2))p=i+(flr(h[i])%30)*40 +t(15)t(14) +for j=0,5 do t(10)end +for j=0,5 do t(2)end +t(8)t(0) +end +end \ No newline at end of file