/** * Main Sudoku Paint. Paints everything for the sudoku board. * * @param m * @param g * @param w * @param oh */ @Override public void paint(SudokuModel m, Graphics g, int w, int oh) { this.oh = oh; this.w = w; int h = oh - 100; this.h = h; g.setFont(new Font(SANS_SERIF, PLAIN, 50)); m.checkConflict(); for (int i = 0; i < 3; ++i) for (int j = 0; j < 3; ++j) paintSmallGrid(g, i * w / 3, j * h / 3, w / 3, h / 3); m.updateSelection(); for (int i = 0; i < 9; ++i) for (int j = 0; j < 9; ++j) paintBox(g, i * w / 9, j * h / 9, m.get(j, i), w / 9, h / 9); paintGrid(g, w, h); if (m.gameOver()) { g.setColor(Color.BLACK); g.fillRect(w / 2 - 200, h / 2 - 100, 400, 200); g.setColor(Color.RED); drawStringBox(g, w / 2 - 200, h / 2 - 200, "GAME OVER", 400, 400); } }
/** * @param model * @param ea * @param me */ @Override public void handleMouseClick(SudokuModel model, int ea, MouseEvent me) { if (model.gameOver()) return; int row = mousePos(me, w, h)[0]; int col = mousePos(me, w, h)[1]; model.setSelected(row, col); }
/** * @param model * @param ea * @param ke */ @Override public void handleKeyPress(SudokuModel model, int ea, KeyEvent ke) { if (model.gameOver()) return; switch (ke.getKeyCode()) { case KeyEvent.VK_UP: model.move(-1, 0); break; case KeyEvent.VK_DOWN: model.move(1, 0); break; case KeyEvent.VK_LEFT: model.move(0, -1); break; case KeyEvent.VK_RIGHT: model.move(0, 1); break; case KeyEvent.VK_0: model.submit(0); break; case KeyEvent.VK_1: model.submit(1); break; case KeyEvent.VK_2: model.submit(2); break; case KeyEvent.VK_3: model.submit(3); break; case KeyEvent.VK_4: model.submit(4); break; case KeyEvent.VK_5: model.submit(5); break; case KeyEvent.VK_6: model.submit(6); break; case KeyEvent.VK_7: model.submit(7); break; case KeyEvent.VK_8: model.submit(8); break; case KeyEvent.VK_9: model.submit(9); break; case KeyEvent.VK_BACK_SPACE: model.submit(0); break; } }