이번에는 전 글에서 썼던 코드들을 모두 합여서 하나의 함수로 통일시켜보도록 하겠습니다.
( 이번 글은 짧을 수 있습니다. )
대각선 확인 코드
const omokTwoArray = [
[1,0,0,0,0],
[0,1,0,0,0],
[0,0,1,0,0],
[0,0,0,1,0],
[0,0,0,0,1],
];
for (let omokArrayIndex in omokTwoArray) {
omokArrayIndex = Number(omokArrayIndex)
let omokArray = omokTwoArray[omokArrayIndex];
for (let omokIndex in omokArray) {
omokIndex = Number(omokIndex)
let parsedOmok = {
lr: [],
rl: []
};
for (let i = 0; i < 5; i++) {
const nowOmok = omokTwoArray[omokArrayIndex + i];
parsedOmok.lr.push(nowOmok ? nowOmok[omokIndex + i] : 0);
parsedOmok.rl.push(nowOmok ? nowOmok[omokIndex - i] : 0);
}
if (parsedOmok.lr.join("").includes("1".repeat(5)))
console.log("Left -> Right Five Cross Win");
if (parsedOmok.rl.join("").includes("1".repeat(5)))
console.log("Right -> Left Five Cross Win");
}
}
세로 확인 코드
for (let omokIndex in omokArray) {
omokIndex = Number(omokIndex)
let parsedOmok = {
vertical: []
}
for (let i = 0; i < 5; i++) {
const nowOmok = omokTwoArray[omokArrayIndex + i];
parsedOmok.vertical.push(nowOmok ? nowOmok[omokIndex] : 0);
}
if (parsedOmok.vertical.join("").includes("1".repeat(5)))
console.log("Vertical Five Cross Win");
}
가로 확인 코드
for (let omokIndex in omokArray) {
omokIndex = Number(omokIndex)
let parsedOmok = {
horizontal: omokArray
}
if (parsedOmok.horizontal.join("").includes("1".repeat(5)))
console.log("Horizontal Five Cross Win");
}
총 확인 코드
const omokTwoArray = [
[1,0,0,0,0],
[0,1,0,0,0],
[0,0,1,0,0],
[0,0,0,1,0],
[0,0,0,0,1],
];
function checkFulfill(omokTwoArray) {
let result = false
for (let omokArrayIndex in omokTwoArray) {
omokArrayIndex = Number(omokArrayIndex)
let omokArray = omokTwoArray[omokArrayIndex];
for (let omokIndex in omokArray) {
omokIndex = Number(omokIndex)
let parsedOmok = {
lr: [],
rl: [],
vertical: [],
horizontal: omokArray
};
for (let i = 0; i < 5; i++) {
const nowOmok = omokTwoArray[omokArrayIndex + i];
parsedOmok.lr.push(nowOmok ? nowOmok[omokIndex + i] : 0);
parsedOmok.rl.push(nowOmok ? nowOmok[omokIndex - i] : 0);
parsedOmok.vertical.push(nowOmok ? nowOmok[omokIndex] : 0);
}
if (parsedOmok.lr.join("").includes("1".repeat(5))) {
result = "lr";
}
if (parsedOmok.rl.join("").includes("1".repeat(5))) {
result = "rl";
}
if (parsedOmok.vertical.join("").includes("1".repeat(5))) {
result = "vertical";
}
if (parsedOmok.horizontal.join("").includes("1".repeat(5))) {
result = "horizontal";
}
}
}
return result
}
console.log(checkFulfill(omokTwoArra));
// "lr"
디버깅해보면 정상적으로 원하는 값이 나오는 것을 알 수 있다. 다른 경우에도 다 나오고, 없을 경우 false를 반환한다.
다음 포스팅에서는 게임을 본격적으로 구현해보겠습니다.