刽子手的实施

时间:2013-07-19 08:20:58

标签: javascript

状况

我开始在客户端计算机上仅使用JavaScript和HTML来实现游戏“HANGMAN”。我完成了所有的逻辑工作。现在只剩下美学了。我被困了,因为我们不能写JS中的字符串。

a = "abcd"; a[0] = "e"; - 不允许这类事情。

我做了什么

CODE

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

See here

我现在有以下三个数组:

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

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

ag - 此数组由用户输入的字母组成,无论他们是否在猜对象中都有。

我需要做什么

我需要生成输出,以便在用户猜到的情况下显示该字母,并且单词(数组中的字母gai)和_代替字母尚未由用户输入的内容。

我想要什么

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

示例

让这个词猜到:

together

用户输入e

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

用户然后输入d,我的程序将提示他说这封信中没有这封信。

用户输入r

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

依旧......

我希望你明白这个想法!

如果你没有得到它(由于我的错误解释或其他!!)

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

只需观察屏幕底部的输出......这就是我希望此功能生成的内容。

帮我解决这个问题!

3 个答案:

答案 0 :(得分: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字。在我相当老的开发机器上,操作在几毫秒内执行。

有关详细信息,请参阅this discussion

答案 1 :(得分:2)

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

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

答案 2 :(得分:-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"), "_"));
}