Javascript案例:“看看”+项目

时间:2015-09-30 21:49:18

标签: javascript string input switch-statement case

好的,所以这可能是重复,但我个人还没有在网上或Stackoverflow中看到任何关于此事的内容。

我正在开发一个游戏项目,我一直在尝试制作一个基于文本的游戏。

在这个游戏中,我有一个switch语句,用于用户输入命令时。

到目前为止,我有了Inventory和Look的内容(环顾环境),但是如何在switch语句中使用特定的东西呢?

例如:

submit = function(input) {
    switch(input) {
        case "LOOK":
            lookaround();
            break;
        case "LOOK AT" + item:
            look();
    }
}

这是我遇到问题的LOOK AT专线。我不知道如何使用这种格式的字符串工作,除非我单独为每个项目设置一个案例,例如“LOOK at ORANGE”或案例“LOOK AT TREE”。

我希望我能够彻底解释这一点。谁能给我一些建议?

由于

修改

我认为重要的是要注意用户在输入框中输入输入,因此输入的值将是一个字符串。

如果有助于查看我的代码,请在下面的评论中告诉我。

修改

感谢您帮助GUYS!

我使用了正则表达式(Thanks @ red-devil)和切片混合。它现在完美运作了!

2 个答案:

答案 0 :(得分:0)

Switch使用常量,而不是像'LOOK AT' + anything这样的表达式。

您可以定义一个对象,以便将您的任何案例映射到您自己的函数。像那样:



var looks = {
  'lookat-something' : function() {
    alert('something');
  },
  'lookat-other-thing' : function() {
    alert('other thing');
  },
};


var x = 'lookat-other-thing';

looks[x]();




它比以任何方式使用开关更灵活。

答案 1 :(得分:-1)

如果我理解正确,您希望用户能够输入LOOK AT,然后输入任何项目名称。这里的问题是你有这个不祥的item变量可以代表什么,这是行不通的。 我建议使用以下两种方法之一: 沿着你的榜样:

submit = function (input) {
    switch (true) {
        case input == "LOOK":
            alert("Look")
            break;
        case input.startsWith("LOOK AT"):
            alert(input)
            break;
    }
}

if (typeof String.prototype.startsWith != 'function') {
    String.prototype.startsWith = function (str) {
        return this.slice(0, str.length) == str;
    };
}

其次,这是我建议的方法,你实现了一种方法来解析命令和参数的任何输入。一种方法是在每个空格字符处拆分输入,然后第一个值是命令,其余的是参数。这将要求您使用一个单词命令,如LookAt而不是LOOK AT。 所以像这样:

function submit(input) {
    var parts = input.split(" ");
    var cmd = parts[0];
    var args = parts.slice(1);

    switch (cmd) {
        case "Look":
            lookAround();
            break;

        case "LookAt":
            lookAt(args[0]);
            break;
    }
}