topical media & game development
game-javascript-casual-eightqueens-game.htm / htm
<!-- ONE STEP TO INSTALL EIGHT QUEENS PROBLEM:
1. Copy the coding into the BODY of your HTML document -->
<!-- STEP ONE: Paste this code into the BODY of your HTML document -->
<BODY>
<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->
<!-- Original: Ronald Daenzer (daenzerr@ferris.edu) -->
<!-- Web Site: http://as400.ferris.edu/daer/EightQueensProb.htm -->
<form name=myform>
<div align=center>
<h1>Eight Queens problem</h1>
Place eight queens on chess board without conflict<br>
<table border=1 width=300 height=300 style=cursor:hand>
<script>
//eight queens problem
//ron daenzer
var closed = new Array(64);
var imgQueen = new Image(32,32);
var imgEmpty = new Image(32,32);
var imgDot = new Image(32,32);
var id=0;
var count=0;
imgQueen.src = "queen.gif";
imgEmpty.src = "empty.gif";
imgDot.src = "dot.gif";
for (var r=0; r<8; r++) //8 rows
{
document.write('<tr>');
for (var c=0; c<8; c++) //8 columns
{
id=(r*8)+c; //calculate cell id
document.write('<td id='+id+' onclick=\"placeq(this);\">');
document.write('<img src="empty.gif"></td>');
}
document.write('</tr>');
}
function placeq (cell)
{
var q = eval(cell.id);
var r = Math.floor(q /8);
var c = q % 8;
var min = Math.min(r,c);
var max = Math.max(r,c);
if ( (document.images[q].src == imgEmpty.src) && (safe(q)) )
{
//document.images[q].src = imgQueen.src;
count++;
for (var h=r*8; h<(r*8)+8; h++)
{ closed[h]=h; document.images[h].src=imgDot.src; }
for (var v=c; v<64; v=v+8)
{ closed[v]=v; document.images[v].src=imgDot.src; }
if (c>r) { var x1=c-r; var x2=q+(9*(8-c)); }
else { var x1=(r-c)*8; var x2=q+(9*(8-r)); }
for (var x=x1; x<x2; x=x+9)
{ closed[x]=x; document.images[x].src=imgDot.src; }
if (r+c>7) { var y1=q-((7-c)*7); var y2=q+(7*(8-r)); }
else { var y1=r+c; var y2=q+(8*c); }
for (var y=y1; y<y2; y=y+7)
{ closed[y]=y; document.images[y].src=imgDot.src; }
document.images[q].src = imgQueen.src;
}
if (count == 8)
alert("Good job, you solved it!");
if (count > 8)
alert("Too many queens");
}
function safe (q)
{ //safe position to place queen on board
if ( closed[q]==q )
return false;
else
return true;
}
function help ()
{ //help print an example of 8 queens
var a = new Array(0,12,23,29,34,46,49,59);
clearBoard();
for (var i=0; i<8; i++)
window.document.images[ a[i] ].src = imgQueen.src;
count=8;
for (var q=0; q<64; q++)
closed[q] = q;
}
function clearBoard ()
{ //clear the image array
for (var i=0; i<64; i++)
window.document.images[i].src = imgEmpty.src;
count=0;
closed = new Array(64);
}
</script>
</table>
<input type=button value=" clear " onclick="clearBoard()">
<input type=button value=" help " onclick="help()">
</div>
</form>
<p><center>
<font face="arial, helvetica" size"-2">Free JavaScripts provided<br>
by <a href="http://javascriptsource.com">The JavaScript Source</a></font>
</center><p>
<!-- Script Size: 3.15 KB -->
(C) Æliens
20/2/2008
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.