Zrobiłem grę trałowiec w javascript, który w końcu działał całkiem sprawnie, aż dodałem funkcję "expand()" (patrz poniżej). Mam 3 problemy:javascript minesweeper rozwiń zwijanie kontuaru
- Gdy rozszerza dodaje zbyt wiele do „flippedCount” (patrz kod poniżej) - na zdjęciu poniżej div na prawo wyświetlaczy „flippedCount” i jego 39 zamiast 35.
- W rezultacie, jeśli gracz przekroczy 90 kwadratów (kwota do wygrania) podczas "expand()", wygrywa ekran nie pokazuje.
- Również nie rozszerza się prawidłowo (patrz zdjęcia poniżej).
Odpowiedni kod i link jest poniżej tych 2 obrazów
var flippedCount = 0;
var alreadySetAsZero = [];
var columnAmount = 10;
function processClick(clicked) { //i use a "(this)" to pass as "(clicked)"
nextToBombCheck(parseInt(clicked.id));
checkWin();
}
nextToBombCheck(boxNum) {
flippedCount++;
document.getElementById("flipped").innerHTML = flippedCount;
//long function setting "bombCount" to # bombs around clicked square goes here
if (bombCount !== 0) {
//blah blah blah
} else {
alreadySetAsZero[ boxNum ] = "yes";
expand(boxNum);
}
}
function expand(emptyBoxId) {
checkRightOfEmpty(emptyBoxId + 1);
checkLeftOfEmpty(emptyBoxId - 1);
checkAboveEmpty(emptyBoxId - columnAmount);
checkBelowEmpty(emptyBoxId + columnAmount);
}
function checkRightOfEmpty(boxToTheRightId) {
//check if already marked as zero
if (alreadySetAsZero[ boxToTheRightId ] === "yes")
return;
//if box is at the edge
if (boxToTheRightId % columnAmount === (0)) {
//do nothing
} else {
nextToBombCheck(boxToTheRightId);
}
}
//and the rest are 3 similar functions
nie byłem w stanie znaleźć wzór z braku rozbudowy lub numerów dodanej przeliczyć liczbę.
PS: przepraszam za tytuł Nie wiem, co jeszcze można nazwać to:
Jeśli mogę podać sugestię: sformatuj poprawnie swój kod (właściwe wcięcie) i zwróć uwagę na gramatykę zwrotów (fraza zaczyna się na przykład od kapitału i zwykle kończy się kropką). Ludzie są bardziej skłonni odpowiedzieć na pytanie, czy jest to łatwe do odczytania. – Sumurai8