日期:2014-05-20  浏览次数:21106 次

[编程游戏]机器人擂台赛第二季,智能五子棋
看到zswang大牛组织的擂台赛,觉得挺有意思,不过随机性太强,现在来个稍复杂一点的,五子棋

[比赛规则]
1、五子连珠,可长连,无禁手,10分钟快棋
2、犯规(落在已有子的位置或多次落子)判输
3、比赛先手后手共五局,比分多的赢,若比分相同看赢局的时间总和,少的赢
4、赢得比赛的成为擂主,擂主可更新自己的代码
5、选手可以用以前的代码与新擂主打擂,不可以用相同的代码连续请求打擂
6、请求打擂请跟帖,以“请求打擂”为标题,帖上自己的代码,若代码较长,请给出下载地址


[机器人编写方法]
1、下载五子棋框架 http://download.csdn.net/source/430083
2、查看编写说明readme.cs
3、编写自己的玩家代码,编译成DLL文件与框架程序放在同一目录下,启动游戏,选择自己与对方的玩家,开始即可


[框架说明]
1、自己写的玩家类中不推荐使用多线程,线程由框架控制
2、您下载的代码中已经包含了三个已经实现的玩家,用户玩家由用户鼠标控制,一个简单的玩家和一个AI玩家
3、要框架源码的请与本人联系
4、由于本人在上班,会不定期上来看并给出打擂结果,希望有热心网友能够帮我来做这个工作


版主:帖子置精加分100

------解决方案--------------------
SimplePlayer没有挑战性,先抛一个“ZswangNo1”支持一下楼主
原理就是比较每个坐标落在后的综合指数,效率很快,但AI不高
详情ZswangNo1耗时00:00:10
QChessPlayer耗时00:03:00
QChessPlayer胜

------解决方案--------------------
C# code
        private void CalcGobangInfo(string text, ref GobangInfo gobangInfo)
        {
            if (text.IndexOf("11111") >= 0) //连5
                gobangInfo.L5++;
            else if (text.IndexOf("011110") >= 0 ||
                text.IndexOf("110110110") >= 0 ||
                text.IndexOf("110111011") >= 0) //活4
                gobangInfo.H4en

------解决方案--------------------
看到代码,我吞了一口唾沫,又吞了一口。
强,支持了!~