Я делаю игру линкоров в Javascript. В настоящий момент я работаю над размещением лодок и слежу за тем, чтобы лодки не располагались друг над другом.Способы перезагрузки в JavaScript
Для этого я использую три метода: один, который выбирает позицию для лодки, которая строит лодку и создает вокруг нее границу, а третья - выполняет эти два метода. Когда второй метод создает границу вокруг лодки, он делает это, устанавливая свойство boatHere
на 1
, а затем в третьей функции он проверяет, выбрала ли первая функция позицию, которая уже имеет свойство boatHere = 1
. Я хочу проверить, есть ли там лодка, и перезапустить третью функцию, чтобы разместить лодку в другом месте. Вот код:
placeBoat : function() { //chooses position, checks to see if eligible and builds boat
for (boatNum = 1; boatNum < 4; boatNum++) {
this.selectPos();
if (document.getElementById(boatPos).boatHere == 1) {
return;
}
else {
this.buildBoat();
}
}
},
selectPos : function() { //chooses position
xPos = Math.floor(Math.random() * 8);
yPos = Math.floor(Math.random() * 10 + 1);
boatPos = "cell_" + xPos + "_" + yPos;
},
buildBoat : function() { //builds boat 3 tiles long and boundary 7 tiles long
for (boatLen = 1; boatLen < 4; boatLen++) {
xPos = xPos + 1;
boatPos = "cell_" + xPos + "_" + yPos;
document.getElementById(boatPos).hasBoat = 1;
document.getElementById(boatPos).style.backgroundColor = "brown";
console.log("placed one tile");
}
xPos = xPos - 6;
for (boatBox = 1; boatBox < 8; boatBox++) {
xPos++;
boatPos = "cell_" + xPos + "_" + yPos;
document.getElementById(boatPos).boatHere = 1;
document.getElementById(boatPos).innerHTML = " X";//visual reminder of where boundary is
}
берегитесь, незадекларированные глобальные переменные everywere !! –