关于javascript:Hangman实现

Hangman implementation

本问题已经有最佳答案,请猛点这里访问。

情况

我开始在客户端机器上只使用javascript和HTML来实现游戏"hangman"。我已经完成了所有的逻辑工作。现在只剩下美学了。我被卡住了,因为我们不能用JS编写字符串。

a ="abcd"; a[0] ="e";--不允许使用这种类型的东西。

我所做的

代码

我尝试过的代码不起作用:

请看这里

我现在有以下三个数组:

a—包含单词字母的数组(对于gel,这将是g,e,l)

gai--这个数组由用户输入的字母组成,并且在单词中存在(如ge)。

ag--这个数组由用户输入的字母组成,不管它们是否在要猜测的单词中。

我需要做的是

我需要生成一个输出来显示字母,以防用户猜测到它在单词中(数组gai中的字母)和_中,而不是用户尚未输入的字母。

我想要什么

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

例子

让我们猜中这个词:

埃多克斯1〔10〕

用户进入e

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

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

用户进入r

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

等等……

希望你能明白!

万一你不明白(因为我的解释不好或其他原因)!)

你可以在这里玩绞刑人游戏:绞刑人

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

请帮我解决这个问题!


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

1
2
3
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()函数并使用它。

另一件事是,这种方法速度足够快,即使对于较大的文本量也是如此。在测试中,我用了1000个单词的lorem ipsum。在我相当旧的dev机器上,操作以毫秒为单位执行。

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


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

1
2
3
4
function setCharAt(str,index,chr) {
    if(index > str.length-1) return str;
    return str.substr(0,index) + chr + str.substr(index+1);
}


你可以使用regex来屏蔽单词中的字母,使用String.replace

1
2
3
4
5
6
7
8
9
var word ="together"
  , correct ="";

function guess(c) {
  if (word.indexOf(c) > -1) {
    correct += c;
  }
  console.log(word.replace(new RegExp("[^" + correct +"]","g"),"_"));
}