【发布时间】:2020-11-09 16:10:31
【问题描述】:
我正在制作一种扩展的井字游戏,它是 5x5 网格而不是 3x3 网格,并且需要 4 个连接而不是 3 个连接才能获胜,但我不知道如何在不检查每个网格的情况下检查获胜者可能的组合,我想知道是否有人能指出我正确的方向。我的代码在这里:
<style>
.tictac div {
padding: 10px;
border: 1px solid black;
height:30px;
width: 30px;
float: left;
}
.tictac{
clear: both;
}
</style>
<script>
var currentMove = 'x'
function addMove(box){
box.innerText = currentMove;
if (currentMove === 'x'){currentMove = 'o'
}
else{currentMove = 'x'}
}
</script>
<div id = 'tictactoe'>
<div class = 'tictac'>
<div onclick = 'addMove(this)'></div>
<div onclick = 'addMove(this)'></div>
<div onclick = 'addMove(this)'> </div>
<div onclick = 'addMove(this)'></div>
<div onclick = 'addMove(this)'> </div>
</div>
<div class = 'tictac'>
<div onclick = 'addMove(this)'></div>
<div onclick = 'addMove(this)'></div>
<div onclick = 'addMove(this)'> </div>
<div onclick = 'addMove(this)'></div>
<div onclick = 'addMove(this)'> </div>
</div>
<div class = 'tictac'>
<div onclick = 'addMove(this)'></div>
<div onclick = 'addMove(this)'></div>
<div onclick = 'addMove(this)'> </div>
<div onclick = 'addMove(this)'></div>
<div onclick = 'addMove(this)'> </div>
</div>
<div>
<div class = 'tictac'>
<div onclick = 'addMove(this)'></div>
<div onclick = 'addMove(this)'></div>
<div onclick = 'addMove(this)'> </div>
<div onclick = 'addMove(this)'></div>
<div onclick = 'addMove(this)'> </div>
</div>
<div>
<div class = 'tictac'>
<div onclick = 'addMove(this)'></div>
<div onclick = 'addMove(this)'></div>
<div onclick = 'addMove(this)'> </div>
<div onclick = 'addMove(this)'></div>
<div onclick = 'addMove(this)'> </div>
</div>
【问题讨论】:
-
我猜你认为你必须单独拼出每个组合,这当然不是真的。为此,您需要一堆 for 循环。您的代码现在最大的问题是比赛场地数据没有存储在二维数组中。这一原则被称为“内容和呈现分离”,对于从正确的方向解决此类问题至关重要。用户单击应该更改您的内部数据结构,然后您根据它更新 DOM。这样你就可以简单地遍历你的数组来找到获胜条件。
标签: javascript html algorithm dom