-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpixelated.min.js
1 lines (1 loc) · 2.3 KB
/
pixelated.min.js
1
(()=>{let e={width:12,height:13},t=["#0000ff","#ff0000","#008000","#ffff00","#ffa500","#800080"],n=[],l=22,o=0,d=document.getElementById("board"),i=document.getElementById("controls"),r=document.getElementById("status"),E=document.getElementById("winning-streak"),s=document.getElementById("new-button"),a=document.getElementById("help-button"),c=document.getElementById("help-container"),$=document.getElementById("help-title"),g=document.getElementById("help-description"),h=document.getElementById("help-objective"),m=document.getElementById("help-instructions"),I=document.getElementById("help-controls"),L=document.getElementById("back-button"),y=document.getElementById("copyright"),f=()=>{O(),n=B(),T(),C()},B=()=>Array.from({length:e.height},()=>Array.from({length:e.width},()=>t[Math.floor(Math.random()*t.length)])),T=()=>{d.style.gridTemplateColumns=`repeat(${e.width}, 1fr)`,d.innerHTML=n.flatMap((e,t)=>e.map((e,t)=>`<div class="cell" style="background-color:${e}"></div>`)).join("")},C=()=>{i.innerHTML=t.map(e=>`<button class="color-button" style="background-color:${e}" data-color="${e}"></button>`).join(""),Array.from(i.children).forEach(e=>e.addEventListener("click",()=>p(e.dataset.color))),a.addEventListener("click",()=>S(!0)),L.addEventListener("click",()=>S(!1)),s.textContent=TEXTS.NEW_BUTTON,$.textContent=TEXTS.HELP_TITLE,g.textContent=TEXTS.HELP_DESCRIPTION,h.textContent=TEXTS.HELP_OBJECTIVE,m.textContent=TEXTS.HELP_INSTRUCTIONS,I.textContent=TEXTS.HELP_CONTROLS,L.textContent=TEXTS.BACK_BUTTON,y.innerHTML=TEXTS.COPYRIGHT},S=e=>{c.classList.toggle("hidden",!e),c.classList.toggle("visible",e)},p=t=>{let o=n[0][0];if(t===o||l<=0)return;let d=(l,i)=>{l<0||i<0||l>=e.width||i>=e.height||n[i][l]!==o||(n[i][l]=t,d(l+1,i),d(l-1,i),d(l,i+1),d(l,i-1))};d(0,0),l--,T(),v(),u()?N(TEXTS.WIN_MESSAGE(l)):l<=0&&N(TEXTS.LOSS_MESSAGE)},u=()=>n.every(e=>e.every(e=>e===n[0][0])),v=()=>{r.textContent=TEXTS.MOVES_LEFT(l)},b=(e=!1)=>{e?o=0:(o++,E.classList.remove("hidden"),E.textContent=`${TEXTS.WINNING_STREAK} ${o}`)},N=e=>{r.textContent=e,x(),e===TEXTS.LOSS_MESSAGE?b(!0):b()},x=()=>{Array.from(i.children).forEach(e=>e.disabled=!0)},O=()=>{l=22,v(),E.classList.add("hidden")};s.addEventListener("click",f),document.addEventListener("keydown",e=>{"KeyN"===e.code&&f()}),document.addEventListener("contextmenu",e=>e.preventDefault()),f()})();