Создание игры Tic Tac Toe. Я пытаюсь прочитать столбцы и строки tic tac toe, чтобы проверить, кто победил. Я использую $scope.checkResults()
, чтобы захватить столбцы и строки и передать их в функцию allTheSame
, чтобы проверить, равны ли значения, которые не работают. Вот ссылка codepen. http://codepen.io/theMugician/pen/ojJrRpTIC TAC TOE javascript
var app = angular.module("ticTacToe", []);
app.controller("MainCtrl", function($scope){
var cell = $(".square");
$scope.player = "";
$scope.AI = "";
// changed special chars to X and O as the if statement failed.
var cross = "✖";
var circle = "◯";
/*** Choose a shape ***/
$scope.choosePlayer = function(e) {
$scope.player = $(e.currentTarget).text();
$('.choose').css('top', '-2000px');
$('#wrapper').css('top', '-600px');
$('#wrapper').css('opacity', '1');
//these if statements failed before (AI was always empty)
if($scope.player === cross){
$scope.AI = circle;
}else if($scope.player === circle){
$scope.AI = cross;
}
}
/*** Shape Cells ***/
$scope.cells = [ { value: '' }, { value: '' }, { value: '' },
{ value: '' }, { value: '' }, { value: '' } ,
{ value: '' }, { value: '' }, { value: '' }
];
// made a ref to scope cells
$scope.emptyCells = $scope.cells;
/*** Make a move ***/
$scope.move = function(cell){
cell.value = $scope.player;
var round = 0;
/*** AI makes a move ***/
while(round < 1){
// filtered to get only available cells (for performance)
$scope.emptyCells = $scope.cells.filter(function(cell){
return cell.value === '';
});
// got random cell according to empty cells
var randomCell = $scope.emptyCells[Math.floor((Math.random()*($scope.emptyCells.length-1))+1)];
if(randomCell.value === ""){
randomCell.value = $scope.AI;
round = 1;
}else{
round = 0;
}
}
$scope.checkResults();
};
//checks if values are the same
function allthesame(arr){
var L= arr.length-1;
while(L){
if(arr[L--]!==arr[L]) return false;
}
alert(arr[L].value + "is the winner");
}
//checks Columns and rows
$scope.checkResults = function(){
var allCells = $scope.cells;
// check rows
var cellRows = [];
while(allCells > 0){
cellRows.push(allCells.splice(0,3));
}
for(var i = 0; i < cellRows.length; i++){
allTheSame(cellRows[i]);
}
// check columns
var cellCols = [];
while(allCells > 0){
cellCols.push(allCells.splice(0));
cellCols.push(allCells.splice(3));
cellCols.push(allCells.splice(6));
}
while(cellCols > 0){
cellCols.push(cellCols.splice(0,3));
}
for(var i = 0; i < cellCols.length; i++){
allTheSame(cellCols[i]);
}
}
$scope.reset = function(){
$scope.cells = [ { value: '' }, { value: '' }, { value: '' },
{ value: '' }, { value: '' }, { value: '' } ,
{ value: '' }, { value: '' }, { value: '' }
];
}
});
Я попробую ваше решение и посмотрю, что я могу придумать. –