所有人!昨天,我开始为一个我想做的网站做一个井字游戏。经过大约10个小时的工作,我为这个简单的游戏编写了大约150行代码。像往常一样,当我编写大量代码时,一些我无法识别的东西出错了。我的整个代码都不能工作。由于大量代码,我将代码复制粘贴到一个jsFiddle项目中,url如下所示。我的问题是:我可以使用数组或类似的东西来减少if语句和冗余的数量吗?如果有人也能帮助我创建一个更快,更有效的代码,我将非常感谢。提前感谢!
jsfiddle.net/justinpchang/3L6tp/
发布于 2013-06-22 01:31:43
为什么不这样做呢:
/* This represents the current game, declare it upon starting a new game*/
var board = [['-','-','-'],['-','-','-'],['-','-','-']];
function notTaken(board,row,col) {
return (board[row][col] == '-');
}
function hasX(board,row,col) {
return (board[row][col] == 'x');
} // have a similar function for O这消除了代码中的大量冗余。此外,使用HTML5,您可以向指定单元格的行和列的div元素添加自定义属性。因此,例如,顶部-中部div将分别具有属性"data-row“和"data-col”以及值0和1。我认为属性名称必须以"data-“开头,但我不确定。
哦,还有一件事:永远不要将布尔值与真或假进行比较,这是多余的。不做:(some_bool != false)只做:(some_bool)
因为布尔值只能是真或假。类似的:(some_bool == false)可以写成:!(some_bool)
希望这能有所帮助。
发布于 2013-06-22 01:21:23
你有没有试过通过JSLint运行它?它会验证你的代码并寻找潜在的bug。这也会伤害你的感情。
发布于 2013-06-22 01:24:55
通过到处复制/粘贴代码,你违背了编程的目的……试着在你的代码中找到一种模式,让函数对不同的变量做同样的事情。那么它将更具可读性和可扩展性。
https://stackoverflow.com/questions/17240893
复制相似问题