private void drawApple(Graphics2D g) { Color c = new Color(13, 111, 28); g.setColor(c); Image img1 = Toolkit.getDefaultToolkit().getImage("/apple.png"); g.drawImage(img1, apple.getX(), apple.getY(), CELL_SIZE, CELL_SIZE, null); g.fillRect( apple.getX() * CELL_SIZE - CELL_SIZE, game.getScreenSize().height - (apple.getY() * CELL_SIZE), CELL_SIZE, CELL_SIZE); }
// змейка будет двигаться как только нужная задержка была достигнута // обрабатывает внесенные изменения и обновляет игровое поле @Override public void update(long nanosPassed) { processInput(); if (!paused) { if (isGameOver()) { game.setScene(new GameOverScence(game, panel, delay)); return; } if (snakeMoveDelay.updateAndCheck(nanosPassed)) { stepsCount++; mlSeconds += 200; String seconds = Clock.getTime(mlSeconds); panel.setData(seconds, stepsCount, appleCount); snake.move(); // удлинение змейки, при поедании яблока BodyPart head = snake.head(); if (head.getX() < 1) { head.setX(WORLD_WIDTH); } if (head.getX() > WORLD_WIDTH) { head.setX(1); } if (head.getY() < 1) { head.setY(WORLD_HEIGHT); } if (head.getY() > WORLD_HEIGHT) { head.setY(1); } if (head.getX() == apple.getX() && head.getY() == apple.getY()) { List<BodyPart> body = snake.getBody(); BodyPart lastPart = body.get(body.size() - 1); body.add(new BodyPart(lastPart.getX(), lastPart.getY())); ++appleCount; if (isGameOver()) { game.setScene(new GameOverScence(game, panel, delay)); } else { placeApple(); } } } } }