专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅
如前所述,算法层的实现,不外乎两种操作:1。如果一个方块的数值等于周围未挖开的方块数目,则把周围所有方块标记为雷;2。如果一个方块的数值等于周围已经标记为雷的方块个数,则在该块上同时单击左右键。实际上,这只是最简单的两种判断(简单到甚至不该称之为“判断”,而只是例行公事而已),而比这更复杂的分析判断还可以有很多,但现在我们追求的是程序的简单易懂,而且,就这两种最简单的判断,已经可以达到很好的效果了,在实际中它们绝对占到了扫雷所用时间的一大多半。更高级的判断,在扫雷外挂的0.2版本里也已经实现了,但在此处若要加以叙述,不免还要大幅增加 [阅读全文] [PDF]
不得不说,捕获“扫雷”窗口以及取得它的数据,是本程序的一个难点。现在这个难点已经解决,接下来,完成接口层已经不是问题了。那么,来看接口层的两个核心过程:=================================================================//取得整个雷区每个方块的状态,填入Cells中供分析。procedure FetchCells;var i, j: Integer;begin //扫描每个方块,根据指定像素的颜色判断该方块的性质。 //特定像素的颜色与方块性质的对应关系归纳自“扫雷”程 [阅读全文] [PDF]
有了前述的数据,编写接口层似乎已经不成问题了。现在来构思一下程序运行的过程。说句实话,那种对于某种变化实时作出响应的程序,一般都用什么方法编成,本人并不很了解,推测无非是两种思想,一种是用一个线程不断地对这个变化进行检查,发现改变则动作;另一种是注册一个类似于钩子的东西,用回调函数来处理。无疑第二种方式要更节省系统资源,只是难在本人对Windows的钩子掌握的还一塌糊涂。若换了个高手,无疑应该用这种方式,而我却只有望着Spy++中迅速滚动的消息发呆的份。也许等我学好了钩子之后,会写个0.2版,而在0.1版中我已经决定了使用丑陋的反复 [阅读全文] [PDF]
如上述,本程序分为了接口层和算法层。上述全局变量和常量,基本都属于接口层的内容。下面,来看接口层的具体实现。其工作的第一步,是要捕获扫雷窗口并取得其信息。这由函数GetMineWindow来完成:=================================================================//试图取得可用的扫雷窗口,返回值表示是否成功。若成功,则全局变量//MineWnd、MineDC、AreaHeight、AreaWidth都得到相应的填充。若失败,则以上变量的值无意义。function Get [阅读全文] [PDF]
文/jorge其实我不玩网络游戏的,所以对于外挂类程序也没什么好或坏的感觉,甚至平时基本不会想到这个概念。这个实验项目一开始称为“扫雷助手”,而究其技术含量,与现在真正实用的游戏外挂程序也没有可比性。设计它的意义,无非在于对某些Windows API的的进一步熟悉,使从未涉足过此领域的新手(当初的我自己)能够揭开某些“神秘的面纱”。之所以选择“扫雷”这个最经典的小游戏进行hack,一方面,使这个项目更贴近生活,更容易被理解,另一方面也可以最大化本人的成就感^_^,毕竟,在新手中,对扫雷的hack的探索似乎从来都没有停止过,从早期的修 [阅读全文] [PDF]
1 共5条 分1页