好的,所以这可能是重复,但我个人还没有在网上或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)和切片混合。它现在完美运作了!
答案 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;
}
}