Содержимое рюкзака в Text Adventure

Сейчас я делаю текстовое приключение. Я внедряю функцию, в которой, если у вас есть определенный предмет, вы можете обменять его на подсказку в игре. Я просто не могу понять, как искать предмет в рюкзаке, чтобы правильная подсказка показывалась сама собой.

Вот заявления:

case "drift wood":
case "soda can":
    case "shell":
        case "fork":
if(mapLocation === 9)
{
    gameMessage = "Weren't there some loose planks in that sunken ship?";

    backpack.splice(backpackIndexNumber, 1);
}
else if(mapLocation === 9)
{
    gameMessage = "That trench sure was dark.";

    backpack.splice(backpackIndexNumber, 1);
}
else if(mapLocation === 9)
{
    gameMessage = "That loose sand on the beach sure looks like fun to dig into.";
    backpack.splice(backpackIndexNumber, 1);
}
else if(mapLocation === 9)
{
    gameMessage = "A treasure chest needs unlocking.";
    backpack.splice(backpackIndexNumber, 1);
}
break;

Для первого if(mapLocation === 9) мне нужна программа для поиска в рюкзаке лома, чтобы получить "Разве на этом затонувшем корабле не было каких-то незакрепленных досок?" сообщение.

Моя переменная рюкзака такова:

var backpack = [];

person mandoyo    schedule 17.12.2015    source источник


Ответы (1)


Если ваш массив рюкзаков просто содержит строку «лом», то вы делаете это следующим образом:

hasCrowbar = backpack.indexOf("crowbar") > -1;

Если, с другой стороны, в вашем рюкзаке есть такой предмет:

var backpackObj = [ 
    {
      item: "thing1",
      weight: 10
    }, 
    {
      item: "crowbar",
      weight: 20
    }
  ];

Тогда я бы использовал lodash и проверил это так:

hasCrowbarObj = _.filter(backpackObj, function(b){
  return b.item === "crowbar";
}).length > 0;

Вот jsfiddle:

https://jsfiddle.net/mckinleymedia/uf74d9sb/1/

person William Schroeder McKinley    schedule 17.12.2015