- afegit starfield amb comentaris
This commit is contained in:
49
demos/starfield_with_comments.lua
Normal file
49
demos/starfield_with_comments.lua
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
-- 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
|
||||||
Reference in New Issue
Block a user