我正在构建一个简单的井字游戏,我需要一些关于我的重置按钮和获胜者功能的帮助。
在提供的代码片段结束时,我正在尝试实现重置按钮,但我不确定如何让它工作。我正在为我的胜利者函数做else
声明的方式是这样的,如果没有更多的动作,我似乎无法说:“没有更多动作”没有它每次都说出来你点击一个正方形。
我该如何实现?
// IIFE
(function() {
angular
.module("myApp", [])
.controller("tictactoeController", tictactoeController);
// Controller
function tictactoeController() {
// Capture Variable
var self = this;
self.currentTurn = '';
self.playerOne = 'X';
self.playerTwo = 'O';
self.winner = '';
// Gameboard
self.boxes = [
{square: 1}, {square: 2}, {square: 3},
{square: 4}, {square: 5}, {square: 6},
{square: 7}, {square: 8}, {square: 9} ];
// Picks Random Player To Be X or O
self.random = function() {
if (Math.random() > 0.5) {
alert("Player One GO!");
self.currentTurn = "X";
} else {
alert("Player Two GO!");
self.currentTurn = "O";
}
};
self.random();
// Clickbox Function
self.clickbox = function($index) {
//console.log(self.boxes[$index].value + "check");
if (self.boxes[$index].value === undefined) {
self.boxes[$index].value = self.currentTurn;
self.boxes[$index].square = self.currentTurn;
if (self.currentTurn === "X") {
self.currentTurn = "O";
} else {
self.currentTurn = "X";
}
} else {
alert(
"Already Taken! Choose Another Square!"
);
}
// Check for winner after each click
self.winner(self.boxes[$index].value);
};
// Winner Fucntion
self.winner = function(input) {
// Row Wins
if ((self.boxes[0].square == input && self.boxes[
1].square == input && self.boxes[2]
.square == input) || (self.boxes[3].square ==
input && self.boxes[4].square == input &&
self.boxes[5].square == input) || (self
.boxes[6].square == input && self.boxes[
7].square == input && self.boxes[8]
.square == input)) {
alert(input + " WINS!");
// Column Wins
} else if ((self.boxes[0].square == input &&
self.boxes[3].square == input && self.boxes[
6].square == input) || (self.boxes[
1].square == input && self.boxes[4]
.square == input && self.boxes[7].square ==
input) || (self.boxes[2].square ==
input && self.boxes[5].square == input &&
self.boxes[8].square == input)) {
alert(input + " WINS!");
// Diagonal Wins
} else if ((self.boxes[0].square == input &&
self.boxes[4].square == input && self.boxes[
8].square == input) || (self.boxes[
2].square == input && self.boxes[4]
.square == input && self.boxes[6].square ==
input)) {
alert(input + " WINS!");
// No Winner
}
};
// Reset Game Button
self.resetbtn = function() {
};
}
})();
答案 0 :(得分:0)
重置功能:
self.resetbtn = function() {
self.boxes.forEach(function(box, index) {
self.boxes[index].value = '';
self.boxes[index].square = index;
})
};
不再动其他了:
var hasMoves = false;
self.boxes.forEach(function(box, index) {
if(box.square != self.playerOne && box.square != self.playerTwo) {
hasMoves = true;
}
}
if(! hasMoves) {
alert ("No more moves!");
}
此外,如果在代码中您不使用硬编码值X
和O
,而是使用其变量self.playerOne
和self.playerTwo
,那会更好。它将更容易更改值X和O(虽然在Tic Tac Toe游戏中你不会这样做。)