̬̬̬̈̬̬̬̬̈̬̬̬̬̬̪쬪̬̬̬̪쬪   !A!AAAaAa! ! A ! AA!A!A !aaa a aaaaaa aaa a aaA a a a a a aaa aAaaa aaaa aaa a aAAAAA AA A AA!A!A ! ! A ! A ! a a a a a a a a a a a a a a a a a a a a A A A A AaaaaaaaaaaAAAaa A a aaa!!A!!A! ! ! ! A ! ! A !AAAAAAAAA A A A A AAAAa aaaaaAAAAAA a a a a a aaaaaa a a a aaaaaaa a a a a a a a a a aa aa aa ! ! A ! ! A ! ! ! A ! ! A !AAAAAAAAAAAAAAaaaaaaaaAAAAAAAA A A A A A A A A A A A A A A A Aaaaaaaaaaaaaaaaa A A A A A A A A A A A A A A A Aaa a aA A A A Aa Aa aa a a a a a100q q 00@@?         -- title: cube_demo -- author: Gigatron 2024. -- desc: Playing Bruno time module -- site: website link -- license: (c) Gigatron -- version: 0.8 -- script: lua t=0 x=96 y=24 xx=0 yy=0 zz=0 ll=0 music(0) function BDR(l) if l>=0 and l <=17then poke(0x3fc0, l*16) end if l>=128 and l <=144 then poke(0x3fc0, -l*16) end if l>=143 and l<=146 then poke(0x3ff9,20*math.sin(ll*l)*2) ll = ll + 0.0002 end end local cubeVertices = { { -1, -1, -1 }, { 1, -1, -1 }, { 1, 1, -1 }, { -1, 1, -1 }, { -1, -1, 1 }, { 1, -1, 1 }, { 1, 1, 1 }, { -1, 1, 1 } } cos = math.cos sin = math.sin function rotateX(vertex, angle) local y = vertex[2] * cos(angle) - vertex[3] * sin(angle) local z = vertex[2] * sin(angle) + vertex[3] * cos(angle) return { vertex[1], y, z } end function rotateY(vertex, angle) local x = vertex[1] * cos(angle) + vertex[3] * sin(angle) local z = -vertex[1] * sin(angle) + vertex[3] * cos(angle) return { x, vertex[2], z } end -- Fonction pour effectuer une rotation 3D autour de l'axe Z function rotateZ(vertex, angle) local x = vertex[1] * cos(angle) - vertex[2] * sin(angle) local y = vertex[1] * sin(angle) + vertex[2] * cos(angle) return { x, y, vertex[3] } end local cubeVertices = { { -1, -1, -1 }, { 1, -1, -1 }, { 1, 1, -1 }, { -1, 1, -1 }, { -1, -1, 1 }, { 1, -1, 1 }, { 1, 1, 1 }, { -1, 1, 1 } } function drawCube(angleX, angleY, angleZ) local tVertices = {} for _, vertex in pairs(cubeVertices) do -- Rotation autour de l'axe X local rotatedX = vertex[1] local rotatedY = vertex[2] * cos(angleX) - vertex[3] * sin(angleX) local rotatedZ = vertex[2] * sin(angleX) + vertex[3] * cos(angleX) -- Rotation autour de l'axe Y local tempX = rotatedX * cos(angleY) + rotatedZ * sin(angleY) local tempZ = -rotatedX * sin(angleY) + rotatedZ * cos(angleY) -- Rotation autour de l'axe Z local finalX = tempX * cos(angleZ) - rotatedY * sin(angleZ) local finalY = tempX * sin(angleZ) + rotatedY * cos(angleZ) local finalZ = tempZ -- Projection 3D vers le plan 2D local scale = 128 / (5 + finalZ) -- Ajuster la distance de la caméra local screenX = 64 + finalX * scale local screenY = 64 - finalY * scale tVertices[#tVertices + 1] = {screenX, screenY} end for i = 1, 4 do local nextIndex = i % 4 + 1 line(60+tVertices[i][1], tVertices[i][2], 60+tVertices[nextIndex][1], tVertices[nextIndex][2],12) line(60+tVertices[i+4][1], tVertices[i + 4][2],60+ tVertices[nextIndex + 4][1], tVertices[nextIndex + 4][2],12) line(60+tVertices[i][1], tVertices[i][2], 60+tVertices[i + 4][1], tVertices[i + 4][2],12) line(62+tVertices[i][1], tVertices[i][2],62+tVertices[nextIndex][1], tVertices[nextIndex][2],13) line(62+tVertices[i+4][1], tVertices[i + 4][2],62+ tVertices[nextIndex + 4][1], tVertices[nextIndex + 4][2],13) line(62+tVertices[i][1], tVertices[i][2],62+tVertices[i + 4][1], tVertices[i + 4][2],13) end end stars={} --- fill stars table for i=0,100 do star ={ x= math.random(0,220), y= math.random(14,120), sp= math.random(1,4)-- speed } stars[i]=star end function dstars() for s,b in pairs(stars) do b.x = b.x - b.sp if b.y >=120 then b.y=-10 end if b.x >240 then b.x=0 end if b.x <0 then b.x=240 end if b.sp==1 then pix(b.x,b.y,15) elseif b.sp==2 then pix(b.x,b.y,12) else pix(b.x,b.y,13) end end end --music(0) function TIC() cls() dstars() local angleX = (xx * cos(t/400))/200 local angleY = (yy * sin(t/800))/200 local angleZ = (zz * cos(t/1200))/200 if(t>100) then xx=xx+1 end if(t>200) then zz=zz+1 end if(t>300) then yy=yy+1 end drawCube(angleX, -angleY, angleZ) t=t+1 print("HAPPY NEW YEAR", 40, 0, 10,false,2) print("2024 TIC-80", 50, 126, 10,false,2) end