import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.util.*;

public class ADD_PAIRS extends Applet implements Runnable{
  Dimension d;  
  Thread tm;
  Random r;
  Image offI;
  int speed=33;
  String title[] = { "A", "D", "D", " ", "P", "A", "I", "R", "S" };
  GENERIC_GRID grid;

  public void init(){
    d = getSize();
    offI=createImage(d.width,d.height);
    reset();
    tm = new Thread(this);
    tm.start();
    requestFocus(); 
    this.addKeyListener(new KeyAdapter(){ 
      public void keyPressed(KeyEvent k) {
       if(grid.keepPlaying()){ 
        if(k.getKeyCode() == KeyEvent.VK_RIGHT){
          grid.move_AC(1);
        } 
        else if(k.getKeyCode() == KeyEvent.VK_LEFT){
          grid.move_AC(-1);
        }
       }
       else{
        reset();
       }
       repaint();
      }
    });
  }

  public void reset(){
    grid=new GENERIC_GRID();
  }

  public void run(){
    while(true){
      if(grid != null){
        while(grid.keepPlaying()){
          grid.advance_AC();
          repaint();
          try{
            Thread.sleep(speed);
          }catch(InterruptedException e){};
        }
      }
    }
  }

  public void update(Graphics g){
    paint(g);
  }

  public void paint(Graphics g){
    Graphics offG = offI.getGraphics();
    offG.setColor(Color.white);
    offG.fillRect(0,0,d.width,d.height);
    grid.draw(offG);
    offG.setColor(Color.black);
    offG.setFont(new Font("sansserif", Font.BOLD, 14));
    for(int i = 0; i<title.length; i++){
      offG.drawString(title[i], 5, 20+20*i);
      }
    offG.setFont(new Font("sansserif", Font.PLAIN, 12));
    if(grid.keepPlaying()) {
      offG.drawString("SCORE: " + grid.score, 15,d.height-5);
      offG.drawString("BRICKS USED: " + grid.cnt, 180, d.height-5);
    }
    else{
      offG.drawString("Press 'r'.", 15, d.height-5);
      offG.drawString("BRICKS USED: " + grid.cnt, 180, d.height-5);
    }
    g.drawImage(offI, 0, 0, this);
  }
}
