Lesson 12
Expected Results
What your snake.js file should look like:
var draw = function(snakeToDraw, apple) { var drawableSnake = { color: "green", pixels: snakeToDraw }; var drawableApple = { color: "red", pixels: [apple] }; var drawableObjects = [drawableSnake, drawableApple]; CHUNK.draw(drawableObjects); } var moveSegment = function(segment) { switch(segment.direction) { case "down": return { top: segment.top + 1, left: segment.left }; case "up": return { top: segment.top - 1, left: segment.left }; case "right": return { top: segment.top, left: segment.left + 1 } case "left": return { top: segment.top, left: segment.left - 1 } default: return segment; } } var segmentFurtherForwardThan = function(index, snake) { return snake[index - 1] || snake[index]; } var moveSnake = function(snake) { return snake.map(function(oldSegment, segmentIndex) { var newSegment = moveSegment(oldSegment); newSegment.direction = segmentFurtherForwardThan(segmentIndex, snake).direction; return newSegment; }); } var growSnake = function(snake) { var indexOfLastSegment = snake.length - 1; var lastSegment = snake[indexOfLastSegment]; snake.push({ top: lastSegment.top, left: lastSegment.left }); return snake; } var advanceGame = function() { snake = moveSnake(snake); if (CHUNK.detectCollisionBetween([apple], snake)) { snake = growSnake(snake); apple = CHUNK.randomLocation(); } if (CHUNK.detectCollisionBetween(snake, CHUNK.gameBoundaries())) { CHUNK.endGame(); CHUNK.flashMessage("Whoops! you hit a wall!"); } draw(snake, apple); } var changeDirection = function(direction) { snake[0].direction = direction; } var apple = CHUNK.randomLocation(); var snake = [{ top: 1, left: 0, direction: "down" }, { top: 0, left: 0, direction: "down" }]; CHUNK.executeNTimesPerSecond(advanceGame, 1); CHUNK.onArrowKey(changeDirection);
How the game should work so far:
Next Step:
Go on to Lesson 13