Я пытаюсь построить игру со змеями.Я могу показать свою змею на экране в виде набора квадратов, но теперь я не могу анимировать движение своей змеи.
вот мой метод перемещения:
public void move() {
// Updates the snake's tail using the snakeBody ArrayList.
if (tailLength > 0) {
for (int i = tailLength - 1; i > 0; i--) {
snakeBody.get(i).x = snakeBody.get(i - 1).x;
snakeBody.get(i).y = snakeBody.get(i - 1).y;
}
snakeBody.get(0).x = x;
snakeBody.get(0).y =y;
}
// Updates the snake's position based on its speed.
x = x + dx * START_SIZE;
y = y + dy * START_SIZE;
в моем классе контроллера я создал метод animate:
public void animate() {
setFocusTraversable(true);
setOnKeyPressed(e -> control(e));
KeyFrame frame = new KeyFrame(Duration.millis(2000), e -> snake.move());
animation = new Timeline(frame);
animation.setCycleCount(Timeline.INDEFINITE);
animation.getKeyFrames().add(frame);
animation.play();
}
вот как выглядит мой метод управления:
public void control(KeyEvent event) {
event.getCode();
if ((event.getCode() == KeyCode.A || event.getCode() == KeyCode.LEFT)) {
snake.setMoving(Direction.LEFT);
}
else if ((event.getCode() == KeyCode.D || event.getCode() == KeyCode.RIGHT)) {
snake.setMoving(Direction.RIGHT);
}
else if ((event.getCode() == KeyCode.W || event.getCode() == KeyCode.UP)) {
snake.setMoving(Direction.UP);
}
else if ((event.getCode() == KeyCode.S || event.getCode() == KeyCode.DOWN)) {
snake.setMoving(Direction.DOWN);
}
else if (event.getCode() == KeyCode.SPACE) {
if (over) {
animation.stop();
} else {
animation.pause();
paused = !paused;
}
}
}
Я не уверен, что я могу сделать, чтобы создатьмассив квадратных анимаций на игровом экране