/src/BlinkenCanvas.java
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.Graphics;

public class BlinkenCanvas extends GameCanvas {
	private BlinkenEngine engine;
	private int x, y;

	public BlinkenCanvas(BlinkenEngine e) {
		super(false);
		engine = e;
		x = y = 0;
	}

	public void draw() {
		Graphics g = getGraphics();
		g.setColor(0);
		g.fillRect(0, 0, getWidth(), getHeight());

		for (int i = 0; i < engine.width; i++) {
			for (int j = 0; j < engine.height; j++) {
				if (engine.values[i][j] != 0) {
					g.setColor(0xFF0000);
				} else {
					g.setColor(0x400000);
				}
				g.fillArc(i*8, j*8, 8, 8, 0, 360);
			}
		}
		g.setColor(0x00FF00);
		g.drawRect(x*8, y*8, 8, 8);
		flushGraphics();
	}

	public void update() {
		int keys = getKeyStates();
		if ((keys & LEFT_PRESSED) != 0) {
			x--;
			if (x < 0) x = engine.width - 1;
		} else if ((keys & RIGHT_PRESSED) != 0) {
			x++;
			x = x % engine.width;
		} else if ((keys & UP_PRESSED) != 0) {
			y--;
			if (y < 0) y = engine.height - 1;
		} else if ((keys & DOWN_PRESSED) != 0) {
			y++;
			y = y % engine.height;
		} else if ((keys & FIRE_PRESSED) != 0) {
			engine.values[x][y] = engine.values[x][y] != 0 ? 0 : 1;
		}
	}
}