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

public class CD extends Applet{
  Dimension d;  
  Random r;
  Image offI;
  int speed=33;
  String title[] = { "C", "O", "N", "N", "E", "C", "T", " ", "D", "O", "T", "S"};
  CD_GRID grid;

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

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

  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("HITS: " + grid.cnt, 15,d.height-5);
      offG.drawString("MISSES: " + grid.miss, 180, d.height-5);
    }
    else{
      offG.drawString("Press 'r'.", 15, d.height-5);
      offG.drawString("MISSES: " + grid.miss, 180, d.height-5);
    }
    g.drawImage(offI, 0, 0, this);
  }
}
