3

情况

我开始在客户端机器上仅使用 JavaScript 和 HTML 实现游戏“HANGMAN”。我已经完成了所有合乎逻辑的工作。现在只剩下美学了。我被困住了,因为我们无法在 JS 中写入字符串。

a = "abcd"; a[0] = "e";——这种事情是不允许的。

我做了什么

代码

我试过的代码,这不起作用:

看这里

我现在有以下三个数组:

a-- 包含单词字母的数组(gel为此将是g,e,l

gai-- 该数组由用户输入并在单词中的字母组成。(如ge

ag-- 该数组由用户输入的字母组成,无论它们是否存在于要猜测的单词中。

我需要做什么

我需要生成显示字母的输出,以防它被用户猜到并且存在于单词中(数组中的字母gai)并_代替用户尚未输入的字母。

我想要的是

将返回所需输出的函数,如以下示例中所述。

例子

让要猜的词是:

together

用户输入e

该函数应返回:_ _ _ e _ _ e _

用户然后输入d,我的程序会提示他说这个字母不在单词中。

用户输入r

函数应该返回:_ _ _ e _ _ e r

等等....

我希望你能明白!

万一你不明白(由于我的错误解释或其他原因!!)

你可以在这里玩刽子手游戏:刽子手

只需观看屏幕底部的输出......这就是我想要这个函数生成的内容。

帮我解决这个问题!

4

3 回答 3

4

仅阅读问题的开头(因为没有提供其他代码),有一个问题可以使用本机 javascript 函数解决。

var strarr = "Hello world!".split(''); // this will give you an array of characters to be manipulated
strarr[6] = "X"; // so you can do this
console.dir(strarr.join('')); // test it!

作为一个想法(不是我的,它来自评论),甚至可以将这个简单的代码包装为缺少的 toCharArray() 函数并使用它。

另一件事是,即使对于相对较大的文本,这种方法也足够快。对于一个测试,我使用了 lorem ipsum 和 1000 个单词。在我相当旧的开发机器上,操作在几毫秒内执行。

有关详细信息,请参阅此讨论

于 2013-07-19T08:27:57.250 回答
2

您也可以使用此函数在字符串的指定索引处设置字符:

function setCharAt(str,index,chr) {
    if(index > str.length-1) return str;
    return str.substr(0,index) + chr + str.substr(index+1);
}
于 2013-07-19T08:30:18.787 回答
-1

您可以使用正则表达式来掩盖单词中的字母,使用String.replace.

var word = "together"
  , correct = "";

function guess(c) {
  if (word.indexOf(c) > -1) {
    correct += c;
  }
  console.log(word.replace(new RegExp("[^" + correct + "]", "g"), "_"));
}
于 2013-07-19T08:50:28.207 回答