Lesson 13
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 tipOfTailIndex = snake.length - 1; var tipOfTail = snake[tipOfTailIndex]; snake.push({ top: tipOfTail.top, left: tipOfTail.left }); return snake; } var ate = function(snake, otherThing) { var head = snake[0]; return CHUNK.detectCollisionBetween([head], otherThing); } var advanceGame = function() { var newSnake = moveSnake(snake); if (ate(newSnake, snake)) { CHUNK.endGame(); CHUNK.flashMessage("Whoops! You ate yourself!"); } if (ate(newSnake, [apple])) { newSnake = growSnake(newSnake); apple = CHUNK.randomLocation(); } if (ate(newSnake, CHUNK.gameBoundaries())) { CHUNK.endGame(); CHUNK.flashMessage("Whoops! you hit a wall!"); } snake = newSnake; 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 14
Back to Lesson 7