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