连连看外挂——人生真是寂寞如雪啊
人生真是寂寞如雪啊。。。
思路是找到棋盘位置->读取棋盘数据->计算可消除的格子->向窗口发送鼠标点击消息
Tip:可以点击练习来进行单人游戏。
找棋盘位置
找棋盘位置本来想下rand或者消息。。。结果断不了。。。只能用最简单的CE了。。。 跟金山游侠一样哦,选一个进程,然后搜索内存~ 预测棋盘应该是一个数组,就用棋盘最左上角的那个位置做参照,预测有东西应该是非0,没有应该大于0。
利用CE不断搜索,没搜一次再点练习更新一次棋盘 经过试验value type是byte哦 最后找到棋盘地址如下,这是x64的,x86的要再找下。。
读取棋盘数据
读棋盘数据首先要获得进程pid,可以通过Findwindow先找到窗口句柄,然后再GetWindowThreadProcessId找到pid。 最后ReadProcessMemory把棋盘数据读到数组里就好了。棋盘大小是11*19
|
|
计算可消除的格子
棋盘数据已经存在11*19的数组里了,0代表空格,非零的情况对应的号码代表一个块,同号码代表同块 我是用一个深搜,先将棋盘外围填上一个边界值-1,代表到边界。
|
|
之后从棋盘左上角开始遍历,判断每一个方块是否可以被消除。判断是否可以被消除的函数为bCheck()
|
|
下面是关键的bCheck,采用深搜。依次向上下左右递归搜索。
|
|
向窗口发送鼠标点击消息
用PostMessage就搞定啦。
|
|
这边要注意发送的坐标信息要我们自己去收集,可以用VS自带的Spy++,找到每个格子的长宽以及左上角格子的坐标。
完整代码
添加了热键什么的