Site hosted by Angelfire.com: Build your free website today!
"); document.write("

Tic Tac Toe

"); window.defaultStatus = "Play Tic Tac Toe with JavaScript"; win = Winner(cells); if(win == "0") { // Make Compuer Move newcell = CompMove(cells); cells = newcell; //Determine winner win = Winner(cells); } document.write("
"); document.write(""); for( i = 0; i < 3; i++ ) { for(j = 0; j < 3; j++) { document.write(""); } document.write(""); } document.write("
"); point = cells.substring( (i*3)+(j+1),(i*3)+(j+1)+1 ); if(point == "0" ) { if(win == "0") { out = PlayerTurn(i, j, cells); } else { out = ""; } document.write(out); } else if( point == "1" ) { document.write(""); } else if( point == "2") { document.write(""); } document.write("
"); document.write("

"); if( win == "1" ) { document.write("

You Win
"); } else if( win == "2") { document.write("
The computer wins
"); } else if(win == "3") { document.write("
Nobody wins
"); } document.write("

Play New Game

"); } function CompMove(cells) { if( cells == "?000000000" ) { return cells; } else if( cells == "?000020000") { return cells; } var i = 0; var j = 0; var numr = 0; var numc = 0; var point = 0; var newcell = cells; var num = 0; var cnum = 0; // Check rows for 2/3 for(i = 0; i < 3; i++) { num = 0; cnum = 0; point = 4 for(j=0; j<3; j++) { ch = cells.substring( (i*3)+(j+1), (i*3)+(j+2) ); if( ch == "0" ) { point = j; } else if( ch == "1" ) { num++; } else if( ch == "2" ) { cnum++; } } if ( ((num == 2) || (cnum == 2)) && (point != 4) ) { newcell = cells.substring( 0, (i*3)+(point+1) ); newcell+="2"; newcell+= cells.substring( (i*3)+(point+2), cells.length); return newcell; } } // Check Columns for 2/3 for( i = 0; i < 3; i++) { num = 0; cnum = 0; point = 4; for(j = 0; j < 3; j++) { ch = cells.substring( (j*3)+(i+1), (j*3)+(i+2) ); if( ch == "0" ) { point = j; } else if( ch == "1" ) { num++; } else if( ch == "2" ) { cnum++; } } if( ((num == 2) || (cnum==2)) && (point != 4) ) { newcell = cells.substring( 0, (point*3)+(i+1)); newcell+="2"; newcell+= cells.substring( (point*3)+(i+2), cells.length ); return newcell; } } // Check Diagonal 1 for 2/3 num = 0; cnum = 0; point = 4; for( i = 0; i < 3; i++) { ch = cells.substring( (i*3)+(i+1), (i*3)+(i+2)); if( ch == "0" ) { point = i; } else if(ch == "1") { num++; } else if(ch == "2") { cnum++; } } if( ((num==2) || (cnum==2)) && (point != 4) ) { document.write(point); newcell = cells.substring( 0, (point*3)+(point+1)); newcell+= "2"; newcell+= cells.substring( (point*3)+(point+2), cells.length); return newcell; } // Check diagonal 2 for 2/3 num = 0; cnum = 0; point = 4; for(i = 0; i < 3; i++) { ch = cells.substring( (i*3)+(3-i), (i*3)+((3-i)+1) ); if( ch == "0" ) { point = i; } else if( ch == "1" ) { num++; } else if(ch == "2") { cnum++; } } if( ((num==2) || (cnum==2)) && (point != 4) ) { newcell = cells.substring(0, (point*3)+(3-point) ); newcell+="2"; newcell+= cells.substring((point*3)+((3-point)+1), cells.length); return newcell; } // check weakness point = 15; if( cells.substring(6, 7) == "1" ) { if( cells.substring(9, 10) == "0") { point = 9; } else if(cells.substring(8, 9) == "0") { point = 8; } } else if( cells.substring(8, 9) == "1" ) { if( cells.substring(9, 10) == "0") { point = 9; } else if(cells.substring(6, 7) == "0") { point = 6; } } if( point != 15) { newcell = cells.substring(0, point); newcell+= "2"; newcell+= cells.substring(point+1, cells.length); return newcell; } // Check Corner weakness point = 15; if( cells.substring(1,2) == "1") { if( cells.substring(9, 10) == "0") { point = 9; } } else if( cells.substring(3, 4) == "1") { if( cells.substring(7,8) == "0") { point = 7; } } else if( cells.substring(7, 8) == "1") { if( cells.substring(3, 4) == "0") { point = 3; } } else if( cells.substring(9, 10) == "1") { if( cells.substring(1, 2) == "0") { point = 1; } } if( point != 15 ) { newcell = cells.substring(0, point); newcell+= "2"; newcell+= cells.substring(point+1, cells.length); return newcell; } //Otherwise, check the corners point = 15; if( cells.substring(1,2) == "0") { point = 1; } else if( cells.substring(3, 4) == "0") { point = 3; } else if( cells.substring(7, 8) == "0") { point = 7; } else if( cells.substring(9, 10) == "0") { point = 9; } if( point != 15 ) { newcell = cells.substring(0, point); newcell+= "2"; newcell+= cells.substring(point+1, cells.length); return newcell; } //If center is open, then go there if( cells.substring(5, 6) == "0" ) { newcell = cells.substring(0, 5); newcell += "2"; newcell+= cells.substring(6, cells.length); return newcell; } //Otherwise, move next to opponent point = 15; for(i = 2; i < 10; i++) { cur = cells.substring(i, i+1); prev = cells.substring(i-1, i); next = cells.substring(i+1, i+2); if( cur == "1" ) { if(prev == "0") { point = i-1; } else if( next == "0" ) { point = i+1; } } } if(point != 15) { newcell = cells.substring(0, point); newcell+= "2"; newcell+= cells.substring(point+1, cells.length); return newcell; } return newcell; } function Winner(cells) { var i = 0; var j = 0; var win = "0"; //check rows for(i = 0; i < 3; i++) { row = (i*3)+1; rowval= cells.substring(row, row+3); if( rowval == "111" ) { win = "1"; return win; } else if( rowval == "222" ) { win = "2"; return win; } } //Check columns for(i = 0; i < 3; i++) { c1 = cells.substring( (0*3)+i+1, (0*3)+i+2); c2 = cells.substring( (1*3)+i+1, (1*3)+i+2); c3 = cells.substring( (2*3)+i+1, (2*3)+i+2); if( (c1==c2) && (c2==c3) ) { if( c1 == "1" ) { win = "1"; return win; } else if( c1 == "2" ) { win = "2"; return win; } } } // Check diagonal 1 c1 = cells.substring( 1, 2); c2 = cells.substring( 5, 6); c3 = cells.substring( 9, 10); if( (c1==c2) && (c2==c3) ) { if( c1 == "1" ) { win = "1"; return win; } else if( c1 == "2" ) { win = "2"; return win; } } // Check diagonal 2 c1 = cells.substring( 3, 4); c2 = cells.substring( 5, 6); c3 = cells.substring( 7, 8); if( (c1==c2) && (c2==c3) ) { if(c1 == "1" ) { win = "1"; return win; } else if(c1 == "2") { win = "2"; return win; } } // Check for a draw win = "3"; for(i = 1; i < 10; i++) { if(cells.substring(i, i+1) == "0" ) { win = "0"; } } return win; } function NewGame() { cells = "?000020000"; DisplayScreen(cells); } function PlayGame() { if( location.search == "?000000000" ) { NewGame(); } else if( location.search == "?000020000") { NewGame(); } else if (location.search.length == 0) { NewGame(); } else { DisplayScreen( location.search ); } }

You are O and the computer is X. Get three in a row, and you win!
Clicking on "Play New Game" will start the game over.

ONLINE GAMES     FUN STUFF

All graphics property of the Kidz Klub.
This script was found at a "free-for-all" site. If you are the original owner
of this script, please e-mail us so that we may give credit for it.