所以我正在尝试构建一个涉及用户与计算机对战的井字游戏。我希望这些数组能够检查一个获胜的序列块,这些块表示有人赢了比赛。我想知道这种检查数组不同部分并将它们相等的方法是否有效?
function winner() {
var blocks = document.getElementsByClassName('block');
for (var i = 0; i < blocks.length; i++) {
if (blocks[0, 1, 2].value == 'X' || blocks[0, 3, 6].value == 'X' || blocks[2, 5, 8].value == 'X' || blocks[6, 7, 8].value == 'X' || blocks[2, 4, 6].value == 'X' || blocks[0, 4, 8].value == 'X') {
alert('Player X Wins!!');
blocks.classList.toggle('block');
player === 1;
}
};
var blocks = document.getElementsByClassName('block');
for (var i = 0; i < blocks.length; i++) {
if (blocks[0, 1, 2].value == 'O' || blocks[0, 3, 6].value == 'O' || blocks[2, 5, 8].value == 'O' || blocks[6, 7, 8].value == 'O' || blocks[2, 4, 6].value == 'O' || blocks[0, 4, 8].value == 'O') {
alert('Player O Wins!!');
blocks.classList.toggle('block');
player === 1;
}
}
}
此外,这是一个可行的方式来决定轮到谁了?我在这个类切换机制上取得了一些成功,以确定在开始时选择了哪些块,但现在似乎无法使其正常工作。
这是改变转弯和班级切换的代码,但我确信有更好的方法:
var player === 1
var blocks = document.getElementsByClassName('block');
function turn() {
if (player === 1) {
player -= 1;
winner();
var buttons = document.getElementsByTagName("button");
console.log(buttons.length);
for (var i = 0; i < buttons.length; i++) {
buttons[i].addEventListener("click", function(e) {
var number = (this.getAttribute('name'));
var chosenblock = document.getElementsByName(number)[0];
chosenblock.classList.toggle('chosen');
chosenblock.value = 'X';
// console.log('click!');
});
}
} else {
player += 1;
winner();
var computer;
computer = function() {
var computerchoice = Math.floor(Math.random() * (9) + 1);
function compselected(number) {
//How to make number equal to the id of the selected block?
var chosenblock = document.getElementsByName(number)[0];
chosenblock.classlist.toggle('picked');
}
感谢所有人的建议!如果有帮助的话,这是fiddle。