package org.squirrelframework.foundation.fsm.snake;
import com.google.common.collect.Lists;
import java.awt.*;
import java.util.LinkedList;
public class SnakeModel {
private LinkedList<Point> snakePoints = Lists.newLinkedList();
private Point fruitPoint;
private SnakeDirection direction = SnakeDirection.UP;
public Point peekFirst() {
return snakePoints.peekFirst();
}
public Point peekLast() {
return snakePoints.peekLast();
}
public void push(Point newPoint) {
snakePoints.push(newPoint);
}
public Point removeFirst() {
return snakePoints.removeFirst();
}
public Point removeLast() {
return snakePoints.removeLast();
}
public void clear() {
snakePoints.clear();
}
public int length() {
return snakePoints.size();
}
public LinkedList<Point> getSnakePoints() {
return Lists.newLinkedList(snakePoints);
}
public SnakeDirection getDirection() {
return direction;
}
public void setDirection(SnakeDirection direction) {
this.direction = direction;
}
public Point getFruitPos() {
return fruitPoint;
}
public boolean isBody(int x, int y) {
return snakePoints.contains(new Point(x, y));
}
public void spawnFruit(int index) {
int freeFound = -1;
for(int x = 0; x < GameConfigure.COL_COUNT; x++) {
for(int y = 0; y < GameConfigure.ROW_COUNT; y++) {
if(!isBody(x, y) && ++freeFound==index) {
fruitPoint = new Point(x, y);
break;
}
}
}
}
}