<!DOCTYPE html> <HTML> <HEAD> <meta charset="utf-8"</HEAD> <BODY> <canvas id="screen" style="border:0px solid #000000;" width="400" height="400"> Your browser does not support the HTML5 canvas tag. </canvas> <script> function rand(start,end) { return start+Math.round((Math.random()*(end-start))); } var canvas=document.getElementById("screen"); var ctx=canvas.getContext("2d"); var width=canvas.width; var height=canvas.height; function drawOne(size) { ctx.beginPath(); ctx.arc(centerX,centerY,radius,0,Math.PI*2,true); ctx.stroke(); for (var i=0; i<24; i++) { var angle=(2*Math.PI/24)*i; var x=centerX+Math.cos(angle)*(radius-size); var y=centerY+Math.sin(angle)*(radius-size); ctx.beginPath(); ctx.arc(x,y,size,0,Math.PI*2,true); ctx.stroke(); } } function drawBorder() { ctx.clearRect(0,0,width,height); ctx.fillStyle="#000000"; ctx.fillRect(0,0,10,399); ctx.fillRect(389,0,10,399); ctx.fillRect(0,389,381,10); ctx.fillRect(19,0,379,10); } function drawWall(startpos,endpos,where,hole,direction) { if (direction=='h') { ctx.beginPath(); ctx.moveTo(startpos*10,where*10); ctx.lineTo(hole*10,where*10); ctx.moveTo((hole+1)*10,where*10); ctx.lineTo((endpos+1)*10,where*10); ctx.stroke(); } if (direction=='v') { ctx.beginPath(); ctx.moveTo(where*10,startpos*10); ctx.lineTo(where*10,hole*10); ctx.stroke(); ctx.moveTo(where*10,(hole+1)*10); ctx.lineTo(where*10,(endpos+1)*10); ctx.stroke(); } } function makeWalls(xstart,xend,ystart,yend,direction) { if (yend==ystart || xend==xstart) return; if (direction=='h') { var wall=rand(ystart+1,yend); var hole=rand(xstart,xend-1); drawWall(xstart,xend,wall,hole,'h'); makeWalls(xstart,xend,ystart,wall-1,'v'); makeWalls(xstart,xend,wall,yend,'v'); } if (direction=='v') { var wall=rand(xstart+1,xend); var hole=rand(ystart,yend-1); drawWall(ystart,yend,wall,hole,'v'); makeWalls(xstart,wall-1,ystart,yend,'h'); makeWalls(wall,xend,ystart,yend,'h'); } } drawBorder(); makeWalls(1,38,1,38,'v'); </script> </BODY> </HTML>