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)