import java.awt.*;

public class Cell {

    Rectangle cell;
    char value;
    Color color = Color.black;

    final static char OFF = ' ', ON = '*', 
               EX  = 'X', OH = 'O'; // state of a cell

    public Cell(int x, int y, int size, char val) {
	cell = new Rectangle(x, y, size, size);
	value = val;
	// System.out.println("Cell@" + x + "," + y + ": " + value);
    }

    public Cell(int x, int y, int size) {
	this(x, y, size, OFF);
    }

    public char get( ) { return value; }
    public void set(char val) { value = val; }
    public Color getColor( ) { return color; }
    public void setColor(Color c) { color = c; }
    public boolean contains(int x, int y) { return cell.contains(x, y); }

    public void paint(Graphics g) {
	int size = cell.width;
	int x = cell.x;
	int y = cell.y;
	switch (value) {
	case OFF: 
	    g.setColor(Color.white);
	    g.fillRect(x, y, size, size);
	    g.setColor(color);
	    break;
	case ON:  
	    g.setColor(color);
	    g.fillRect(x, y, size, size);
	    break;
	case EX:  
	    g.setColor(Color.white);
	    g.fillRect(x, y, size, size);
	    g.setColor(color);
	    g.drawLine(x, y, x+size, y+size);
	    g.drawLine(x+size, y, x, y+size);
	    break;
	case OH:  
	    g.setColor(Color.white);
	    g.fillRect(x, y, size, size);
	    g.setColor(color);
	    g.drawOval(x+1, y+1, size-2, size-2);
	    break;
	} // switch
	g.setColor(Color.black);
	g.drawLine(x, y, x+size, y);
	g.drawLine(x, y+size, x+size, y+size);
	g.drawLine(x, y, x, y+size);
	g.drawLine(x+size, y, x+size, y+size);
    } // paint

}
