내일 먼저 c++로 옮겨보고

도저히 안될 것 같으면 파이썬으로 옮겨봐야겠다.

 

승리판정과 3 3 판정의 전체 알고리즘

  1. pair<int,int> d[4] = {{1, 1}, {-1,1}, {0,-1}, {1, 0}}
  2. for(int i = 0; i < 4; i++) { 승리판정(d[i]); }
  3. for(int i = 0; i < 4; i++) { 3 3 판정(d[i]); }

왜 방향이 4개밖에 없는가?

기울기가 중복되는 요소는 전부 배제했기 때문

 

현재 방향의 승리판정 의사코드

  1. 간선이 끊길 때까지 방향 쪽으로 나아감
  2. 간선이 끊길 때까지 방향의 반대쪽으로 나아감
  3. 나아간 수는 i. i가 5와 같으면 승리판정

 

렌주룰 3 3 판정 의사코드

  1. 현재 방향의 선이 한 턴 후 3이 가능한지 조사
  2. 한 턴 후 3이 가능한 곳의 수직에 한 턴 후 3이 가능한 선이 있는지 조사
  3. 있다면 해당 좌표에 금지 판정

현재 방향의 선이 한 턴 후 3이 가능한지 조사하는 알고리즘

  1. 간선이 끊길 때까지 방향 쪽으로 나아감.
  2. 간선이 끊길 때까지 방향의 반대쪽으로 나아감.
  3. 나아가는 수는 1씩 증가하지만 조사는 3씩 한꺼번에 함.
  4. 만약 sum == 2라면 그 선은 한 턴 후 3이 가능한 것.

수직한 선을 구하는 알고리즘

  1. 방향벡터에 0이 포함되어있다 -> 0의 방향을 반대로 바꿔줌
  2. 아니라면 -> x값에 -1을 곱해줌

 

 

 

 

'진행중인 프로젝트들' 카테고리의 다른 글

오목(4)  (0) 2023.02.04
오목(3)  (0) 2023.02.03
오목게임 진행중  (0) 2023.01.31
핀볼게임 -01  (0) 2023.01.27
퀸 퍼즐-01  (0) 2023.01.26

+ Recent posts