好的,所以这可能是重复的,但是我个人在互联网上或Stackoverflow上都没有看到任何关于此的信息。
我正在开发游戏项目,并且一直在尝试制作基于文本的游戏。
在这个游戏中,我有一个switch语句,供用户输入命令时使用。
到目前为止,我已经有了有关清单和外观的内容(环顾四周环境),但是如何在switch语句中处理特定的内容呢?
例如:
submit = function(input) {
switch(input) {
case "LOOK":
lookaround();
break;
case "LOOK AT" + item:
look();
}
}
这是我遇到问题的LOOK AT行。我不知道如何使字符串以这种格式工作,除非我为每个单独的项目都指定了大小写,例如“ LOOK AT ORANGE”或“ LOOK AT TREE”。
我希望我能对此进行充分的解释。谁能给我一些建议?
谢谢
编辑
我认为必须注意,用户正在将输入内容输入到输入框中,因此输入值将是一个字符串。
如果有助于查看我编写的代码,请在下面的评论中告诉我。
编辑
感谢您的帮助!
我使用了正则表达式(感谢@ red-devil)和混合切片。现在,它可以完美运行!
最佳答案
如果我理解正确,则希望用户能够输入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;
}
}