Advertisement
ha60002

get coding 2 mission 2

Feb 22nd, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 6.84 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <title>Snake</title>
  5. </head>
  6.     <body>
  7.         <canvas id="canvas" width="1024" height="1024"></canvas>
  8.         <script>
  9.             var game = {
  10.                 tickNumber: 0,
  11.                 timer: null,
  12.                 score: 0,
  13.                 board: [
  14.                     "###############",
  15.                     "#             #",
  16.                     "#             #",
  17.                     "#             #",
  18.                     "#    ####     #",
  19.                     "#    ####     #",
  20.                     "#             #",
  21.                     "#             #",
  22.                     "#             #",
  23.                     "###############"
  24.                 ],
  25.                 fruit: [
  26.                     {x: 1, y: 1},
  27.                 ],
  28.                 tick: function() {
  29.                     window.clearTimeout(game.timer);
  30.                     game.tickNumber++;
  31.                     if(game.tickNumber % 10 == 0) {
  32.                         game.addRandomFruit();
  33.                     }
  34.                     var result = snake.move();
  35.                     if(result == "gameover") {
  36.                         alert("Game over! Player Scored: " + game.score);
  37.                         return;
  38.                     }
  39.                     graphics.drawGame();
  40.                     game.timer = window.setTimeout("game.tick()", 500);
  41.                 },
  42.                 addRandomFruit: function() {
  43.                     var randomY = Math.floor(Math.random() * game.board.length) + 0;
  44.                     var randomX = Math.floor(Math.random() * game.board[randomY].length) + 0;
  45.                     var randomLocation = {x: randomX, y: randomY};
  46.                     if(game.isEmpty(randomLocation) && !game.isFruit(randomLocation)) {
  47.                        game.fruit.push(randomLocation);
  48.                     }
  49.                 },
  50.                 isEmpty: function(location) {
  51.                     return game.board[location.y][location.x] == ' ';
  52.                 },
  53.                 isWall: function(location) {
  54.                     return game.board[location.y][location.x] == '#';
  55.                 },
  56.                 isFruit: function(location) {
  57.                     for (var fruitNumber = 0; fruitNumber < game.fruit.length; fruitNumber++){
  58.                        var fruit = game.fruit[fruitNumber];
  59.                        if(location.x == fruit.x && location.y == fruit.y) {
  60.                            game.fruit.splice(fruitNumber, 1);
  61.                            return true;
  62.                        }
  63.                    }
  64.                    return false;
  65.                },
  66.                isSnake: function(location) {
  67.                    for (var snakePart = 0; snakePart < snake.parts.length; snakePart++) {
  68.                        var part = snake.parts[snakePart];
  69.                        if(location.x == part.x && location.y == part.y) {
  70.                            return true;
  71.                        }
  72.                    }
  73.                    return false;
  74.                }
  75.            };
  76.            var snake = {
  77.                parts: [
  78.                    {x: 4, y: 2},
  79.                    {x: 3, y: 2},
  80.                    {x: 2, y: 2}
  81.                ],
  82.                facing: "E",
  83.                nextLocation: function() {
  84.                    var snakeHead = snake.parts[0];
  85.                    var targetX = snakeHead.x;
  86.                    var targetY = snakeHead.y;
  87.                    targetY = snake.facing == "N" ? targetY-1 : targetY;
  88.                    targetY = snake.facing == "S" ? targetY+1 : targetY;
  89.                    targetX = snake.facing == "W" ? targetX-1 : targetX;
  90.                    targetX = snake.facing == "E" ? targetX+1 : targetX;
  91.                    return {x: targetX, y: targetY};
  92.                },
  93.                move: function () {
  94.                    var location = snake.nextLocation();
  95.                    if(game.isWall(location)
  96.                        || game.isSnake(location)) {
  97.                        return "gameover";
  98.                    }
  99.                    if(game.isEmpty(location)) {
  100.                        snake.parts.unshift(location);
  101.                        snake.parts.pop();
  102.                    }
  103.                    if(game.isFruit(location)) {
  104.                        snake.parts.unshift(location);
  105.                        game.score++;
  106.                    }
  107.                }
  108.            };
  109.        var graphics = {
  110.        canvas: document.getElementById("canvas"),
  111.        squareSize: 30,
  112.            drawBoard: function(ctx) {
  113.                var currentYoffset = 0;
  114.                game.board.forEach(function checkLine(line) {
  115.                    line = line.split('');
  116.                    var currentXoffset = 0;
  117.                    line.forEach(function checkCharacter(character) {
  118.                        if(character == '#') {
  119.                            ctx.fillStyle = "black";
  120.                            ctx.fillRect(currentXoffset, currentYoffset, graphics.squareSize, graphics.squareSize);
  121.                        }
  122.                        currentXoffset += graphics.squareSize;
  123.                        });
  124.                    currentYoffset += graphics.squareSize;
  125.                });
  126.            },
  127.            draw: function(ctx, source, color) {
  128.                source.forEach(function(part) {
  129.                    var partXlocation = part.x * graphics.squareSize;
  130.                    var partYlocation = part.y * graphics.squareSize;
  131.                    ctx.fillStyle = color;
  132.                    ctx.fillRect(partXlocation, partYlocation, graphics.squareSize, graphics.squareSize);
  133.                });
  134.            },
  135.            drawGame: function () {
  136.                var ctx = graphics.canvas.getContext("2d");
  137.                ctx.clearRect(0, 0, graphics.canvas.width, graphics.canvas.height);
  138.                graphics.drawBoard(ctx);
  139.                graphics.draw(ctx, game.fruit, "red");
  140.                graphics.draw(ctx, snake.parts, "green");
  141.            }
  142.        };
  143.        var gameControl = {
  144.            processInput: function(keyPressed) {
  145.                var key = keyPressed.key.toLowerCase();
  146.                var targetDirection = snake.facing;
  147.                if(key == "w" && snake.facing != "S") targetDirection = "N";
  148.                if(key == "a" && snake.facing != "E") targetDirection = "W";
  149.                if(key == "s" && snake.facing != "N") targetDirection = "S";
  150.                if(key == "d" && snake.facing != "W") targetDirection = "E";
  151.                snake.facing = targetDirection;
  152.                game.tick();
  153.            },
  154.            startGame: function () {
  155.                window.addEventListener("keypress", gameControl.processInput, false);
  156.                game.tick();
  157.            }
  158.        };
  159.        gameControl.startGame();
  160.    </script>
  161.     </body>
  162. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement