【发布时间】:2019-01-25 14:41:17
【问题描述】:
我正在做一个井字游戏,功能非常适合用户转,但是到电脑转玩时,功能崩溃并给出意外的结果,比如玩了两次,跳过转等。
谁能告诉我我的代码有什么问题,并帮助我解决这个问题?
const start = document.getElementById('start');
const table = document.getElementById('table');
places = ["one", "two", "three", "four", "five", "six", "seven", 'eight', "nine"];
let move = 0;
start.addEventListener('click', function(){
user();
});
function user(){
table.addEventListener('click', function(event){
let pos = event.target;
let Id = event.target.id;
if (/[1-9]/.test(pos.innerHTML)){
pos.innerHTML = "X";
move += 1;
places.splice(places.indexOf(Id), 1 );
}
if (move > 8){
gameOver();
}
if (move <= 8){
computer();
}
});
}
function gameOver(){
console.log("Game Over");
}
function computer(){
let index = places[Math.floor(Math.random() * places.length)];
let pos = document.getElementById(index);
if (/[1-9]/.test(pos.innerHTML)){
pos.innerHTML = "O";
move += 1;
places.splice(places.indexOf(pos), 1 );
}
if (move > 8){
gameOver();
}
if (move <= 8) {
user();
}
}
<div class="col text-center">
<table class="table text-center">
<tbody id="table">
<tr>
<td id="one">1</td>
<td id="two">2</td>
<td id="three">3</td>
</tr>
<tr>
<td id="four">4</td>
<td id="five">5</td>
<td id="six">6</td>
</tr>
<tr>
<td id="seven">7</td>
<td id="eight">8</td>
<td id="nine">9</td>
</tr>
</tbody>
</table>
<br />
<button class="btn btn-primary" type="button" id="start">Start Game</button>
</div>
【问题讨论】:
-
每次轮到计算机时,您都会将
click事件添加到您的表中。你应该重新考虑你的方法。最简单的做法是在计算机轮到结束时不要调用user,并将事件声明移到user函数之外。 -
@FedericoklezCulloca 我不明白你的意思,你能解释更多吗,如果你为我编辑代码,我将非常感激。
标签: javascript html css tic-tac-toe