Skip to content

Instantly share code, notes, and snippets.

@IrakliMeto
Created November 29, 2021 07:36
Show Gist options
  • Save IrakliMeto/c6cd0e680344959fe8875366052117e7 to your computer and use it in GitHub Desktop.
Save IrakliMeto/c6cd0e680344959fe8875366052117e7 to your computer and use it in GitHub Desktop.
var SNAKE_WIDTH = 15;
var SNAKE_HEIGHT = 15;
// Constants to represent the directions
var EAST = 0;
var SOUTH = 1;
var WEST = 2;
var NORTH = 3;
var snake;
var direction;
var dx = 0;
var dy= 0;
var snakePartsPositionX = Randomizer.nextInt(getWidth() - 20);
var snakePartsPositionY = Randomizer.nextInt(getHeight() - 20);
var snakePart;
var snakeElement;
function start(){
drawSnake();
setTimer(movement,25);
setTimer(snakeParts,25);
keyDownMethod(changeDirection);
}
function drawSnake(){
remove(snake);
var SNAKE_COLOR = Randomizer.nextColor();
SNAKE_WIDTH = SNAKE_WIDTH + 5;
SNAKE_HEIGHT = SNAKE_HEIGHT + 5;
snake = new Rectangle(SNAKE_HEIGHT,SNAKE_WIDTH);
snake.setPosition((getWidth()/2)-20,(getHeight()/2)-20);
snake.setColor(SNAKE_COLOR);
add(snake);
}
function movement(){
snake.move(dx,dy);
if (direction == WEST){
dx = -4;
dy = 0;
}
if (direction == NORTH){
dx = 0;
dy = -4;
}
if (direction == SOUTH){
dx = 0;
dy = 4;
}
if (direction == EAST){
dx = 4;
dy = 0;
}
}
function changeDirection(e){
if (e.keyCode == Keyboard.LEFT){
direction = WEST;
}else if(e.keyCode == Keyboard.RIGHT){
direction = EAST;
}else if(e.keyCode == Keyboard.UP){
direction = NORTH;
}else if(e.keyCode == Keyboard.DOWN){
direction = SOUTH;
}
}
function snakeParts(){
if(!snakePart){
snakePartsPositionX = Randomizer.nextInt(getWidth() - 20);
snakePartsPositionY = Randomizer.nextInt(getHeight() - 20);
snakePart = new Circle(10);
snakePart.setPosition(snakePartsPositionX,snakePartsPositionY);
snakePart.setColor(Randomizer.nextColor());
add(snakePart);
}
eatSnakeParts();
}
function eatSnakeParts(){
snakeElement = getElementAt(snakePart.getX() - snakePart.getRadius() - 5, snakePart.getY());
if(snakeElement){
eatSnakePart();
console.log(SNAKE_WIDTH);
drawSnake();
}
snakeElement = getElementAt(snakePart.getX() + snakePart.getRadius() + 5, snakePart.getY());
if(snakeElement){
eatSnakePart();
console.log(SNAKE_WIDTH);
drawSnake();
}
snakeElement = getElementAt(snakePart.getX(), snakePart.getY() - snakePart.getRadius() - 5);
if(snakeElement){
eatSnakePart()
console.log(SNAKE_WIDTH);
drawSnake();
}
snakeElement = getElementAt(snakePart.getX(), snakePart.getY() + snakePart.getRadius() + 5);
if(snakeElement){
eatSnakePart();
console.log(SNAKE_WIDTH);
drawSnake();
}
}
function eatSnakePart(){
remove(snakePart);
snakePart = null;
setTimer(snakeParts,25);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment