JS1K

#2: the original

Source for demo by Amrish Kapoor.

var p=function(){var e,d,a=document.getElementById("c"),m=a.getContext("2d"),n=0,l=0,f=[7,56,448,73,146,292,273,84],b=0;a.width=a.height=300;var c=function(j,i){m.strokeRect(i*100+25,j*100+25,50,50)};var k=function(j,i){m.beginPath();m.arc(i*100+50,j*100+50,30,0,Math.PI*2,false);m.stroke()};var h=function(i){m.fillStyle="rgba(200,0,0,0.5)";for(e=0,d=1;e<9;++e,d=1<<e){if(!((d&i)^d)){m.fillRect((e%3)*100,Math.floor(e/3)*100,100,100)}}a.onclick=null};var g=function(j){var i;for(e=0;e<8;e++){i=f[e];if(!((i&j)^i)){h(i);break}}};for(e=0;e<3;e++){for(d=0;d<3;d++){m.strokeRect(e*100,d*100,100,100)}}a.onclick=function(j){var o=Math.floor(j.clientY/100),i=Math.floor(j.clientX/100);if(b%2===0){n|=1<<(o*3+i);c(o,i);g(n)}else{l|=1<<(o*3+i);k(o,i);g(l)}b++;if(b>8){a.onclick=null}}}();