大家好! 昨天,我开始为我想制作的网站制作一个井字游戏。经过大约10个小时的工作,我想出了大约150行代码,仅用于简单的游戏。像往常一样,当我制作大量代码时,我无法识别的东西出错了。我的整个代码都不起作用。由于大量代码,我将我的代码复制粘贴到jsFiddle项目中,如下所示。我的问题是:我可以使用数组或类型的东西来减少if语句和冗余的数量吗?如果有人也可以帮我创建更快,更高效的代码,我会非常感激。提前谢谢!
jsfiddle.net/justinpchang/3L6tp /
答案 0 :(得分:3)
您是否尝试通过JSLint运行它?它验证您的代码并查找潜在的错误。这也会伤害你的感情。
答案 1 :(得分:2)
为什么不这样:
/* 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元素添加自定义属性,这将指定单元格的行和列。因此,例如top-mid div将具有属性“data-row”和“data-col”以及值0和1。我认为属性名称必须以“data-”开头,但我不确定。
哦,另外一件事:永远不要将布尔值与真或假相比,这是多余的。而不是做: (some_bool!= false) 做就是了: (some_bool)
因为布尔人无论如何都只能是真或假。同理: (some_bool == false) 可以写成: !(some_bool)
希望这有帮助。
答案 2 :(得分:0)
通过复制/粘贴代码,你就失去了编程的目的......尝试在你的代码中找到一个模式,并使函数用不同的变量做同样的事情。然后它将更具可读性和可扩展性。