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

public class Lampor extends Applet                          {
    static final int m=3, n=4                               ;
    static final Color LJUS=Color.yellow, MÍRK=Color.magenta;
    int tryckningar=0                                       ;
    Label antal = new Label("Antal:"+tryckningar)           ;
    Label rubrik=new Label("Alla rum ska lysa!")            ;
    Button[][] knapp = new Button[m+2][n+2]                 ;
    Button omstart=new Button("Omstart")                    ;

    public void init()                                      {
      	setBackground(Color.white)                          ;
	rubrik.setFont(new  Font("Times", Font.BOLD, 18))   ;
	add(rubrik)                                         ;
	Panel plan = new Panel()                            ;
	plan.setLayout(new GridLayout(m,n))                 ;
	for(int i=1;i<=m;i++) for(int j=1;j<=n;j++)         {
	    knapp[i][j]=new Button()                        ;
	    knapp[i][j].setSize(50,50)                      ;
	    knapp[i][j].setBackground(MÍRK)                 ;
	    Panel p=new Panel()                             ;
	    p.setLayout(null)                               ;
	    p.setSize(50,50)                                ;
	    p.add(knapp[i][j])                              ;
	    plan.add(p)                                     ;}
	add(plan)                                           ;
	add(antal)                                          ;
	add(omstart)                                        ;}

    public boolean action(Event e, Object arg)              {
	for(int i=1;i<=m;i++) for(int j=1;j<=n;j++)         {
	    if(e.target==knapp[i][j])                       {
		press(knapp[i][j])                          ;
		change(knapp[i-1][j])                       ;
		change(knapp[i][j-1])                       ;
		change(knapp[i+1][j])                       ;
		change(knapp[i][j+1])                       ;
		tryckningar++                               ;
		antal.setText("Antal:"+tryckningar)         ;
		checkIfSolved()                             ;}}
	if(e.target==omstart) reset()                       ;
	return true                                         ;}

    void reset()                                            {
	tryckningar=0                                       ;
	antal.setText("Antal:"+tryckningar)                 ;
	rubrik.setText("Alla rum ska lysa!")                ;
	for(int i=1;i<=m;i++) for(int j=1;j<=n;j++)         {
	    knapp[i][j].setLabel(" ")                       ;
	    knapp[i][j].setBackground(MÍRK)                 ;}}
    
    void change(Button b)                                   {
	if(b==null) return                                  ;
	if(b.getBackground()==LJUS) b.setBackground(MÍRK)   ;
	else b.setBackground(LJUS)                          ;}
    
    void press(Button b)                                    {
        if(b.getLabel().equals("*")) b.setLabel(" ")        ;
        else b.setLabel("*")                                ;
        change(b)                                           ;}

    void checkIfSolved()                                    {
	for(int i=1;i<=m;i++) for(int j=1;j<=n;j++)         {
	    if(knapp[i][j].getBackground()!=LJUS) return    ;}
	rubrik.setText("Ja, alla rum lyser!!!")             ;
	try{Thread.sleep(4000);} catch(Exception e){}       ; 
	reset()                                             ;}}