Линкор JavaScript не будет отображать 2d массив - PullRequest
1 голос
/ 24 января 2020

Я пытаюсь создать простую игру Battleship 10x10 с пятью кораблями. Но я застрял в первой части, где мой 2d массив не будет работать, как будто он ничего не отобразит, когда я попытаюсь его запустить. Это из-за моего синтаксиса или как? gameArray - для отображения местоположения кораблей.

var gameArray=[];
var empty = 0;
var hit = 1;
var miss = 2;
var numShips =5;
initGame(10);
dispgameArray();
shipLocator();
dispgameArray();
dispBoard(); 
document.getElementById("part2").innerHTML = "<img src='water.png' alt='1' height='100' width='100'>";

function initGame(n){
    alert("initGame");
    var rows=0;
    var cols=0;
    for (rows=0; rows<n; rows++){
        for(cols=0; cols<n; cols++){
            gameArray[rows][cols] = empty;
        }
    }
}

function isOdd(num) {
    if (num%2 === 0){
        return true;
    } 
    else {
        return false;
    }
}

function dispgameArray(){

    var rows=0;
    var cols=0;
    var html = "";
    alert(gameArray[rows].length);
    for (rows=0; rows < gameArray.length; rows++){
        for(cols=0; cols<gameArray[rows].length; cols++){
            if (gameArray[rows][cols] == empty) {
                if (isOdd(rows)){
                    html = html + "X"
                } 
                else
                {html = html + "X "}
            }
            if (gameArray[rows][cols] == ship){
                if (isOdd(rows)){
                    html = html + "&"
                } 
                else
                {html = html + "&  "}
            }
            if (gameArray[rows][cols] == miss){
                if (isOdd(rows)){
                    html = html + "M"
                } 
                else
                {html = html + "M  "}
            }
            if (gameArray[rows][cols] == hit){
                if (isOdd(rows)){
                    html = html + "*"
                } 
                else
                {html = html + "*  "}
            }
        }
    }
    document.getElementById("part3").innerHTML = html;
}

1 Ответ

2 голосов
/ 24 января 2020

Было несколько проблем с вашим кодом:

  1. При создании двумерного массива в JavaScript его необходимо инициализировать, например, выполнив gameArray[rows] = []; в строках l oop .
  2. Вам не хватало переменной ship. (Я установил его на 3.)

Если вы хотите простой способ отладки подобных проблем, попробуйте открыть Инструменты разработчика, используя сочетание клавиш Control+Shift+I в Firefox или Chrome чтобы открыть их. Должна быть вкладка Консоль, на которой будут отображаться ошибки.

Вам все еще не хватает метода shipLocator (), но я не могу предсказать, что там должно быть go, поэтому я просто позволяю вам знать.

var gameArray=[];
var empty = 0;
var hit = 1;
var miss = 2;
var ship = 3;
var numShips =5;
initGame(10);
dispgameArray();
shipLocator();
dispgameArray();
dispBoard(); 
document.getElementById("part2").innerHTML = "<img src='water.png' alt='1' height='100' width='100'>";

function initGame(n){
    alert("initGame");
    var rows=0;
    var cols=0;
    for (rows=0; rows<n; rows++){
        gameArray[rows] = [];
        for(cols=0; cols<n; cols++){
            gameArray[rows][cols] = empty;
        }
    }
}

function isOdd(num) {
    if (num%2 === 0){
        return true;
    } 
    else {
        return false;
    }
}

function dispgameArray(){

    var rows=0;
    var cols=0;
    var html = "";
    alert(gameArray[rows].length);
    for (rows=0; rows < gameArray.length; rows++){
        for(cols=0; cols<gameArray[rows].length; cols++){
            if (gameArray[rows][cols] == empty) {
                if (isOdd(rows)){
                    html = html + "X"
                } 
                else
                {html = html + "X "}
            }
            if (gameArray[rows][cols] == ship){
                if (isOdd(rows)){
                    html = html + "&"
                } 
                else
                {html = html + "&  "}
            }
            if (gameArray[rows][cols] == miss){
                if (isOdd(rows)){
                    html = html + "M"
                } 
                else
                {html = html + "M  "}
            }
            if (gameArray[rows][cols] == hit){
                if (isOdd(rows)){
                    html = html + "*"
                } 
                else
                {html = html + "*  "}
            }
        }
    }
    document.getElementById("part3").innerHTML = html;
}
<div id="part3"></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...