티스토리 뷰

Unity/Sudoku

1. Sudoku 기본 로직 만들기

브라이언77 2020. 7. 26. 08:01
반응형

Sudoku 게임에 대한 기본 로직 구현하기 

 

C# 파일을 하나 생성하고 이름은 Board 라고 변경하고 시작한다. 

project > C # script 생성

파일을 생성하면 디폴트로 다음과 같은 코드가 생성되어 있지만 Start() 만 남기고 나머지는 모두 삭제한다. 

 

기본적으로 스토쿠의 경우 9*9 배열을 사용한다. 그래서 9*9 에 대한 기본값을 생성하는 배열을 만들어준다. 

 

solvedGrid : 스도쿠의 기본값을 저장하는 배열

s : 디버깅을 위한 임시 저장 스트링

 

InitGrid() : 9*9 배열을 값을 생성하는 함수 

 

그리고 일단 화면을 생성해둔다. (현재는 아무런 기능이 없는 그냥 화면만 출력한다.) 

 

디버깅을 위해서 Inspector 에 이름을 Board 로 설정하고 조금전에 작성한 코드가 있는 Board(script) 를 선택해준다. 

 

이제 InitGrid()를 실행해주기 위해서 Start() 에 작성한 함수를 추가한다. 

 

이제 상단의 플레이 버튼을 누르면 코드가 실행되고 console 에서 출력한 값을 확인할수 있다. 

다음은 디버그 함수에 대해서 작성해 본다. 여기서 디버그 함수란 위에서 생성된 grid 에 대한 값을 출력해 보는 함수이다. 

그리고 play 버튼을 누르면 console 창에 grid의 값이 출력된다. 

출력값에 separator를 넣어서 보기 좋게 코드를 수정해보자. 

 

 

그러면 console 의 값을 쉽게 확인할수 있다. 

 

ShuffleGrid : 

 

현재의 그리드 값을 보면 일정한 패턴으로 값이 표시되는 것을 볼수 있다. 이를 불규칙적으로 표시하기 위해서 값을 섞는 작업을 해주어야 한다. 

 

- ShuffleGrid() 

참고로 Random 에 대해서 다음과 같은 에러가 발생하면, 어떤 라이브러리를 사용할지 명시해 주면된다. 

- MixTwoGridCells() : 

두개의 셀을 값을 확인하고 서로 교환하는 함수이다. shuffleGrid 함수에서 랜덤으로 받은 값은 두개값을 이용해서 이와 매칭되는 두개의 셀을 서로 교환하는 것이다. 따라서 shuffleGrid 에서 몇번 mix 하느냐에 따라 값이 최초 그리드의 값이 복잡하게 변경되는 것이다. 

 

 

이제, shuffleGrid 와 mixTwoGridCells 함수를 이용해서 grid 를 변경해 보자. 

 

 

작성한 함수를 shuffleGrid 함수를 실행하기 위해서 Start() 에 추가한다. 

실행할 결과를 확인해 보자.  테스트를 위해서 shufflegrid 를 한번만 실행하도록 한다. 

테스트 결과, 모든 9&5 의 위치가 변경된 것을 확인할 수 있다. 만일 shuffleGrid 를 여러번 실행한다면 더 불규칙적인 grid 를 구현할수 있다. 

 

** 여러번 shuffle 해보니 숫자는 변경되는데, 패턴이 변경되지는 않는다. 이 방법을 해결하기 위해서는 다른 알고리즘 적용이 필요해 보인다. 이 포스팅의 목적이 스도쿠 개발이 아니라 Unity 공부의 목적이므로 여기까지하고 다음 단계로 넘어감. ***

 

이제 스도쿠게임을 위해서 grid의 숫자를 숨겨서 riddleGrid 를 만들어 봅니다. 

- riddleGrid : 숫자가 숨겨진 grid 

- piecesToErase : 그리드에서 몇개의 숫자를 숨길지 결정( 난이도 조절) 

 

 

 

그리고 다시 실행해보면, 출력된 grid 에 0 로 표시된 cells 을 확인할수 있다. 나중에 이부분이 스도쿠 게임에서 삭제된 영역이 된다. 

여기까지 하면 스도쿠 게임을 위한 준비작업이 완료된 것이다. 다음 포스팅에서는 board design에 대해서 해볼 예정이다. 

 

끝. 

 

댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함