-- Inicialització. Com pots vore, està fora del init. Es pràcticament el mateix, però -- fora del init es mes guarro (pero ocupa menys caràcters, per això ho faig així en este codi) -- Fiquem el mode 0 mode(0) -- Açò es un array per a mantindre totes les estrelles stars={} -- Açò es el caràcter que representa a la estrella segons lo lluny o prop que està de la pantalla -- Per exemple al fondo es "." i prop serà "*" o algo així, no recorde cada caracter characters={143,143,129,144,144} -- Aquesta funció inicialitza (o reinicialitza) la estrella "i" del array en una posició aleatòria function init_star(i) stars[i]={ -- Ficat que cada membre de la tabla "stars" no es mes que una tabla amb una variable x, y i z x = 40-rnd(80), y = 15-rnd(30), z = rnd(5) } end -- Inicialitze, 50 estrelles for i=0,50 do init_star(i) end -- Açò es el bucle principal function update() -- Borrar pantalla cls() -- Per a cada una de les 50 estrelles... for i=0,50 do -- acostem la estrella a la pantalla (z=0 en la propia pantalla, z>0 cap a dins de la pantalla) stars[i].z = stars[i].z - 0.05 -- Transformem les coordenades 3d en 2d local scr_x = 40 + stars[i].x / stars[i].z local scr_y = 15 + stars[i].y / stars[i].z -- Si la estrella està fora de la pantalla per alguna vora -- o ja ha passat el umbral de la pantalla, se crea una nova if scr_x<0 or scr_y<0 or scr_x>79 or scr_y>29 or stars[i].z<=0 then init_star(i) end -- Pintar la estrella print( chr(characters[flr(stars[i].z)+1]), scr_x, scr_y) end end