import java.lang.*;
import java.awt.*;
import java.applet.*;



public class ChessApplet extends Applet
{
	public  Board	    board;
	public  Knight	    knight;
    public  Image       knightImage;

	private	int FontSize;
	private	int Rows;
	private	int Columns;
    private int KnightValue;

	public void init()
	{
        Rows        = Integer.parseInt(getParameter("ROWS"));
		Columns     = Integer.parseInt(getParameter("COLUMNS"));
        KnightValue = Integer.parseInt(getParameter("KNIGHT_VALUE"));
		FontSize    = (size().width/Rows)*8/10;

		setFont(new Font("TimesRoman",Font.BOLD,  FontSize));
		board = new Board(size().width, size().height, Rows, Columns, new Color(216, 255, 255), new Color(216, 216, 216));
		knight = new Knight(KnightValue, Color.white, board);

    	knightImage = getImage(getCodeBase(), "images/knight.gif");
	}


	public void paint(Graphics _g)
	{
		board.Draw(_g);
        // _g.drawImage(knightImage, 100, 200, this);
    }




	public boolean mouseUp(Event evt, int x, int y)
	{
        if (!knight.path.Full())
        {
            Position from = new Position(-1, -1);  // initially outside board
    	    if (board.visits > 0)
    	    {
    	        from = knight.path.Last();
    	    }
            Position to = new Position((x/(board.width()/Rows)), (y/(board.height()/Columns)));

            if (knight.LegalMove(from, to))
            {
                showStatus("Moving: Forward");
                knight.Move(to);
                if (knight.path.Full())  // success
                {
            		play(getCodeBase(), "audio/whinney.au");
                    showStatus("Well Done");
                }
            }
            else
            {
                knight.UndoMove();
        	    play(getCodeBase(), "audio/ding.au");
                showStatus("Moving: Backward");
            }

            // redraw the whole board
            board.Draw(getGraphics());
        }
   		return true;
	}




	public String getAppletInfo()
	{
		return "aliadams.bournemouth.ac.uk 1997";
	}

}
