UNPKG

game-battleship

Version:
138 lines (102 loc) 3.93 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>JSDoc: Source: battle.js</title> <script src="scripts/prettify/prettify.js"> </script> <script src="scripts/prettify/lang-css.js"> </script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> </head> <body> <div id="main"> <h1 class="page-title">Source: battle.js</h1> <section> <article> <pre class="prettyprint source linenums"><code>/** * This function is the battle field for the two players, it devises the logic for the players to target * each other turn by turn. * @param {Object} player1 : Player class * @param {Object} player2 : Player Class * @returns {Object} winner: Player */ function battle(player1, player2) { let player2TargetCounter = 0; let isPlayer1OutOfAmmo = false; let isPlayer2OutOfAmmo = false; let gameOver = false; let isPlayer2Hit = false; let winner; for (let p1TargetCounter = 0; p1TargetCounter &lt; player1.targets.length; p1TargetCounter++) { if (gameOver) { break; } const player1tag = player1.getNextTarget(p1TargetCounter); isPlayer2Hit = player2.takeHit(player1tag); if (isPlayer2Hit &amp;&amp; player2.isDefeated()) { console.log(`${player1.name} won the battle`); gameOver = true; winner = player1; break; } if (p1TargetCounter === (player1.targets.length - 1)) { if (isPlayer2Hit || isPlayer2OutOfAmmo) { console.log(`${player1.name} has no more missiles left to launch`); } isPlayer1OutOfAmmo = true; } if ((isPlayer1OutOfAmmo || !isPlayer2Hit)) { if (isPlayer2OutOfAmmo) { console.log(`${player2.name} has no more missiles left to launch`); } else { for (let p2TargetCounter = player2TargetCounter; p2TargetCounter &lt; player2.targets.length; p2TargetCounter++) { const player2tag = player2.getNextTarget(p2TargetCounter); const isPlayer1Hit = player1.takeHit(player2tag); if (isPlayer1Hit &amp;&amp; player1.isDefeated()) { console.log(`${player2.name} won the battle`); winner = player2; gameOver = true; break; } if (p2TargetCounter === (player2.targets.length - 1)) { if (isPlayer1Hit || isPlayer1OutOfAmmo) { console.log(`${player2.name} has no more missiles left to launch`); } isPlayer2OutOfAmmo = true; } if (!isPlayer1Hit) { if (!isPlayer1OutOfAmmo) { player2TargetCounter = p2TargetCounter + 1; break; } else { console.log(`${player1.name} has no more missiles left to launch`); } } } } } } if (!gameOver) { console.log("game is a draw"); } return winner; } module.exports = battle; </code></pre> </article> </section> </div> <nav> <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Area.html">Area</a></li><li><a href="Player.html">Player</a></li><li><a href="Ship.html">Ship</a></li></ul><h3>Global</h3><ul><li><a href="global.html#battle">battle</a></li><li><a href="global.html#fileReader">fileReader</a></li><li><a href="global.html#parseCoordinates">parseCoordinates</a></li><li><a href="global.html#validateArgs">validateArgs</a></li></ul> </nav> <br class="clear"> <footer> Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Tue Feb 19 2019 14:14:50 GMT+0530 (India Standard Time) </footer> <script> prettyPrint(); </script> <script src="scripts/linenumber.js"> </script> </body> </html>