Javascript井字游戏

Javascript井字游戏,javascript,html,tic-tac-toe,Javascript,Html,Tic Tac Toe,各位!! 昨天,我开始为一个我想做的网站做一个井字游戏。经过大约10个小时的工作,我为这个简单的游戏设计了大约150行代码。像往常一样,当我编写一大块代码时,一些我无法识别的东西出错了。我的整个代码都没用。由于代码量很大,我将代码复制粘贴到一个JSFIDLE项目中,url如下所示。我的问题是:我可以使用数组或类似的东西来减少if语句和冗余的数量吗?如果有人能帮助我创建一个更快、更高效的代码,我将非常感激。提前谢谢 jsiddle.net/justinpchang/3L6tp/您试过运行它吗?它验

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


jsiddle.net/justinpchang/3L6tp/

您试过运行它吗?它验证您的代码并查找潜在的bug。这也会伤害你的感情。

你有试过吗?它验证您的代码并查找潜在的bug。这也会伤害你的感情。

把代码复制/粘贴到所有地方,你就无法达到编程的目的。。。尝试在代码中找到一种模式,并使函数用不同的变量做相同的事情。这样,它的可读性和可扩展性就会更好。

如果在所有地方复制/粘贴代码,你就无法实现编程的目的。。。尝试在代码中找到一种模式,并使函数用不同的变量做相同的事情。那么它将更具可读性和可扩展性。

为什么不使用以下内容:

/* 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-”开头,但我不确定

还有一件事:永远不要把布尔值和真或假作比较,这是多余的。而不是做: (有些错误!=错误) 只要做: (一些书)

因为布尔值无论如何只能是真的或假的。同样地: (部分布尔==假) 可以写成: !(一些书)


希望这能有所帮助。

为什么不做这样的事情:

/* 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-”开头,但我不确定

还有一件事:永远不要把布尔值和真或假作比较,这是多余的。而不是做: (有些错误!=错误) 只要做: (一些书)

因为布尔值无论如何只能是真的或假的。同样地: (部分布尔==假) 可以写成: !(一些书)


希望这能有所帮助。

请投票支持您幽默、真实的答案。jslint上一半的问题是他们的编译器不喜欢的空格。JSHint更宽容/可配置。不过我喜欢JSLint:)@justinpchang修复JSFIDLE中的错误并单击“JSHint”按钮。它的建议更合理。@justinpchang您必须学习如何使用它:)JSLint不知道jQuery是什么,所以您必须在globals文本框中声明它,或者适当地注释它。投票给你的幽默和真实的答案。jslint上一半的问题是他们的编译器不喜欢的空格。JSHint更宽容/可配置。不过我喜欢JSLint:)@justinpchang修复JSFIDLE中的错误并单击“JSHint”按钮。它的建议更为合理。@justinpchang您必须学会如何使用它:)JSLint不知道jQuery是什么,所以您必须在globals文本框中声明它,或者适当地注释它。如果您希望总体上提高代码质量,您可以这样做:我建议您永远不要以这种方式编写id标记(
id=“something”
)。正确的方式:
id=“something”
。如果您希望总体上提高代码质量,可以到这里来:我建议您永远不要这样写id标签(
id=“something”
)。正确的方式:
id=“something”