7 javascript if-statement tic-tac-toe
我很好奇我是否使用了太多的if/else if语句.我正在使用javascript编写一个tic-tac-toe程序,并确定计算机是否应该阻止我使用的播放器大约9 if语句和我在确定是否连续3时使用大约9.
例如:
if(r1c1V === xOrO && r1c2V === xOrO && r1c3V === xOrO)
{
is3InARow = true;
}
else if(r2c1V === xOrO && r2c2V === xOrO && r2c3V === xOrO)
{
is3InARow = true;
}
else if(r3c1V === xOrO && r3c2V === xOrO && r3c3V === xOrO)
{
is3InARow = true;
}
.
.
.
.
Run Code Online (Sandbox Code Playgroud)
等等.
所以我的问题是,我是否使用过多if语句?或者没有更好的方法来做到这一点?我的朋友告诉我,我不应该使用那么多if语句,但我不确定他是否真实,我能理解为什么在某些情况下它会更慢或更糟,但我不确定.
提前致谢!!
Oli*_*ini 13
这是相当主观的,所以对Stack Overflow来说并不是很理想.
你的朋友可能建议的是,使用long if/else语句,嵌套ifs等的程序有时难以维护,并且并不总是非常易读.有时,您可以使用单独的函数替换long if语句,这可以更容易维护.
例如在tic-tac-toe:
function checkRow(rowToCheck){
if (rowToCheck[0] === rowToCheck[1] && rowToCheck[1] === rowToCheck[2]){
return true;
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
不是说这是完美的甚至是好的代码,但你可以看到它如何允许你减少代码中if语句的数量.它可以进一步考虑:
function checkRow(rowToCheck){
var allMatch = true;
for (var i=0;i<rowToCheck.length && allMatch;i++){
allMatch = rowToCheck[i] === rowToCheck[0];
}
return allMatch;
}
Run Code Online (Sandbox Code Playgroud)
这允许不同长度的行,并减少if语句.无论如何,我希望能解释一些删除if语句的方法.
编辑
在将来,我建议还有另一种更好的方法来检查连续元素的相等性:
const o = 'o'
const x = 'x'
const rows = [
[o, x, x],
[x, x, x],
[o, o, x]
]
const rowIsEqual = row => !row
.some(square => square !== row[0])
const results = rows.map(rowIsEqual)
console.dir(results)Run Code Online (Sandbox Code Playgroud)
编程就是关于自动化流程。你不会听到我说你这样做的方式是错误的。如果有效那就没问题了。当然,如果你能找到一种方法让它自动检查所有内容,那就更漂亮了。就像遍历所有 x 线并检查是否所有这些都被选中一样。这可能不会更容易,但会更具可扩展性。如果您想在十乘十的网格上玩游戏。那么你只需说这就是场的大小。现在您需要添加所有其他代码行。
| 归档时间: |
|
| 查看次数: |
11188 次 |
| 最近记录: |