js1k 2019
by Noncho Savov
HTML
<canvas id="canvas" width=400 height=400></canvas>
JavaScript
window.a = document.getElementById("canvas");
window.c = window.a.getContext('2d');
window.b = document.body;
m=(z,r)=>{
q=s/6;
y=s-s/3;
r&&j++;
u = [,"4f6","ed6","fcd","f46","98a","fff","090"];
n=o=>{
c.fillStyle = o ? "#"+u[o] : "#cbb";
c.beginPath();
f = o!=2?o?i?y:25:s:0;
x = o!=2?o?q:0:q*3;
c[o==2?"arc":"rect"](x+(i+(r?!i?l-4:l:0)-1-(j-1)*l)*s, l*3+x+j*s+(!i||r?0:s), f||y/3, f, 2*Math.PI);
c.fill()
};
i ? n() : c.clearRect(0, 0, l*s*2, 52);
n(z)
};
а=e=>{
k=k||e.keyCode;
v="";в=i=j=0;
switch(k){
case 26:k++;return;
case 27:top.reload();
case 38:p-=l*2;
case 40:p+=l+1;
case 37:p--;
default:p--;
case 39:
t++;if(p++<1)p=1;
k=Math.random();
t%2&&p%2&&(v+=" SPIKES! ",в=-l*k>>0);
p>l*l&&(l++,p=1,g=l+t*k>>0,з=g*2-l>>0);
p==g&&(g=0,т+=5+k*l>>0,v=" COIN "+v);
p==з&&(з=-1,в+=5+k*l>>0,v+=" HP+");
k<l/(99+l*5)?(k=l*k*9>>0,v=" BATTLE! "+v,в-=k,k=32):k=0;
s=(60-l*1.5);
for(h+=в;i<=l*l;i++) m((i==p?1:i==g?2:i==з?7:32==k&&i?3:i%2?t%2?4:5:6),i/l==i/l>>0)
};
c.fillStyle = "#333";
c.font = "20px Arial";
c.fillText("Gold:"+т+" HP:"+h,8,24);
c.fillText((l-4)+"/"+t+" ."+(h<=0 ? (k=26)&&v+в+" GAME OVER" : v+(в||"..")),8,52)
};
б=c=>{
l=c;
з=g=h=13;
onkeydown=а;
а(т=p=t=k=j=0)
};
б(5)