Tôi có một trò chơi Sudoku bán chạy nhất trên cửa hàng ứng dụng iOS. Đây là cách tôi tạo ra các câu đố.
Đầu tiên tôi có một ứng dụng tạo câu đố. Nhưng nó không phải là một phần của mã trò chơi. Đây là một ứng dụng độc lập mà tôi sử dụng để tạo câu đố. Nó được sửa đổi cao để tôi có thể thiết lập nó để tạo các kiểu mẫu khác nhau, xếp hạng độ khó, số lượng quà tặng, v.v. Tạo câu đố và nhận mức độ khó nhất quán rất khó thực hiện và mất nhiều thời gian hơn người chơi muốn chờ. Vì vậy, tôi tạo ra cái mà tôi gọi là "câu đố hạt giống" và đó là những gì được sử dụng bởi mã của trò chơi để tạo ra các câu đố mà mọi người chơi.
Tôi không trả lời làm thế nào để mã hóa một trình tạo ở đây. Bạn có thể google và tìm hàng tấn mã trình tạo câu đố trực tuyến. Bắt đầu từ đó Nhưng để làm nên một game hay, bạn cần tạo ra một game hay. Trò chơi của tôi không tạo ra các câu đố khi đang bay.
Cách ứng dụng trình tạo câu đố của tôi hoạt động là nó tạo ra hàng ngàn câu đố mỗi phút, nhưng chúng không tốt và tất cả chúng đều không phù hợp với mức độ khó cụ thể. Trình tạo sẽ tạo ra một câu đố, sau đó giải nó và tìm ra một mức độ khó và đánh giá câu đố dựa trên các kỹ thuật cần thiết để giải câu đố và xác định xem có cần phải đoán để giải nó không (thường là xấu). Nó ném ra bất kỳ câu đố không phù hợp với một tiêu chí. Đối với các câu đố khó nhưng không phải là không thể, trên một máy nhanh, có thể mất một giờ để tạo ra 100 câu đố phù hợp với thông số kỹ thuật chính xác của tôi. Đây là lý do tại sao tôi không làm điều này trong ứng dụng. Tạo các câu đố nhanh chóng với các thông số kỹ thuật khó khăn đó sẽ không hoạt động cho chất lượng của các câu đố mà tôi có trong ứng dụng của mình.
Các câu đố là các chuỗi, dài 162 ký tự, 81 ký tự có số và dấu gạch ngang hoặc dấu chấm nơi các khoảng trống sẽ xuất hiện, sau đó là 81 ký tự khác với lời giải. Sau đó, các cột cho từng chỉ số, như có bao nhiêu đơn, đôi, v.v.
Đầu ra của tôi từ tất cả các phiên tạo là các dòng được phân cách bằng dấu phẩy với các số liệu thống kê dưới dạng cột. Tôi có thể mất 10.000 câu đố, đưa chúng vào excel và sắp xếp chúng theo độ khó. Sau đó đưa chúng vào một ứng dụng để xem chúng trên bảng trò chơi. Tôi cũng nhìn vào chúng để thu hút thị giác và các mẫu có thể nhìn thấy cho câu đố. Sau đó tôi tự tay chọn từ những thứ đó.
Tôi gọi chúng là những câu đố hạt giống và đây là những gì tôi muốn nói. Những con số trong một trò chơi sudoku thực sự chỉ là mã thông báo. Thay vì là các số 1-9, chúng có thể là màu sắc hoặc ký hiệu hoặc chữ cái. Vì vậy, câu đố hạt giống của tôi không phải là số họ là những chữ cái ai. Mỗi câu đố hạt giống được thay đổi nhanh chóng để tạo ra một câu đố có thể chơi được:
- Chọn ngẫu nhiên các số / mã thông báo. Khi tôi biến các chữ cái trở lại thành các số 1-9, bảng tra cứu được chọn ngẫu nhiên. Có nghĩa là không phải lúc nào cũng 1. Điều đó một mình tạo ra khoảng 300.000 biến thể trên mỗi câu đố.
- Xoay câu đố 90, 180 hoặc 270 độ. Điều đó thêm 4 biến thể.
- Lật câu đố theo chiều ngang, chiều dọc hoặc cả hai. Điều đó thêm 4 biến thể.
Mỗi câu đố hạt giống do đó có thể tạo ra 5.806.080 biến thể. Tôi đã thử nghiệm điều này trong lĩnh vực này với những người chơi thực sự. Mọi người không biết rằng về cơ bản họ đang chơi cùng một câu đố. Thật sự là không thể. Chỉ khi họ nhận thấy rằng mẫu của các givens giống nhau mỗi lần. Nhưng với 100 hạt giống khác nhau, sẽ không có ai chú ý. Một triệu người dùng trò chơi của tôi chưa. Tôi cũng đã thử nó với các ứng dụng giải. Một ứng dụng giải sẽ không giải được câu đố theo cách tương tự khi nó bị xoay hoặc lật. Nó thậm chí đôi khi sẽ phân tích nó như một đánh giá độ khó khác nhau mặc dù về mặt kỹ thuật đó là cùng một câu đố.
Tuy nhiên, Big Bad Sudoku Book có 10 trong số 1000 câu đố hạt giống ở 5 cấp độ khó và nhiều kiểu câu đố. Điều này có nghĩa là có hàng tỷ câu đố trong trò chơi của tôi. Với mỗi 10.000 câu đố hạt giống, có 58.060.800.000 câu đố khác nhau.
Trong Sudoku Book phiên bản 4 (dự kiến ra mắt năm 2016), tôi đã tìm ra một cách để có thể chỉ định một câu đố chính xác trong số 58 tỷ đó và có được câu đố tương tự trên mỗi thiết bị của người chơi.