牛角棋及其它

分类:C/C++ 标签:人工智能, 机器博弈

依然是写得比较顺手的控制台程序,虽然说是VC写的,但除了getline,cout之类的函数,更像是一个C程序,毕竟没有构造一个类,只有一堆结构体和函数。这基本已经是习惯了..貌似不太好=。=正经写C++的程序也就是当初的那个课程设计。
        为了能够把亚马逊棋里面的代码尽可能多的得到复用,牛角棋数据结构的设计基本和亚马逊棋类似,分别是 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了,有兴趣的同学可以自己拖下来。
你可能还会对下列文章感兴趣:

0条评论 你不想来一发么↓

    想说点什么呢?

    您需要登录您的Google账号才能进行评论。