| <!doctype html> | |
| <title>Pirates & Navy</title> | |
| <style> | |
| /*size of the ocean (playing board)*/ | |
| #ocean | |
| { | |
| position: relative; | |
| width: 768px; | |
| height: 768px; | |
| background-image: url("../images/oceanbluelarge.png"); | |
| } | |
| /*size of each cell on the ocean*/ | |
| .cell | |
| { | |
| display: block; | |
| position: absolute; | |
| width: 128px; | |
| height :128px; | |
| } | |
| /*size of the the ocean*/ | |
| p | |
| { | |
| width: 800px; | |
| } | |
| </style> | |
| <div id="ocean"></div> | |
| <p id="output"></p> | |
| <script> | |
| //Get a reference to the ocean and output | |
| var ocean = document.querySelector("#ocean"); | |
| var output = document.querySelector("#output"); | |
| //Keyboard listener for user to manipulate ship | |
| window.addEventListener("keydown", keydownHandler, false); | |
| //Game matrix | |
| var map = | |
| [ | |
| : | |
| : | |
| : | |
| : | |
| : | |
| ]; | |
| //Placing the various game objects on the Map | |
| var gameObjects = | |
| [ | |
| : | |
| : | |
| : | |
| : | |
| : | |
| : | |
| ]; | |
| //Map code--used in the matrix above | |
| var water = 0; | |
| var island = 1; | |
| var pirate = 2; | |
| var home = 3; | |
| var ship = 4; | |
| //The size of each cell | |
| var size = 128; | |
| //The number of rows and columns | |
| var rows = map.length; | |
| var columns = map[0].length; | |
| //Arrow key codes | |
| var up = 38; | |
| var down = 40; | |
| var right = 39; | |
| var left = 37; | |
| //Set the ship's start position | |
| var shipRow; | |
| var shipColumn; | |
| for(var row = 0; row < rows; row++) | |
| { | |
| for(var column = 0; column < columns; column++) | |
| { | |
| if(:) | |
| { | |
| shipRow = :; | |
| shipColumn = :; | |
| } | |
| } | |
| } | |
| //will clear the ocean map from previous turns | |
| render(); | |
| function keydownHandler(event) | |
| { | |
| switch(event.keyCode) | |
| { | |
| case up: | |
| //determine if the ship's move will be within the playing field | |
| if(shipRow >:) | |
| { | |
| //if so, clear ship's current cell | |
| gameObjects[shipRow][:] = 0; | |
| //subract 1 from the ship's row to move it up one row on the map | |
| shipRow--; | |
| //apply the ship's new updated position to the array | |
| gameObjects[:][:] = ship; | |
| } | |
| break; | |
| case down: | |
| if(shipRow < rows - 1) | |
| { | |
| gameObjects[:][:] = 0; | |
| shipRow++; | |
| gameObjects[:][:] = ship; | |
| } | |
| break; | |
| case left: | |
| if(shipColumn > 0) | |
| { | |
| gameObjects[:][:] = 0; | |
| shipColumn--; | |
| gameObjects[:][:] = ship; | |
| } | |
| break; | |
| case right: | |
| if(shipColumn < columns - 1) | |
| { | |
| gameObjects[:][:] = 0; | |
| shipColumn++; | |
| gameObjects[:][:] = ship; | |
| } | |
| break; | |
| } | |
| //find out what kind of cell the ship is on | |
| switch(map[:][:]) | |
| { | |
| case water: | |
| console.log("water"); | |
| break; | |
| case pirate: | |
| console.log("pirate"); | |
| break; | |
| case island: | |
| console.log("island"); | |
| break; | |
| case home: | |
| console.log("home"); | |
| break; | |
| } | |
| //Render the game | |
| render(); | |
| } | |
| function render() | |
| { | |
| //Clear the ocean of img cells | |
| //from the previous turn | |
| if(ocean.hasChildNodes()) | |
| { | |
| for(var i = 0; i < rows * columns; i++) | |
| { | |
| ocean.removeChild(ocean.firstChild); | |
| } | |
| } | |
| //Render the game by looping through the map arrays | |
| for(var row = 0; row < rows; row++) | |
| { | |
| for(var column = 0; column < columns; column++) | |
| { | |
| //Create an image tag called cell | |
| : = document.createElement("img"); | |
| //Set the CSS class to "cell" | |
| cell.setAttribute("class", "cell"); | |
| //Add the img tag to the <div id="ocean"> tag | |
| ocean.appendChild(cell); | |
| //Find the correct image for this map cell | |
| switch(map[row][column]) | |
| { | |
| case water: | |
| cell.src = "../images/water.png"; | |
| break; | |
| case island: | |
| cell.src = "../images/desertIsland.png"; | |
| break; | |
| case pirate: | |
| cell.src = "../images/pirateship.png"; | |
| break; | |
| case home: | |
| cell.src = "../images/home.png"; | |
| break; | |
| } | |
| //Add the ship from the gameObjects array | |
| switch(gameObjects[row][column]) | |
| { | |
| case ship: | |
| cell.src = "../images/shipBritish.png"; | |
| break; | |
| } | |
| //Position the cell | |
| cell.style.top = row * size + "px"; | |
| cell.style.left = column * size + "px"; | |
| } | |
| } | |
| } | |
| </script> | |