谁能给我发一个qq象棋辅助的外挂,能用的

基于VC开发的一个象棋外挂——象棋军师
棋类外挂,如果在不修改游戏的情况下,无疑都是读取棋盘信息,之后调用智能引擎思考,之后自动帮助行动棋子的一类软件。
本外挂行棋的动作,对于本身而言,一般的流程是:读取棋盘的棋子信息——&调用智能引擎思考——&操作棋盘的棋子,大体分就这三个步骤。下面分别细说明开发的方法。
1&读取棋盘的棋子信息
要读取棋盘的信息,方法有1)读取内存,2)屏幕取图分析。
1),读取内存的办法,由于操作的是其他进程,不得不对人家的游戏进行逆向分析(或者内存数据分析出棋盘信息的基址),这个方法比较麻烦,而且游戏如果升级之后,内存基址也很可能变化了,同时,每支持一款游戏,就得分析一个程序。这个方法通性不好。
2),屏幕取图分析的方法,该方法通用性比较好,只要能够抓去到棋盘窗口,都可以分析出棋盘的信息。和程序,版本都无关。本程序就是采用了屏幕取图分析的办法。
本文也是对取图分析棋盘做详细的说明。
取图分析出棋盘,对于程序来说也就是要分析出棋盘的每个子的位置信息,如下图。
如果给出图1&这样一张图片给外挂程序,而没有给出任何的信息,估计外挂是不可能知道当前局面的各个棋子的位置的(就算加入文字识别,估计也不太好完整识别出位置)。所以,在能够分析一个局面之前,程序要有一次刻录(也就是在棋子没有任何移动的情况下刻录)。
程序刻录棋盘时候,可能得到的是图2这样的一个窗口图片,如果能够定位到棋盘左上角的位置(该图为黑车的中心位置)和每个小格子的框度和高度,就好办了。就可以从图片中读取定位到棋盘的任何位置了。比如棋盘左上角的位置为(nOffsetX,&nOffsetY),格子的大小为(nCellW,nCellH),大多数情况下nCellW&和&nCellH是相等的。那么,帅的位置就可以得到为(nOffsetX&+&nCellW&*&4,&nOffsetY+&nCellH&*&9)了。之前写过一个文章,是通过棋盘图片读取到&四元组(nOffsetX,&nOffsetY,nCellW,nCellH)的,文章的连接是:&&。本文假定已经确定了四元组(nOffsetX,&nOffsetY,nCellW,nCellH)的值了。
中国象棋的棋子的类别一个有14个,分别为红的车、马、炮、相、仕、兵、帅和黑的车、马、炮、象、士、卒、将。所以,可以通过数组&DWORD&g_dwColor[15]&来记录每个棋子在棋盘的颜色值作为棋子的Key,用15个的原因是用g_dwColor[0]表示没有棋子。由于初始化时候,每个棋子的位置是已知的,所以就可以对各个棋子进行初始化了。比如,g_dwColor[1]表示帅的棋子在棋盘的Color&Key。他的该值的初始化为:在帅(4,9)的位置(nOffsetX&+&nCellW&*&4,&nOffsetY+&nCellH&*&9)的附近取几个点的颜色值相之和,其他的棋子也取对应的位置的颜色key,如黑车(0,0)、黑马(1,0)等。本程序取的是13给点,点的分布如下:
//&说明,取13个点,点距为&4
&&&&&&&·&
&&&&·&·&·&·&·&
&&&&&&&·&·&·
&&&&&&&&&&·
&DWORD&CChessHelperDlg::GetDcDate(int&xCell,&int&yCell,&&HDC&hdc)
&&&&int&x&=&int((float)g_cInfo.nOffsetX&+&(float)xCell&*&(float)m_nCellW);
int&y&=&(int)((float)g_cInfo.nOffsetY&+&(float)yCell&*&(float)m_nCellH);
&&&&DWORD&dwColor&=&0;&&&&
&&&&POINT&pt[13]&=&{&0&};&
pt[6].x&=&x;&&pt[6].y&=&y;
//&其他点的初始化&略
&&&&DWORD&color&=&0;
&&&&for&(int&i&=&0;&i&&&_countof(pt);&i++)&{&
&&&&&&&&color&=&::GetPixel(hdc,&pt[i].x,&pt[i].y);&
&&&&&&&&dwColor&+=&(color&&&0xffffff);
&&&&return&dwC
&&&&按照自己定义的规则,每个g_dwColor&对应一个棋子的key。
&&&&四元组(nOffsetX,&nOffsetY,nCellW,nCellH)&和&g_dwColor[15]&在程序开始的时候,对棋盘做一次刻录,就可以得到了。
有了四元组(nOffsetX,&nOffsetY,nCellW,nCellH)&和DWORD&g_dwColor[15],那么程序就可以识别&图1&的棋局了。比如,&从(nOffsetX,&nOffsetY)到(nOffsetX&+nCellW&*&8,&nOffsetY&+&nCellH&*&9)着9
* 10个位置&进行扫描取点的颜色值GetDcDate(),记录到DWORD&nChessCurrentColor[10][9]中,如果nChessCurrentColor[i][j]&和&g_dwColor[n]相等,那么(i&,j&)位置的棋子就是n&了。比如和g_dwColor[2]相等,如果g_dwColor[2]&是红车的颜色值,那么可以知道这个位置是个红车了,如果不在g_dwColor[n]列表的,可以认为这位置没有棋子。从而,能够得到nChessKey[10][9],这就是想要的棋局数据了。
&&&&2&用智能引擎思考
从1中得到棋局的数据nChessKey[10][9],便可以调用智能引擎,获取最好的着法了。可以自己实现一个智能引擎,也可以调用第三方的引擎。本程序调用了象棋旋风的智能引擎,因为觉得这个引擎太牛逼了,自己实现的引擎估计也还是菜鸟级别的,不适合用在外挂,旋风的引擎达到了大师的水平,用在外挂较好。好像有个叫什么象棋咪兔的,用的也是象棋旋风作为智能引擎。
调用象棋旋风的引擎不难,该引擎用的就是()协议。一个初始状态的棋局的在ucci中表示为:fen
rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR
,该协议的说明可以到去查看。
,和智能引擎通讯,把棋局信息发送给支持引擎和获取智能引擎返回的结果,采取的是。&创建进程的时候,指定PROCESS_INFORMATION&的信息只可。创建两个匿名单向管道作为读写输入输出信息到PROCESS_INFORMATION中,如下:
&&&&if&(!CreatePipe(&m_hRead1,&&m_hWrite1,&&g_sa,&0))&{
&&&&&&&&return&false;
&&&&if&(!CreatePipe(&m_hRead2,&&m_hWrite2,&&g_sa,&0))&{
&&&&&&&&return&false;
&&&&STARTUPINFOA&si&=&{&0&};
&&&&PROCESS_INFORMATION&pi&=&{&0&};
&&&&si.cb&=&sizeof(si);
&&&&si.dwFlags&=&STARTF_USESHOWWINDOW&|&STARTF_USESTDHANDLES;
&&&&si.hStdInput&=&m_hRead2;
&&&&si.hStdOutput&=&m_hWrite1;
&&&&si.hStdError&=&m_hWrite1;
&&&&char&szPath[512]&=&{&0&};
&&&&::GetModuleFileNameA(NULL,&szPath,&_countof(szPath));
&&&&char&*pName&=&strrchr(szPath,&'\\');
&&&&if&(pName&!=&NULL)&{
&&&&&&&&pName[0]&=&'\0';
&&&&char&szDir[512]&=&{&0&};
&&&&strcpy(szDir,&szPath);
&&&&strcat_s(szPath,&_countof(szPath),&"\\Engine\\cyclone.exe");
if&(!::CreateProcessA(NULL,&szPath,&NULL,&NULL,&1,&0x10,&NULL,&szDir,&&si,&&pi))&&&&&
&&&&&&&&return&false;
这样,就可以按照UCCI协议,把象棋棋局信息写到m_hWrite2中,并且从m_hRead1中读取引擎返回的结果了。返回的结果也是安装ucci协议的。引擎最有招法输出格式为类似:bestmove&h2e2&ponder&h9g7,而h2e2就是引擎返回的最优的着法。
这样就可以获取到最有的象棋招法了。
3&操作棋盘的棋子
操作棋盘的棋子,这个是最容易的事情了。由于之前获取&四元组(nOffsetX,&nOffsetY,nCellW,nCellH),而引擎返回的就是信息(h2e2)就是位置值。按照ucci协议&将h2e2转换成棋盘的位置即可。如果以左上角为坐标原点(0,0),右下为正方向,那么h2e2的意思就是(7,7)-&(7,4)了。也就是说7,7&这个位置的棋子遇到到7,4&位置(如果是开局时,为红方开局时候的炮二平五)。
得到(7,7)-&(7,4)&,那么四元组(nOffsetX,&nOffsetY,nCellW,nCellH),就可以计算棋盘窗口要行子的位置了。应当点击棋盘的棋子的位置(nOffsetX&+&nCellW&*&7,nOffsetY&+&nCellH&*&7)到(nOffsetX&+&nCellW&*&7,nOffsetY&+&nCellH&*&4)。可以通过模拟鼠标点击事件来完成。
实现鼠标点击,用到mouse_event函数即可。比如要实现一个鼠标点击(x&y)的位置,那么
&&&::SetCursorPos(nPosX,nPosY);
&&&&mouse_event(MOUSEEVENTF_LEFTDOWN,&0,&0,&0,&0);&&&
mouse_event(MOUSEEVENTF_LEFTUP,&0,&0,&0,&0);
上面,要实现行子,则先后实现点击(7,7),(7,4)两个点的点击。计算出对应的位置,然后mouse_event&一个MOUSEEVENTF_LEFTDOWN&和MOUSEEVENTF_LEFTUP即可。
附上象棋军师的界面
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。qq象棋嘻嘻作弊器助手最新版
v1.2 绿色版
/ QQ辅助 /
/ QQ软件 /
/ QQ游戏 /
qq象棋嘻嘻作弊器助手可以自动帮您下QQ象棋,内置旋风四代比赛版引擎,棋力强大点击“单步”按钮,软件会为您选择最佳的一步着法,点击“自动”按钮,软件会为您下完整盘棋有自动准备、自动确认、自动加入功能,实现完全无人挂机刷分开局库支持自定义。
qq象棋嘻嘻作弊器助手最新版
v1.2 绿色版
/ 1.30MB /
/ 11.36MB / 简体中文 / 3.00MB / 简体中文 / 1.16MB / 简体中文 / 4.00MB / 简体中文 / 551KB / 简体中文 / 10KB / 简体中文 / 4KB / 简体中文 / 697KB / 简体中文 / 891KB / 简体中文
本类推荐下载
下载帮助网侠软件站软件均来自互联网, 如有侵犯您的版权, 请点击网站底部在线QQ进行联系。
1.网侠软件站所有软件和游戏都经过严格安装检测,保证不会有任何病毒木马等信息,请大家放心使用;
2.大家在安装软件的时候注意每个步骤,注意包含安装插件信息,推荐使用下载本站软件以获取最佳的下载速度。
3.如果您觉得网侠还不错, 以便下一次的访问.
4.网侠QQ群:应用软件交流群: 手机游戏交流:QQ游戏上的中国象棋,谁有外挂?免费的,不需要什么论坛币的,满意的话追加50分_百度知道
QQ游戏上的中国象棋,谁有外挂?免费的,不需要什么论坛币的,满意的话追加50分
有的加我QQ
提问者采纳
其实不需要外挂 你随便找一个 单机版的象棋游戏 能换象棋红黑颜色的(先后手)然后你在qq游戏上玩象棋 你在卡一个单机版的象棋 把别人的棋子走在单机版的象棋上
然后让单机版的电脑走哪步 你也在qq游戏的象棋里走哪步
你说人能下过电脑吗? 呵呵
但是总有不行的 道理很简单 你也可以以此类推 所有的在线的双人对战的棋类游戏 都可以这样
不知道你明白了么?呵呵 我为人人
提问者评价
按照你说的,真的成功了,好开心,谢谢你!
其他类似问题
qq游戏的相关知识
按默认排序
其他5条回答
这个象棋很烂的,ipad的还经常断线
我是用电脑玩啊
外挂就没意思了
我会考lu的.
楼下说的的确是一种办法,另外我推荐一个软件不错,楚汉棋缘不错
QQ游戏上的中国象棋,谁有外挂?免费的,不需要什么论坛币的,满意的话追加50分引荐用传奇狂龙辅助免费版功能有: 自动砍怪 自动捡取物品 定向野蛮 自动商铺买药 百分百喝药 移动加速等功能楼主可以搜索狂龙辅助永久免费版,应该是您想要的东西吧!!
等待您来回答
您可能关注的推广回答者:
下载知道APP
随时随地咨询
出门在外也不愁谁能给我一个推荐一个好点的象棋外挂_象棋吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:61,659贴子:
谁能给我一个推荐一个好点的象棋外挂收藏
谢谢。。。。。。
<div class="clearfix BAIDU_CLB_AD BAIDU_CLB_AD_pb" id="BAIDU_CLB_AD_">
,洪智,,,胡荣华,,柳大华等等这些外挂都好使
机器行吗?开局库残局库好不好?流行外挂一般差不了多少
登录百度帐号我的游戏推荐游戏
后查看最近玩过的游戏
已有233,939吧友中奖,实现梦想
使用签名档&&
为兴趣而生,贴吧更懂你。或}

我要回帖

更多关于 qq象棋辅助 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信