전함을 자바 스크립트로 만들고 있습니다. 지금은 보트를 놓고 보트가 서로의 위에 놓이지 않도록 노력하고 있습니다.자바 스크립트에서 재시작하는 방법
이렇게하려면 배에 대한 위치를 선택하는 방법, 보트를 만들고 경계를 만드는 방법,이 두 가지 방법을 실행하는 세 가지 방법을 사용하고 있습니다. 두 번째 방법은 보트 주위에 경계를 만들 때 boatHere
을 1
으로 설정 한 다음 세 번째 함수에서 첫 번째 함수가 이미 속성이 boatHere = 1
인 위치를 선택했는지 확인합니다. 나는 보트가 이미 있는지 확인하고 다른 곳에 보트를 배치하기 위해 세 번째 기능을 다시 시작합니다.
for (boatNum = 1; boatNum < 4; boatNum++) {
do {
this.selectPos();
} while (document.getElementById(boatPos).boatHere == 1);
this.buildBoat();
}
즉 :
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! –