game-battleship
Version:
A battleship program
138 lines (102 loc) • 3.93 kB
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 < player1.targets.length; p1TargetCounter++) {
if (gameOver) {
break;
}
const player1tag = player1.getNextTarget(p1TargetCounter);
isPlayer2Hit = player2.takeHit(player1tag);
if (isPlayer2Hit && 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 < player2.targets.length; p2TargetCounter++) {
const player2tag = player2.getNextTarget(p2TargetCounter);
const isPlayer1Hit = player1.takeHit(player2tag);
if (isPlayer1Hit && 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>