zoukankan      html  css  js  c++  java
  • 连连看 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也不会,所以这个游戏只能做到这了,虽然很简陋,但是也算对得起一下午+一晚上的努力了。

  • 相关阅读:
    Ubuntu 13.10 x64 安装 Eclipse Android SDK Java开发IDE
    域名 TTL 查询
    mysql 常用设置:字符集编码、自动完成(自动提示)、监听外网ip
    PHP 设置:timezone、error_log
    数字发行:电子书、电影、游戏、音乐
    细节:php array会把string key自动转成int吗?
    REST URI设计:版本号放在http header中,rewrite配置
    Linux时区设置
    Linux添加sudo用户
    php curl常见错误:SSL错误、bool(false)
  • 原文地址:https://www.cnblogs.com/lvpengms/p/1690156.html
Copyright © 2011-2022 走看看