• 连连看 C++源代码 LinkingGame


    上周六没事干,忽然想写个连连看游戏,虽然自己没玩过连连看,但多少也了解一些,于是奋战了一下午,一晚上,基本上差不多了,有想要程序或源码的朋友可以给我发邮件。

    NOTE:更新,程序和源码可以从这个地址下载:下载连连看程序及源码

    ===========================================================

    游戏思路很简单,用一个数组来存贮各个图片,arrGame[][],每次单击一个图片后,就去查找是否相连。

    1.生成地图。开始初始化时,要生成一个地图,这个地图中每个元素的个数必须是偶数,这个功能是用GenerateMap()来执行的,这样可以保证每个元素都有偶数个,元素的放置是随机的。

    2.查找路径。当用户单击一个元素时,就会执行FindPath(),这个函数用来查找两个元素是否连通。如果连通,那么返回true,并连接两个元素。

    3.查找路径算法。开始想用dfs或bfs来实现,但是路径的拐角不能超过2,那么bfs,dfs可能就不好控制了,所以我选择了如下的方法:把两个点分别做xy轴的平行线,那么我们模拟另一个线来在平行线上移动。如图:


    我们只要找到一条路径,使这条路径上的点都没有元素,那么这条路径就是符合条件的,同时,我们可以在这条”红线“向上或向下移动时,去剪掉很多没用的情况,所以复杂度还是很低的。


    4.图像处理。游戏初始化时,使用CreateCompatibleDC()来创建nBitmap个hdcMem,每个hdcMem是分别存放着不同图片的相关内存hdc设备,当对应位置有元素时,便发生StretchBlt()行为,这个函数将源图像拷贝到窗口的对应位置。

    5.资源。资源就是用的魔兽争霸中Dota的物品,天然的图片资源。
    游戏截图如下:


    PS:由于自己的windows编程不是很好,DirectX也不会,所以这个游戏只能做到这了,虽然很简陋,但是也算对得起一下午+一晚上的努力了。

  • 相关阅读:
    log4j配置文件动态指定日志文件名称
    如何在natTable表格上添加双击事件
    如何让natTable表格支持自定义多个右键菜单
    java1.7集合源码阅读:ArrayList
    关于java1.7集合源码阅读
    多线程之:如何避免死锁
    idea控制台中文乱码“淇℃伅”
    独立的js文件中不能使用EL表达式取值
    不能在jsp页面<c:choose>对标签中使用<!---->进行注释
    Excel导入工具类
  • 原文地址:https://www.cnblogs.com/lvpengms/p/1690156.html
Copyright © 2020-2023  润新知