function $(v) { return (document.getElementById(v)); } // var iGridSize = 18 ; var iGridOffset = 4 ; var iClickState = 1 ; var iScore = 0; var iRecord = 0; var iX1 =-1, iY1 =-1, iX2 = 0, iY2 = 0; var iXIncr, iYIncr, iDirection; var aDots = new Array(); var aDirections = new Array(); function setDot (iX,iY) { if (!aDots[iX]) { aDots[iX] = new Array(); } aDots[iX][iY]=1; } function getDot (iX,iY) { return ((!aDots[iX] ) ||(!aDots[iX][iY])) ? 0 : 1; } function setDirection (iX,iY,iDirection) { if (!aDirections[iX] ) {aDirections[iX] = new Array(); } if (!aDirections[iX][iY]) {aDirections[iX][iY] = new Array(); } aDirections[iX][iY][iDirection] = true; } function getDirection (iX,iY,iDirection) { return ((!aDirections[iX] ) ||(!aDirections[iX][iY] ) ||(!aDirections[iX][iY][iDirection])) ? false : true; } function drawLine (iX1,iY1,iX2,iY2,iDirection) { var iX = Math.min(iX1,iX2); var iY = Math.min(iY1,iY2); $("grid").innerHTML+=""; } function drawDot (iX,iY) { setDot (iX,iY); $("grid").innerHTML+=""; } function showRecord() { $("score" ).innerHTML = "" + "" + "" + "
Score : "+iScore +" lignes
(Record : "+iRecord+" lignes )
"; } function showMenu(e) { var iEvent = (!e)?window.event:e; if (iEvent.pageX) { var iMouseX = iEvent.pageX + window.pageXOffset; var iMouseY = iEvent.pageY + window.pageYOffset; } else if (iEvent.clientX) { var iMouseX = iEvent.clientX + document.body.scrollLeft; var iMouseY = iEvent.clientY + document.body.scrollTop; } else { return false; } iClickState = 0; o = $("mnuContext"); o.style.top = iMouseY; o.style.left = iMouseX; o.style.display = "block"; return false; } function getLineInfo (iX1,iY1,iX2,iY2) { iXIncr = (iX1==iX2)?0:((iX1 iY2) { iDirection = (iX1>iX2)?3:1; } else { iDirection = (iX1>iX2)?1:3; } } function clickGrid(e) { var iEvent = (!e)?window.event:e; if (iEvent.pageX) { var iMouseX = iEvent.pageX + window.pageXOffset; var iMouseY = iEvent.pageY + window.pageYOffset; } else if (iEvent.clientX) { var iMouseX = iEvent.clientX + document.body.scrollLeft; var iMouseY = iEvent.clientY + document.body.scrollTop; } else { return false; } switch (iClickState) { case 0: iClickState = 1; break; case 1: iX1 = Math.round(iMouseX/iGridSize); iY1 = Math.round(iMouseY/iGridSize); $("grid").style.cursor="move"; iClickState = 2; break; case 2: iX2 = Math.round(iMouseX/iGridSize); iY2 = Math.round(iMouseY/iGridSize); if ((iX1==iX2) && (iY1==iY2)) { $("grid").style.cursor="crosshair"; iClickState = 1; break; } getLineInfo(iX1,iY1,iX2,iY2); var iDots = 0; var iX = iX1; var iY = iY1; var iXFree = null; var iYFree = null; for (var n=1; n<=5; n++) { if (getDot(iX,iY)==0) { iXFree = iX; iYFree = iY; } else { if ((n >= 2) && (n <= 4) && (getDirection (iX,iY,iDirection))) { break; } iDots++; } if (n<5) { iX+=iXIncr; iY+=iYIncr; } } if ((iDots >= 4 ) && (iX == iX2) && (iY == iY2)) { drawLine (iX1,iY1,iX2,iY2,iDirection); if ((iXFree != null) && (iYFree != null)) { drawDot (iXFree,iYFree); } iScore++; showRecord(); iX=iX1; iY=iY1; for (var n=1; n<=5; n++) { setDirection (iX,iY,iDirection); iX+=iXIncr; iY+=iYIncr; } } $("grid").style.cursor="crosshair"; iClickState = 1; break; } } // function Init() { $("grid").innerHTML = ""; $("grid").style.cursor = "crosshair"; var iGridX = 10; var iGridY = 10; var aGrid = new Array ([0,0,0,1,1,1,1,0,0,0], [0,0,0,1,0,0,1,0,0,0], [0,0,0,1,0,0,1,0,0,0], [1,1,1,1,0,0,1,1,1,1], [1,0,0,0,0,0,0,0,0,1], [1,0,0,0,0,0,0,0,0,1], [1,1,1,1,0,0,1,1,1,1], [0,0,0,1,0,0,1,0,0,0], [0,0,0,1,0,0,1,0,0,0], [0,0,0,1,1,1,1,0,0,0]); var iX0 = 15; var iY0 = 10; for (var iY=0; iY