import java.applet.*;
import java.awt.*;

public class ButtonsPuzzle extends Applet {

	// instance variables
	private ToggleButton [] board = new ToggleButton[16];
	
	public void init () {
		for (int i=0;i<16;i++) 
		{
			board[i]=new ToggleButton(this);
			add(board[i]);
		}
	}

	public void paint (Graphics g) 
	{
		for (int i=0;i<16;i++)
		{
			board[i].setBounds(50*(i%4),50*(i/4),50,50);
		}
	}

	public void toggleButtonAndNeighbours (ToggleButton but)
	{
		but.toggle();
		int butPosn = posn(but);
		for (int i=0;i<16;i++)
			if (neigh(butPosn,i)) board[i].toggle();
		if (puzzleSolved())
			showStatus("Puzzle solved! Congrats!");
		else showStatus("Puzzle not solved yet.. :( Keep trying!"); 
	}

	public int posn(ToggleButton but) 
	{
		int index=0;
		while (!(board[index] == but)) index++;
		return index;
	}	

	public boolean neigh (int i, int j)
	{
		boolean ret = false;
		ret =  (i-j == 4)
		|| (j-i == 4)
		 || ((i-j == 1 || j-i == 1) && i/4 == j/4);

		return ret;
	}	
	
	public boolean puzzleSolved()
	{
		boolean result = true;
		for (int i=0; i<16; i++)
			result = result && board[i].isSolid();
		return result;
	}
} // end class
