• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

程序辅助扫雷的几种方法

发布: 2007-7-01 20:40 | 作者: admin | 来源: | 查看: 112次 | 进入软件测试论坛讨论

领测软件测试网

程序辅助扫雷的几种方法
2003.9.6

我的手很笨,不怕大家笑话,挖地雷从来没有低过 140(从Windows3.1开始),所以有时候就想做个程序“辅助一下”。以下是自己想到的几种方法。

方法 1: 让程序替我们挖

先人工挖开一片“空地”,然后启动我们的程序,读扫雷程序的 Window 的界面 DC,然后进行简单的图像提取,提取出已经挖开的空地内的所有数字,设计一个算法计算哪些方块下面有地雷,以此向扫雷的 Window 发鼠标消息(左、右单击),看着扫雷的界面一块一块的展开,直到必须人工“蒙”的时候,人工干预一下。如果算法写不好可能比较慢(但比我自己挖快多了)。
前几天在清华的BBS上看到了一个人用 Java 写的这样一个程序,具体位置记不清了。

方法 2: 打开地雷图我们自己挖

启动扫雷程序后,启动我们的程序,然后做两个事情:一,把扫雷程序的 Windows 设置成透明的(Alpha值稍大于0,只能在win2k、xp上),把我们的程序做成界面与扫雷的一模一样,但不透明,然后放到扫雷程序的 Window 的后面。二,从扫雷程序的进程地址中读取内部数据,得到每个地雷的位置,然后显示在我们的程序的界面上,哈哈,是不是感觉地雷图已经打开了,我们只要狂点扫雷程序的没有地雷的地方就可以了。
CSDN 上有文章讲如何从扫雷进程中取得地图数据:

方法 3: 程序自己打开地图自己挖

我们的程序从扫雷进程中取得地图数据,然后向扫雷程序的 Window 发一堆鼠标消息(左、右单击),直接将所有地雷挖出来。估计会很快,但是不是没什么乐趣了?

方法 4: 恶作剧

我们的程序从扫雷进程中取得地图数据,然后生成地雷已经全挖开的结果界面(位图),然后直接将位图写到扫雷程序的 Window 的 DC 中,结果会怎么样?是不是如果鼠标点的话,地雷已经全挖开了,而计时器仍然在跳?

方法 5: 停止计时器

这是我实际做过的一个方法。我们的程序运行时,向系统中塞进去一个消息钩子,把扫雷程序的 Window 的 WM_TIMER 改掉,想开始计时再改回来。这样,我可以心安理得的挨个判断地雷,不用担心计时器,可是到头来却发现扫雷变成了10以内的数学判断。

方法 6: 让扫雷程序自己挖开

我们的程序运行的时候,替换掉扫雷进程的某断代码或塞进去一个钩子,结果是点击那个小黄脸的时候,地图就全挖开了。关于这个方法我只是猜想,没有实际的经验,只能估计可行。


 


延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网