Zeeslag feedback - #1
Conversation
| return square; | ||
| } | ||
|
|
||
| function insertEnemyGameMethods(gridNumber) { |
There was a problem hiding this comment.
deze functie kan eigenlijk weg. Bij het maken van de enemy squares (createEnemySquares), maak je al een square object aan met changeStateAndDraw en doCoordinatesOverlap er in. Alleen geen getEnemySeaColor. Haal deze functie dus weg, en geef een parameter mee aan createAndGetGridSquare:
function createAndGetGridSquare(x, y, gridNumber, isForEnemy) {
let getColor;
if (isForEnemy) {
getColor = getMySeaColor
} else {
getColor = getEnemySeaColor
}
const square = {
x: x,
y: y,
state: "water",
getColor: getColor,
id: gridNumber,
changeAndDraw: changeStateAndDraw,
isClicked: doCoordinatesOverlap
};
return square;
}
en daarna alle aanroepen van deze functie de parameter mee geven of het voor enemy is of voor eigen
| function drawEnemySea() { | ||
| for (let rowNumber = 0; rowNumber < numOfRows; rowNumber++) { | ||
| for (let columnNumber = 0; columnNumber < numOfRows; columnNumber++) { | ||
| const square = insertEnemyGameMethods(rowNumber * numOfRows + columnNumber); |
There was a problem hiding this comment.
deze insertEnemyGameMethods functie gaat weg, dus dan hier gewoon
const square = enemySquares[rowNumber * numOfRows + columnNumber]
| const firstSquareIndex = Math.floor(Math.random() * numOfRows * numOfRows); | ||
| const enemyShipOrientation = Math.round(Math.random()); | ||
|
|
||
| if (enemyShipOrientation === 0) { |
There was a problem hiding this comment.
je checkt hier of enemyShipOrientation 0 is, maar een orientation kan helemaal geen 0 zijn. Beter zou zijn als je dit doet:
const enemyShipOrientationIsHorizontal = Math.round(Math.random()) === 0;
en dan op deze regel
if (enemyShipOrientationIsHorizontal) {
shipOrientation = "horizontal";
....
} else {
shipOrientation = "vertical";
....
}
| Als dat zo is, beslist de functie wat er moet gebeuren. */ | ||
| function playHumanTurn(mouseX, mouseY) { | ||
| for (let i = 0; i < enemySquares.length; i++) { | ||
| if (enemySquares[i].isClicked(mouseX, mouseY)) { |
There was a problem hiding this comment.
deze if heeft verder geen code eronder, dus dan is het netter om de if om te draaien en te returnen ( continue in dit geval want je zit in een for loop), zodat er niet onnodig veel indent zit in de code:
if (!enemySquares[i].isClicked(mouseX, mouseY)) {
continue;
}
// .... rest van de code
| } | ||
|
|
||
| let hitSquare = null; | ||
| function saveHitSquare(location) { |
There was a problem hiding this comment.
deze functie kan weg, gewoon waar saveHitSquare aangeroepen wordt ipv daarvan hitSquare = location; neerzetten
| playComputerTurn(); | ||
| } else if (enemySquares[i].state === "hit" || enemySquares[i].state === "miss") { | ||
| // Wanneer er twee keer een bom op dezelfde plek gegooid wordt, blijft de beurt staan. | ||
| document.getElementById("instruction-text").innerHTML = "A bomb has already been thrown here"; |
There was a problem hiding this comment.
hier zet je instructiontext zonder functie te gebruiken zoals bij de andere. Als je dit mooi wilt oplossen kan je ook alle manieren van instructies zetten groeperen:
const setInstruction = {
element: document.getElementById("instruction-text"),
throwBomb: function () {
if (currentShipIndex >= 5) {
setInstructions.element.innerHTML = "Throw a bomb";
}
},
duplicateBomb: function () {
setInstructions.element.innerHTML = "Oopsie woopsie!"
},
waitForYourTurn: function () {
setInstructions.element.innerHTML = "Wait for your turn!"
}
};
en dan zo aanroepen:
setInstruction.throwBomb();
No description provided.