【Unity小游戏】数独(一)——前言及整体思路

前言

突发奇想打算做一个联机的数独跟朋友玩,这个系列是用来记录我制作数独的一些想法和思路,里面用到的算法可能不会是最优的。为了简化处理,我尽量不涉及联机相关的逻辑。

这种方法下数独的特点

1.生成是完全由电脑随机的,无需录入题库

2.可以设定题目难度

数独总体思路

第一步,让程序自动生成一个已经填好所有数字的数独(数独终盘)

第二步,盖住所有数字并随机打开17个格子(要使数独的结果唯一,至少要提供17个数字以上,虽然这个结论到现在也没有被证实,但各种资料公认是这个数字)

第三步,遍历每一个未打开的格子,对格子做标记,默认可以填写123456789,根据行、列、宫里已有的数字去掉标记中的数字

第三步,编写所有数独的解题方法并根据难度从易到难为每个方法编序号(这里参考的是全民数独app里面列举的解题方法,感谢全民数独app的整理)

第四步, 从第0个方法开始尝试解题,如果当前方法无法填写数据或剔除标记,那么继续尝试下一个方法,当方法序号大于设定的难度系数时,随机打开一个标记最多的格子并更新标记回到第0个方法;如果在第n个方法可以填写数据或者剔除标记,那么填写并更新标记,并回到第0个方法,以此类推...,当程序能够解完整个数独,那么已打开的格子就是数独的题目(数独初盘)

猜你喜欢

转载自blog.csdn.net/weixin_61427881/article/details/134405092