Untitled
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...