현재 웹 (HTML, CSS, Javascript)을 사용하여 기본 Tic Tac Toe 게임 (멀티 플레이어, AI 없음)을 작성 중입니다. 게임 로직은 분명히 자바 스크립트 안에 있습니다. 나는 질문이있다. 다음은 내 코드입니다.JavaScript Tic Tac Toe - 배열 내의 모든 가능한 조합 찾기
window.onload = function() {
console.log("Page has loaded");
}
var ctx;
var turn = 0;
var winningCombo = [
[1, 4, 7],
[2, 5, 8],
[3, 6, 9],
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[1, 5, 9],
[3, 5, 7]
];
var playedComboX = [];
var playedComboO = [];
var filledSquares = [0];
var filled = false;
console.log(winningCombo.length);
var checkWinnerX = function() {
for(var i = 0; i < winningCombo.length; i++) {
console.log('Its in the X check winner loop');
if((winningCombo[i][0] == playedComboX[0]) && (winningCombo[i][1] == playedComboX[1]) && (winningCombo[i][2] == playedComboX[2])) {
alert("Congrats, you have won!");
return true;
}
return false;
}
}
var checkWinnerO = function() {
for(var i = 0; i < winningCombo.length; i++) {
console.log('Its in the 0 check winner loop');
if(winningCombo[i][0] == playedComboO[0] && winningCombo[i][1] == playedComboO[1] && winningCombo[i][2] == playedComboO[2]) {
console.log('It has passed the if statement for X');
alert("Congrats, you have won!");
return true;
}
return false;
}
}
var checkWinner = function() {}
var draw = function (squareNumber) {
console.log('draw has been called');
var squareID = "square" + squareNumber;
var squareClicked = document.getElementById(squareID);
ctx = squareClicked.getContext('2d');
for(var i = 0; i < filledSquares.length; i++) {
if(filledSquares[i] == squareNumber) {
filled = true;
} else {
filled = false;
}
}
if(filled == true) {
alert("Invalid Move! Square is already occupied");
} else {
filledSquares.push(squareNumber);
ctx.beginPath();
if(turn % 2 == 0) {
//Drawing a 'X'
ctx.moveTo(20, 20);
ctx.lineTo(135, 135);
ctx.moveTo(135, 20);
ctx.lineTo(20, 135);
ctx.lineWidth = 6;
ctx.stroke();
turn++;
playedComboX.push(squareNumber);
checkWinnerX();
} else {
//Drawing a Circle
ctx.arc(75, 75, 65, 2 * Math.PI, false);
ctx.lineWidth = 6;
ctx.stroke();
turn++;
playedComboO.push(squareNumber);
checkWinnerO();
}
}
}
는 지금의 checkWinner
기능 만 winningCombo
배열에서 배열 요소와 정확히 일치 확인 (예 : 조합 3,1,2
대신 1,2,3
다음 등록하지 않을 경우). 어쨌든 각 요소의 3 가지 숫자의 가능한 모든 조합을 확인할 수 있습니까? 내 설명이 이해되기를 바래, 고마워.
추신 : 코드 중 하나라도 잘 쓰지 않는다면 용서해주세요. 게임을 쓰는 것은 처음입니다. 그러나 당신이 바라는만큼 중요합니다!
업데이트 2 :
var checkWinnerX = function() {
for(var i = 0; i < winningCombo.length; i++) {
console.log('Its in the X check winner loop');
if((winningCombo[i][0] == sortedArrayX[0]) && (winningCombo[i][1] == sortedArrayX[1]) && (winningCombo[i][2] == sortedArrayX[2])) {
alert("Congrats, you have won!");
return true;
}
return false;
}
}
http://stackoverflow.com/questions/13577484/permutation-need-help-to-code – zerkms
너무 쉽게 jsfiddle에 넣고 debug –