牛角棋及其它
2011 4 30 04:00 PM 4928次查看
为了能够把亚马逊棋里面的代码尽可能多的得到复用,牛角棋数据结构的设计基本和亚马逊棋类似,分别是 state(棋盘),moves(走法),node_data(搜索树的节点)。由于牛角棋的规则比较简单,相对走法列表也直接写在了一个预置表里面。下面是程序中的主要函数:
void init(state &player);//初始化棋盘
void showBoard(state player,HDC hdc,HPEN hPen, COLORREF color,HPEN redPen,HPEN bluePen);
//显示棋盘,调用了WINAPI,第一次用(鄙视我吧=。=)
void makeMove(state &player,moves move);//走棋
void unMakeMove(state &player,moves move);//悔棋,这个写了但没有用=。=
moves isMoveLeg(state player,string from,string to);//判断走法是否合法,用于人工输入走法时使用
int isGameOver(state player);//判断游戏是否结束,并返回胜负情况
int readMoves(state player,moves movelist[6]);//根据预置表获得所有可行走法
int simulation(state player);//随机走一局棋
void randMove(state &player);//MonteCarlo+UCT,完全套用亚马逊棋的搜索引擎
void copyState(state player,state &tplayer);//复制局面
第一次接触机器博弈是大二下学期的时候,机缘巧合下进了实验室,跟着长明同学(其实应该叫徐老师/老板=。=)你折腾亚马逊棋,虽然说你当时主要在弄六子棋(那个才是你的本行嘛~),不过那个段时间还是受益良多的,尤其是在对文献的阅读方面。不过也因为那时候看的开源代码都是C写的...直接导致现在写东西都不习惯写类了.你一直让我写个关于亚马逊棋的文档,可是我一直没有动笔(你心里一定是想说,丫的,叫你做点事都不做!)。现在想到7月份就要选导师选毕设的课题了....难道我要跟着你一路机器博弈到底了....唉~
牛角棋的代码我传到skyDrive了,有兴趣的同学可以自己拖下来。

想说点什么呢?
您需要登录您的Google账号才能进行评论。
0条评论 你不想来一发么↓