JS 오목 게임 디스코드봇 만들기- 3

센티널·2021년 7월 3일
0

오목 게임

목록 보기
3/4

이번에는 전 글에서 썼던 코드들을 모두 합여서 하나의 함수로 통일시켜보도록 하겠습니다.

( 이번 글은 짧을 수 있습니다. )

대각선 확인 코드

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를 반환한다.

다음 포스팅에서는 게임을 본격적으로 구현해보겠습니다.

profile
자바스크립트를 공부하는 평범한 학생입니다.

0개의 댓글