Пример #1
0
 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);
 }
Пример #2
0
  // змейка будет двигаться как только нужная задержка была достигнута
  // обрабатывает внесенные изменения и обновляет игровое поле
  @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();
          }
        }
      }
    }
  }