Как я могу проверить, переходит ли игрок на поле с буквой «Р» внутри…?

0

Я делаю игру для класса, и я сделал почти все, кроме как мне нужно проверить, движется ли игрок над пассажиром, и если да, отобразите окно предупреждения. Вот мой JSFiddle: http://jsfiddle.net/nZ8vA/7/. Как вы можете видеть, у меня есть массив, называемый map который используется для построения сетки, а затем позже проверьте, какой цвет пользователь включен, однако мне нужно проверить, не переходят ли они также через "P", обозначенные буквой "P" в сетке. Я по умолчанию добавил map2 но ничего не сделал, я пытался создать второй массив карт для хранения пассажиров и базы, но я не мог понять, как это сделать.

Как проверить, просматривает ли пользователь поле с буквой "P", и, если это так, отображается предупреждение? Я создал функцию для проверки буквы "P", однако я создал это, когда использовал "p" в массиве map, однако удалил цвета, которые не были тем, что я намеревался (мне все еще нужны цвета, следовательно, идея второй массив)).

function checkPass(cell, row) {
    var pass = map[row][cell];
    console.log(pass);
    if (pass == "p") {
    alert("Passenger");
      }
    } 

Как я могу это сделать? (Примеры кода будут полезны (или в скрипке)

РЕДАКТИРОВАТЬ:

В моей скрипке под массивом карт я использую буква "P" вместо "g", "b" или "w" в некоторых строках. Так я знаю, что это работает, но в скрипке он заменяет проверку цвета на P. Мне нужен способ проверить, находятся ли они на P, но сохраняют цвета, поэтому поэтому мне нужна помощь со вторым массивом карт хранить пассажиров и базу (или другую подходящую альтернативу).

  • 1
    Я только что попробовал вашу скрипку, и она работает правильно? Если я не пропущу вопрос ... РЕДАКТИРОВАТЬ: Кажется, это работает только для первой P-ячейки.
  • 0
    В моей скрипке под массивом map я использую букву «P» вместо «g», «b» или «w» в некоторых строках. Это было то, как я знаю, что это работает, но в скрипке он заменяет проверку цвета для P. Мне нужен способ проверить, находятся ли они на P, но сохранить цвета, поэтому, поэтому мне нужна помощь со вторым массивом карты, чтобы Храните пассажиров и базу (или другую подходящую альтернативу).
Показать ещё 2 комментария
Теги:

1 ответ

0
Лучший ответ

Вы можете заменить массив букв на 2d-массив объектов. Что-то вроде этого:

var map = [
            [
                {
                    color: "g",
                    letter: "p"
                },
                {
                    color: "g",
                    letter: ""
                },
            ],[
                {
                    color: "w",
                    letter: "p"
                },
                {
                    color: "b",
                    letter: ""
                }
            ]];

Это будет представлять собой карту 2x2.

Тогда ваш код для проверки пассажира будет таким:

function checkPass(cell, row) {
    var pass = map[row][cell].letter;
    console.log(pass);
    if (pass == "p") {
        alert("Passenger");
    }
} 

И ваш существующий код, который использовал буквы для цветов, будет примерно таким:

var color = map[row][cell].color;

$('#grid .box:eq(' + count + ')').addClass(class_color[color]);
  • 0
    В действительности вам, вероятно, следует каким-то образом заменить ваши жестко закодированные буквы переменными. Может быть, псевдо-Enum, но я не хочу бросать слишком много на вас сразу.
  • 0
    Понятно, спасибо, хотя я этого не сделал правильно? jsfiddle.net/nZ8vA/8
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню