先放一张游戏截图:

实现功能:
1、两种模式,普通数独和锯齿数独
2、不使用题库,数字及锯齿均纯随机生成,有且仅有唯一解。
3、难度控制。
4、生成时间控制在1s内(ipad mini2)

一、生成普通数独。
1、随机对某行生成1-9的排列(普通数独),使用DLX算法求出一组解。
2、挖洞求唯一数独。在成型的数独上挖一些洞检测是否有唯一解。 对于不同的难度采取不同的贪心思路。

    do{//下个没有访问过的节点Point p;cnt = 0;do        {cnt ++;p = getNextPoint(level, startX, startY);}while (vis[p.x][p.y] && cnt < 50);startX = p.x;startY = p.y;
//        if (level == 1 ){while (startX == originX && startY == originY){cnt = 0;do {cnt ++;p = getNextPoint(level, startX, startY);}while (vis[p.x][p.y] && cnt < 50);startX = p.x;startY = p.y;}}if (vis[p.x][p.y])break;vis[p.x][p.y] = 1;//挖洞tmp[p.x][p.y] = 0;DLXHelper *dlx = new DLXHelper();if (dlx->getAnswerCount(tmp) > 1) //多解恢复{tmp[p.x][p.y] = sudo[p.x][p.y];}free(dlx);wnf = getDifficulty(tmp);}while( getLevel(wnf) != level &&(startX != originX || startY != originY));

注意:1.挖洞nextpoint的选择方法,对于低等级的直接随机就好(让洞看起来更随机),对于高等级的一般采取间隔式随机挖洞,等级越高挖洞的间距约小(不然很快就挖不了了)。
2.难度的计算。主要思路是计算每个空位需要考虑的次数/所有可能的填法。 当然你也可以再加一些限制,比如高难度情况下每行不允许出现几个以上的数字等。
3.跳出条件。两种情况:要么难度超过了,要么nextpoint多次取到访问过的点,我们可以认为已经没有洞可挖了。

添加ui,普通数独差不多就可以完成了,不足的是毕竟随机性,很难生成特别高难度的情况。

锯齿数独 cocos2d-x 开发 (二)

锯齿数独 cocos2d-x 开发 (一)相关推荐

  1. 锯齿数独 cocos2d-x 开发 (二)

    锯齿数独 cocos2d-x 开发 (一) 二.锯齿的生成 1.9*9的格子划分成9个随机形状的连通块. 这里采用了bfs + 并查集的算法. 在bfs生成连通块的同时,检测整个图所有的联通分量, 一 ...

  2. [转]cocos2d游戏开发,常用工具集合

    cocos2d游戏开发,常用工具集合 原文地址:http://www.cocoachina.com/bbs/read.php?tid-68951.html 位图字体工具Bitmap Font Tool ...

  3. 9*9数独游戏C++开发

    9*9数独游戏C++开发 前言 游戏介绍 设计思路 算法实现 文字界面 总结 遇到的问题 前言   这一段时间学了不少东西,想找个项目历练一下,就去牛客上翻了翻,看到这个我小时候经常玩的游戏,就想开发 ...

  4. HDU-4069___Squiggly Sudoku —— 锯齿数独 + BFS

    题目链接:点我啊╭(╯^╰)╮ 题目大意: 给你一个锯齿数独的图,每个凹凸形状的宫的上下左右边界以及格子里的数字都给出相应的计算规则,要你求这个数独的唯一解,或者输出 000 解或多解 解题思路: 数 ...

  5. Cocos2d游戏开发之如何解包获得pvr.ccz中的美术资源

    Cocos2d游戏开发之如何解包获得pvr.ccz中的美术资源 在大部分时候,Cocos2d游戏会将美术资源打包以减轻性能要求,提高加载速度.而如果我们需要获得其中的美术资源,就得解包.这里以plis ...

  6. 初学者开发iOS游戏的入门必备用书——iOS 5 cocos2d游戏开发实战(第2版)

    如果想接触iOS游戏开发,今天笔者就推荐一本"大杀器"--<iOS 5 cocos2d游戏开发实战(第2版)>(当当链接) 为零基础的"设想过自己写个电脑游戏 ...

  7. 【Cocos2d游戏开发之九】CCSpriteBatchNode与pvr.ccz,plist精灵优化及注意事项

    前几节由于时间紧张,只是将一些遇到的问题拿出来进行分享经验,那么今天抽空写一篇常用的精灵以及精灵常用和注意的一些知识:那么由于cocos2d教程基本很完善,那么今天Himi介绍一些注意点和细节点分享大 ...

  8. iOS 5 cocos2d游戏开发实战(第2版)

    <iOS 5 cocos2d游戏开发实战(第2版)> 基本信息 作者: [美]Steffen Itterheim Andreas Low [作译者介绍] 译者: 同济大学苹果俱乐部 丛书名 ...

  9. 翻译:如何用Cocos2d来开发简单的IPhone游戏教程

    这一周接触到Cocos2D开发,在它的官网上看到Ray Wenderlic写的关于cocos2d开发的文章,感觉写的挺好,翻译了一下.  原文链接地址大家可以在上面看到作者的更多内容 初次翻译文章,望 ...

最新文章

  1. 【[SCOI2010]序列操作】
  2. 写入位置 0x00000004 时发生访问冲突_HDFS读取和写入数据简介
  3. Python中’__main__’模块的作用
  4. VS2010安装HTML5插件
  5. ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单编程
  6. 20165313 《Java程序设计》第七周学习总结
  7. react api_使用Java EE 8中的React式API加速服务
  8. linux c 编程手册,Linux C/C++编程手册查阅方法
  9. 进程串行变并行linux,linux进程简述
  10. 离开小米后 周受资将加入字节跳动担任CFO
  11. 2010年3月份第二周51aspx发布源码
  12. Hyperledger Fabric的工作流程
  13. c++模板函数实例化的偏序机制
  14. 《C语言》2022山西专升本C语言知识点
  15. 转型微服务架构完整实施方案
  16. 华为MateBook电脑连接蓝牙鼠标使用失灵解决方法
  17. 计算机怎么取消脱敏设置,脸过敏如何治疗 脸部快速脱敏的妙招
  18. 弘辽科技跨境电商创业不得不知的6个问题,第一,哪些人适合,有哪些门槛
  19. Python基础01
  20. MTD,文件系统,存储器分区的个人理解

热门文章

  1. GBDT模型及案例(Python)
  2. 面试百度新浪头条b站阿里的研发实习生面试记录
  3. cocos creator 2.43 使用 BMFont文字会变黑块,drawCall飙升
  4. ANSYS Products 2020 R1 Linux64版本安装
  5. 信息学奥赛C++编程:奥运奖牌计数
  6. 合肥工业大学2021汇编语言程序设计上机实验一
  7. Linux基础--存储管理(逻辑卷lvm,swap交换分区,mount,raid磁盘阵列)
  8. 遥感目标检测数据集汇总
  9. c语言递归法1 2 n,递归法_C语言递归法_递归算法经典实例(2)
  10. 面向监狱编程 - 石胖子写网游外挂 (2) 加密和解密