0

每个人!昨天,我开始为我想制作的网站制作井字游戏。经过大约 10 个小时的工作,我为这个简单的游戏编写了大约 150 行代码。像往常一样,当我编写大量代码时,一些我无法识别的东西出错了。我的整个代码都不起作用。由于代码量大,我将我的代码复制粘贴到一个 jsFiddle 项目中,网址如下所示。我的问题是:我可以使用数组或类似类型的东西来减少 if 语句和冗余的数量吗?如果有人也可以帮助我创建更快、更高效的代码,我将非常感激。提前致谢!

jsfiddle.net/justinpchang/3L6tp/

4

3 回答 3

3

您是否尝试过通过JSLint运行它?它验证您的代码并寻找潜在的错误。也会伤害你的感情。

于 2013-06-21T17:21:23.257 回答
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)

希望这可以帮助。

于 2013-06-21T17:31:43.063 回答
0

通过在各处复制/粘贴代码,您就失去了编程的目的……尝试在代码中找到一种模式,并使函数用不同的变量来做同样的事情。然后它将更具可读性和可扩展性。

于 2013-06-21T17:24:54.633 回答