Snake game source code using Java.

Konstantinos Gkizinos
2 min readNov 28, 2021

--

public class Game {

public static final int DIRECTION_NONE = 0, DIRECTION_RIGHT = 1,

DIRECTION_LEFT = -1, DIRECTION_UP = 2, DIRECTION_DOWN = -2;

private Snake snake;

private Board board;

private int direction;

private boolean gameOver;

public Game(Snake snake, Board board)

{

this.snake = snake;

this.board = board;

}

public Snake getSnake()

{

return snake;

}

public void setSnake(Snake snake)

{

this.snake = snake;

}

public Board getBoard()

{

return board;

}

public void setBoard(Board board)

{

this.board = board;

}

public boolean isGameOver()

{

return gameOver;

}

public void setGameOver(boolean gameOver)

{

this.gameOver = gameOver;

}

public int getDirection()

{

return direction;

}

public void setDirection(int direction)

{

this.direction = direction;

}

// We need to update the game at regular intervals,

// and accept user input from the Keyboard.

public void update()

{

System.out.println("Going to update the game");

if (!gameOver) {

if (direction != DIRECTION_NONE) {

Cell nextCell = getNextCell(snake.getHead());

if (snake.checkCrash(nextCell)) {

setDirection(DIRECTION_NONE);

gameOver = true;

}

else {

snake.move(nextCell);

if (nextCell.getCellType() == CellType.FOOD) {

snake.grow();

board.generateFood();

}

}

}

}

}

private Cell getNextCell(Cell currentPosition)

{

System.out.println("Going to find next cell");

int row = currentPosition.getRow();

int col = currentPosition.getCol();

if (direction == DIRECTION_RIGHT) {

col++;

}

else if (direction == DIRECTION_LEFT) {

col--;

}

else if (direction == DIRECTION_UP) {

row--;

}

else if (direction == DIRECTION_DOWN) {

row++;

}

Cell nextCell = board.getCells()[row][col];

return nextCell;

}

public static void main(String[] args)

{

System.out.println("Going to start game");

Cell initPos = new Cell(0, 0);

Snake initSnake = new Snake(initPos);

Board board = new Board(10, 10);

Game newGame = new Game(initSnake, board);

newGame.gameOver = false;

newGame.direction = DIRECTION_RIGHT;

// We need to update the game at regular intervals,

// and accept user input from the Keyboard.

// here I have just called the different methods

// to show the functionality

for (int i = 0; i < 5; i++) {

if (i == 2)

newGame.board.generateFood();

newGame.update();

if (i == 3)

newGame.direction = DIRECTION_RIGHT;

if (newGame.gameOver == true)

break;

}

}

}

--

--