<!-- 
// Tic-Tac-Toe
// JavaScript copyright (c) 1999-2002 by Karen M. Glatt
// This game is not freeware nor is it in the public domain.
// If you would like to use this game on your web site, 
// contact KMG Associates at www.kmgassociates.com.

// Global variables
var board = new Array(9);         // 0: empty 1: player 2: computer
var gameover = false;

// Preload the images
var imgblank = new Image();		    // images for playing pieces
imgblank.src = "tttblank.gif";
var imgplayer = new Image();
imgplayer.src = "tttplay.gif";
var imgcomputer = new Image();
imgcomputer.src = "tttcomp.gif";

var goblank = new Image();		// Game over messages
goblank.src = "winblank.gif";
var gowin = new Image();
gowin.src = "wincmptr.gif";		
var golose = new Image();	
golose.src = "winplayr.gif";	
var godraw = new Image();
godraw.src = "wintie.gif";

var eyesnrml = new Image();		// the computer's eyes
eyesnrml.src = "eyesnrml.gif"
var eyesover = new Image();
eyesover.src = "eyesover.gif"
var eyesmad = new Image();
eyesmad.src = "eyesmad.gif"
var eyessad = new Image();
eyessad.src = "eyessad.gif"
var eyeshappy = new Image();
eyeshappy.src = "eyeshppy.gif"
var eyesup = new Image();
eyesup.src = "eyesup.gif"
var eyesleft = new Image();
eyesleft.src = "eyesleft.gif"
var eyesdown = new Image();
eyesdown.src = "eyesdown.gif"

// Functions to animate computer's eyes
function EyesNormal()
{
	if (!gameover)
		document.eyes.src = eyesnrml.src;
}
function EyesMad()
{
	if (!gameover)
		document.eyes.src = eyesmad.src;
}
function EyesSad()
{
	if (!gameover)
		document.eyes.src = eyessad.src;
}
function EyesHappy()
{
	if (!gameover)
		document.eyes.src = eyeshappy.src;
}
function EyesOver()
{
	if (!gameover)
		document.eyes.src = eyesover.src;
}
function EyesUp()
{
	if (!gameover)
		document.eyes.src = eyesup.src;
}
function EyesLeft()
{
	if (!gameover)
		document.eyes.src = eyesleft.src;
}
function EyesDown()
{
	if (!gameover)
		document.eyes.src = eyesdown.src;
}

// Set board image to given file
function SetBoardImg(imgnum, fname)
{
    document.images[eval('"boardspot' + imgnum + '"')].src = fname;
}

function InitGame()
{
	var i;

    gameover = false;		// reset
	EyesNormal();

    // Clear the board
    for (i = 0; i < 9; ++i)
        {
        board[i] = 0;
        SetBoardImg(i, imgblank.src);
        }
    document.goimage.src = goblank.src;
}

// Function to check if there are 3 in a row
// Board layout:
//  0 1 2
//  3 4 5
//  6 7 8
function CheckWin(who)
{
    // Check the rows
    if (((board[0] == who) && (board[1] == who) && (board[2] == who)) ||
        ((board[3] == who) && (board[4] == who) && (board[5] == who)) ||
        ((board[6] == who) && (board[7] == who) && (board[8] == who)))
        return 1;

    // Check the columns
    if (((board[0] == who) && (board[3] == who) && (board[6] == who)) ||
        ((board[1] == who) && (board[4] == who) && (board[7] == who)) ||
        ((board[2] == who) && (board[5] == who) && (board[8] == who)))
        return 1;

    // Check the diagonals
    if (((board[0] == who) && (board[4] == who) && (board[8] == who)) ||
        ((board[2] == who) && (board[4] == who) && (board[6] == who)))
        return 1;

    return 0;
}

// Computer's turn to play
function ComputerPlays()
{
    // Check each open spot to see if we can win by playing there
    for (i = 0; i < 9; ++i)
        {
        if (board[i] == 0)
            {
            board[i] = 2;       // try it
            if (CheckWin(2))
                {
                SetBoardImg(i, imgcomputer.src);
                return 1;
                }
            board[i] = 0;
            }
        }

    // Check each open spot to see if we need to block the player
    for (i = 0; i < 9; ++i)
        {
        if (board[i] == 0)
            {
            board[i] = 1;       // try it
            if (CheckWin(1))
                {
                SetBoardImg(i, imgcomputer.src);
                board[i] = 2;
                return 0;
                }
            board[i] = 0;
            }
        }

    // Can we have the center spot?
    if (board[4] == 0)
            {
            SetBoardImg(4, imgcomputer.src);
            board[4] = 2;
            return 0;
            }

    // No open spot will let us win.  Randomly pick a spot
    while (true)
        {
        x = Math.floor(Math.random() * 9);
        if (board[x] == 0)
            break;
        }
    board[x] = 2;
    SetBoardImg(x, imgcomputer.src);
    return 0;
}

// Player has selected a spot
function PutPlayer(pos)
{
    // Has someone already won?
    if (gameover)
        return;

    // Is this spot already taken?
    if (board[pos] != 0)
        return;
    board[pos] = 1;         // give it to player
    SetBoardImg(pos, imgplayer.src);

    // Did the player win?
    if (CheckWin(1))
        {
        document.goimage.src = golose.src;
		EyesMad();				
        gameover = true;
        return;
        }

    // Did the game end in a tie?
    found = false;
    for (i = 0; i < 9; ++i)
        {
        if (board[i] == 0)
            {
            found = true;
            break;
            }
        }
    if (found == false)
        {
        document.goimage.src = godraw.src;
		EyesSad();				
        gameover = true;
        return;
        }

     // Let the computer play
    if (ComputerPlays())
        {
        document.goimage.src = gowin.src;
		EyesHappy();				
        gameover = true;
        }
}
// End JavaScript hiding -->

