Untitled

 avatar
unknown
plain_text
2 years ago
2.6 kB
5
Indexable
var FOOD_DELAY = 6000;

var FOOD_RADIUS = 5;

var FOOD_COLOR = Color.red;

var snake;

var SNAKE_DIM = 10;

var NORTH = 0;
var EAST = 1;
var SOUTH = 2;
var WEST = 3;

var DELAY = 100;

var curDirection = EAST;

var x = getWidth()/2 - SNAKE_DIM/2;

var y = getHeight()/2 - SNAKE_DIM/2;

var square;

function start(){
    addPart(x,y);
    setTimer(move, DELAY);
    drawFood();
    setTimer(drawFood, FOOD_DELAY);
    keyDownMethod(changeDirection);
}

function changeDirection(e){
    if(e.keyCode == Keyboard.DOWN){
        curDirection = SOUTH;
    }
    if(e.keyCode == Keyboard.UP){
        curDirection = NORTH;
    }
    if(e.keyCode == Keyboard.LEFT){
        curDirection = WEST;
    }
    if(e.keyCode == Keyboard.RIGHT){
        curDirection = EAST;
    }
}

function addPart(x,y){
    var snake = new Rectangle(SNAKE_DIM, SNAKE_DIM);
    snake.setPosition(x - SNAKE_DIM/2 , y - SNAKE_DIM/2);
    snake.setColor(Color.green);
    snake.isSnake = true;
    add(snake);
}

function move(){
    var nextPosition = getNextPosition();
    x = nextPosition.x;
    y = nextPosition.y;
    
    if (x < 0 || x >= getWidth() || y < 0 || y >= getHeight()) {
        stopTimer(move);
        stopTimer(drawFood);
        newMessage("You Lose.");
        return;
    }

    var nextElem = getElementAt(x, y);

    if(nextElem == null){
        addPart(x, y);
    }else{
        if(nextElem.isSnake){
            stopTimer(move);
            stopTimer(drawFood);
            newMessage("You Lose.");
        }
        if(nextElem.isFood){
            remove(nextElem);
            addPart(x, y);
        }
    }
}

function getNextPosition(){
    var nextX = x, nextY = y;
    if(curDirection == EAST){
        nextX += SNAKE_DIM;
    }
    if(curDirection == WEST){
        nextX -= SNAKE_DIM;
    }
    if(curDirection == SOUTH){
        nextY += SNAKE_DIM;
    }
    if(curDirection == NORTH){
        nextY -= SNAKE_DIM;
    }
    return {
        x: nextX,
        y: nextY
    };
}

function newMessage(msg){
    var text = new Text(msg, "40pt Arial");
    text.setPosition(getWidth()/2 - text.getWidth()/2, getHeight()/2);
    add(text);
}

function drawFood(){
    var x = Randomizer.nextInt(FOOD_RADIUS, getWidth() - FOOD_RADIUS);
    var y = Randomizer.nextInt(FOOD_RADIUS, getHeight() - FOOD_RADIUS);
    x = Math.floor(x / 10) * 10 + FOOD_RADIUS;
    y = Math.floor(y / 10) * 10 + FOOD_RADIUS;
    var food = new Circle(FOOD_RADIUS);
    food.isFood = true;
    food.setColor(Color.red);
    food.setPosition(x, y);
    if(getElementAt(x,y) == null){
        add(food); 
    } 
}
Editor is loading...