Space: start/reset. Arrows: Move

Minified javascript code (1204 bytes)

let e=document,t=e.body,i=Math,n="<meta name="viewport" content="width=device-width,initial-scale=1" />Space: start/reset. Arrows: Move<div><canvas id=a><style>#a{border:solid;width:80vmin}*{background:tan;display:flex;flex-direction:column;align-items:center;font-size:1.2rem;}</style>",o=40,r=400,l,d,c=[[3,3]],s={37:1,38:1,39:1,40:1},f,h=c,m=c[0],u="#000",g="red",p="addEventListener",v=(e,t,i=u,n=o,l=o)=>{A.fillStyle=i,A.fillRect(e,t,n,l)},w=(e,t,i=t,n="center")=>{A.fillStyle=u,A.textAlign=n,A.fillText(e,t,i)},b=()=>i.floor(9*i.random()),M=()=>{if(l){let[e,t]=c[0],i=e+f%2,n=t+(f-1)%2,l=([e,t])=>e==i&&t==n;if(c.pop(),i<0||9<i||n<0||9<n||c.some(l))return S();c=[[i,n],...c],l(m)&&(c.push([...c[d]]),d++,m=[b(),b()]),v(0,0,"tan",r,r);for([x,y]of c)v(x*o,y*o);v(m[0]*o,m[1]*o,g),w(d,9,30,"left")}},S=()=>{l=0,v(0,0,g,r,r),w(":(",r/2)},k=()=>{l=1,c=[...h],f=2,d=0},A=(t.innerHTML=n,a.getContext("2d")),{width:C,height:L,x:R,y:T}=(a.height=a.width=r,A.font="30px f",a.getBoundingClientRect());e[p]("keyup",({which:e})=>{s[e]?f=e-38:32!=e||l||k()}),a[p]("touchstart",({touches:[{clientX:e,clientY:t}]})=>{l||k();e-=R,t-=T;t<L/3&&(f=0),t>L/3*2&&(f=2),e<C/3&&(f=-1),e>C/3*2&&(f=1)}),setInterval(M,r);

Encoded data url (1692 bytes)

data:text/html;charset=utf-8,%3Cbody%3E%3Cscript%3Eeval(atob(%22bGV0IGU9ZG9jdW1lbnQsdD1lLmJvZHksaT1NYXRoLG49IjxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xXCIgLz5TcGFjZTogc3RhcnQvcmVzZXQuIEFycm93czogTW92ZTxkaXY+PGNhbnZhcyBpZD1hPjxzdHlsZT4jYXtib3JkZXI6c29saWQ7d2lkdGg6ODB2bWlufSp7YmFja2dyb3VuZDp0YW47ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXI7Zm9udC1zaXplOjEuMnJlbTt9PC9zdHlsZT4iLG89NDAscj00MDAsbCxkLGM9W1szLDNdXSxzPXszNzoxLDM4OjEsMzk6MSw0MDoxfSxmLGg9YyxtPWNbMF0sdT0iIzAwMCIsZz0icmVkIixwPSJhZGRFdmVudExpc3RlbmVyIix2PShlLHQsaT11LG49byxsPW8pPT57QS5maWxsU3R5bGU9aSxBLmZpbGxSZWN0KGUsdCxuLGwpfSx3PShlLHQsaT10LG49ImNlbnRlciIpPT57QS5maWxsU3R5bGU9dSxBLnRleHRBbGlnbj1uLEEuZmlsbFRleHQoZSx0LGkpfSxiPSgpPT5pLmZsb29yKDkqaS5yYW5kb20oKSksTT0oKT0+e2lmKGwpe2xldFtlLHRdPWNbMF0saT1lK2YlMixuPXQrKGYtMSklMixsPShbZSx0XSk9PmU9PWkmJnQ9PW47aWYoYy5wb3AoKSxpPDB8fDk8aXx8bjwwfHw5PG58fGMuc29tZShsKSlyZXR1cm4gUygpO2M9W1tpLG5dLC4uLmNdLGwobSkmJihjLnB1c2goWy4uLmNbZF1dKSxkKyssbT1bYigpLGIoKV0pLHYoMCwwLCJ0YW4iLHIscik7Zm9yKFt4LHldb2YgYyl2KHgqbyx5Km8pO3YobVswXSpvLG1bMV0qbyxnKSx3KGQsOSwzMCwibGVmdCIpfX0sUz0oKT0+e2w9MCx2KDAsMCxnLHIsciksdygiOigiLHIvMil9LGs9KCk9PntsPTEsYz1bLi4uaF0sZj0yLGQ9MH0sQT0odC5pbm5lckhUTUw9bixhLmdldENvbnRleHQoIjJkIikpLHt3aWR0aDpDLGhlaWdodDpMLHg6Uix5OlR9PShhLmhlaWdodD1hLndpZHRoPXIsQS5mb250PSIzMHB4IGYiLGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO2VbcF0oImtleXVwIiwoe3doaWNoOmV9KT0+e3NbZV0/Zj1lLTM4OjMyIT1lfHxsfHxrKCl9KSxhW3BdKCJ0b3VjaHN0YXJ0Iiwoe3RvdWNoZXM6W3tjbGllbnRYOmUsY2xpZW50WTp0fV19KT0+e2x8fGsoKTtlLT1SLHQtPVQ7dDxMLzMmJihmPTApLHQ+TC8zKjImJihmPTIpLGU8Qy8zJiYoZj0tMSksZT5DLzMqMiYmKGY9MSl9KSxzZXRJbnRlcnZhbChNLHIpOw==%22))%3C%2Fscript%3E

Mobile friendly version · Code golf'd version · Github