iOS 앱 스토어에서 최고 판매 스도쿠 게임이 있습니다. 퍼즐을 생성 한 방법은 다음과 같습니다.
먼저 퍼즐 생성기 응용 프로그램이 있습니다. 그러나 이것은 게임 코드의 일부가 아닙니다. 퍼즐을 만드는 데 사용하는 독립형 앱입니다. 고도로 수정되어 다양한 패턴 유형, 난이도 등급, 주어진 수 등을 생성하도록 설정할 수 있습니다. 퍼즐을 생성하고 일관된 난이도를 얻는 것은 즉시 수행하기가 어렵고 플레이어가 기다릴 때보 다 더 많은 시간이 걸립니다. 그래서 저는 "시드 퍼즐"이라고하는 것을 생성합니다. 이것이 사람들이하는 퍼즐을 생성하기 위해 게임 코드에서 사용하는 것입니다.
여기에서 생성기를 코딩하는 방법에 대답하지 않습니다. Google에서 수많은 퍼즐 생성기 코드를 온라인으로 찾을 수 있습니다. 거기서 시작하십시오. 그러나 좋은 게임을 만들려면 좋은 게임을 만들어야합니다. 내 게임은 즉시 퍼즐을 생성하지 않습니다.
내 퍼즐 생성기 앱이 작동하는 방식은 분당 수천 개의 퍼즐을 생성하지만 모두 우수하지는 않으며 특정 난이도와 모두 일치하지는 않습니다. 생성기는 퍼즐을 만든 다음 퍼즐을 풀고 난이도를 파악하고 퍼즐을 해결하는 데 필요한 기술을 기반으로 퍼즐의 점수를 매기고 퍼즐을 풀기 위해 추측이 필요한지 여부를 결정합니다 (일반적으로 나쁜 경우). 기준에 맞지 않는 퍼즐을 던져 버립니다. 단단하지만 불가능하지 않은 퍼즐의 경우 빠른 기계에서 내 정확한 사양에 맞는 100 개의 퍼즐을 생성하는 데 1 시간이 걸릴 수 있습니다. 이것이 내가 앱에서 이것을하지 않는 이유입니다. 어려운 사양으로 즉시 퍼즐을 생성하는 것은 앱에있는 퍼즐의 품질에는 맞지 않습니다.
퍼즐은 문자열, 길이 162 자, 숫자와 대시 또는 점이있는 81 자, 여백이있는 81 자입니다. 그런 다음 싱글, 더블 등의 수와 같이 각 통계에 대한 열
모든 생성 세션에서 얻은 결과는 통계가 열로 쉼표로 구분 된 줄입니다. 10,000 개의 퍼즐을 가져 와서 엑셀로 가져 와서 난이도별로 정렬 해 보겠습니다. 그런 다음 게임 보드에서 볼 수 있도록 앱으로 가져옵니다. 또한 시각적 호소력과 퍼즐의 시각적 패턴을 살펴 봅니다. 그런 다음 그 중에서 손을 선택합니다.
나는 그들을 씨앗 퍼즐이라고 부르며 여기에 내가 의미하는 바가 있습니다. 스도쿠 게임의 숫자는 실제로 토큰입니다. 숫자 1-9 대신 색상이나 기호 또는 문자가 될 수 있습니다. 내 씨앗 퍼즐은 숫자가 아니고 문자 ai입니다. 각 시드 퍼즐은 즉시 변경되어 재생 가능한 퍼즐을 만듭니다.
- 숫자 / 토큰을 랜덤 화하십시오. 문자 ai를 숫자 1-9로 다시 돌리면 조회 테이블이 무작위로 지정됩니다. 그 의미는 항상 1이 아닙니다. 그 자체만으로도 각 퍼즐마다 약 300,000 개의 변형이 만들어집니다.
- 퍼즐을 90도, 180도 또는 270도 회전시킵니다. 4 가지 변형이 더 추가됩니다.
- 퍼즐을 수평, 수직 또는 둘 다 퍼트십시오. 4 가지 변형이 더 추가됩니다.
따라서 각 시드 퍼즐은 5,806,080 개의 변형을 만들 수 있습니다. 나는 실제 플레이어와 함께 현장에서 이것을 테스트했습니다. 사람들은 자신들이 본질적으로 같은 퍼즐을하고 있다는 것을 모른다. 실제로 불가능합니다. 그들이 주어진 패턴이 매번 동일하다는 것을 알게 될 경우에만. 그러나 100 가지의 다른 씨앗조차도 아무도 알아 채지 못할 것입니다. 내 게임의 백만 명의 사용자가하지 않았습니다. 또한 솔버 앱으로 테스트했습니다. 솔버 앱은 퍼즐이 회전하거나 퍼 졌을 때와 같은 방식으로 퍼즐을 풀지 않습니다. 기술적으로 동일한 퍼즐이지만 때로는 다른 난이도로 평가하기도합니다.
그러나 Big Bad Sudoku Book에는 5 가지 난이도 레벨에서 1000 개의 시드 퍼즐 10 개와 여러 퍼즐 패턴 유형이 있습니다. 이것은 내 게임에 수십억 개의 퍼즐이 있음을 의미합니다. 10,000 개의 시드 퍼즐마다 58,060,800,000 개의 서로 다른 퍼즐이 있습니다.
Sudoku Book 버전 4 (2016으로 인해)에서 나는 580 억 개의 퍼즐 중에서 정확한 퍼즐을 지정하고 각 플레이어의 장치에서 동일한 퍼즐을 얻을 수있는 방법을 알아 냈습니다.