| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4062 人关注过本帖
标题:煮酒论英雄 二巡 井字棋对战规则讨论
取消只看楼主 加入收藏
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
结帖率:100%
收藏
已结贴  问题点数:100 回复次数:10 
煮酒论英雄 二巡 井字棋对战规则讨论
首先感谢各位前一轮的捧场。既然这是第一次这样玩,那我们就从最简单的井字棋开始吧。算是热热身。
 
玩法我是这样构思的。首先,我或者哪位有兴趣的朋友做一个游戏对战平台。玩家按规则写好参赛程序并编译好并发布(别的玩家可以下载你的Bot来玩)。
 
收集两个参赛程序,由平台调用并开始比赛。平台全程展示比赛过程,并给出比赛结果。
 
比赛不需要源代码。也算是保护各位的版权。当然大家可以在平台外次序讨论算法,也可以展示自己的源代码。
 
闲话少叙,上酒。以下描述为我制定的游戏协议和规则。如果有我描述不清楚或各位有更合适的建议,欢迎交流讨论
 
1    比赛的所有数据输入输出以行为单位。
 
2    比赛进程启动后第一步:输出比赛类型(字符串),用于平台判断是否为正确的参赛程序。
 
2.1    井字棋的比赛类型为:"Beyond.Game.Tic-tac-toe.1.0"。
 
2.2    如比赛类型与当前比赛平台不匹配,平台将不予开赛。
 
2.3    输出示例:printf("Beyond.Game.Tic-tac-toe.1.0\n");
 
3    比赛进程启动后第二步:输出选手名称,用于平台显示参赛选手名号。
 
3.1    之所以由程序主动输出,而不以程序名为选手名称,是为防止有人盗用别人的比赛程序改名后当作自己的原创作品。
 
3.2    输出示例:printf("任何你喜欢的名字\n");
 
4    比赛进程启动后第三步:接收平台发送的执棋类型。
 
4.1    执棋类型包含一个字符‘X’或‘O’(大写),后跟一个换行符(换行符作为数据分隔符,在接受数据时请注意)。
 
4.2    所接受到的字符即为平台分配给进程所执的棋子类型。如接受到‘X’,则在之后所接受到的棋局数据中的‘X’即为已方棋子‘O’为对方棋子。
 
5    比赛开始。
 
5.1    接收平台发送的当前盘面局势。
 
5.2    局势数据为一字符串,后跟一换行符(再次提醒,换行符为数据分隔符,并非有效数据)。
       字符串长度为9个字符,包括三个字符:‘X’、‘O’、‘ ’(空格)。
     ‘X’表示X棋
     ‘O’表示O棋
     ‘ ’表示空位
 
5.3    9个字符对应棋盘的9个位置的状态。字符顺序对应棋盘从左到右从上到下的9个位置。
     如“XOX 0X  ”(注意其中的空格)表示当前的棋盘状态为:
 
     X|O|X
     -+-+-
      |O|X
     -+-+-
      | |

5.4    接收示例:
     char a[10];
     gets(a);//建议使用gets函数接收数据
 
5.6    当成功接受局势状态后,运行你的算法输出行棋位置。
     输出为一个数值后跟换行符,代表要行棋的坐标。坐标为一维坐标,范围0-8。
     坐标与棋盘位置的对应关系如下:
 
     0|1|2
     -+-+-
     3|4|5
     -+-+-
     6|7|8
 
5.7    输出示例:printf("%d\n", coordinate);
 
5.8    输出后即可进入下一轮局势数据接受的等待中。
 
6    平台轮流向参赛进程发送当前比赛局势,直到比赛结束。
 
6.1    比赛结果将显示在平台界面中,不向比赛进程返回。
 
6.2    比赛结束后,比赛进程也可以自行退出,如未自行退出平台将强制关闭。
 
7    比赛规则
 
7.1    如果某一方在横、竖、斜中的一个方向上三子连成一线,判这一方获胜。
 
7.2    如果棋盘已经下满,判平局。
 
7.3    如果某一方行棋在已经有子的地方或下到棋盘外(非0-8之间的数值),该方立即判负,比赛结束。
 
7.4    对参赛进程使用的内存空间限制为64M(对于这个游戏足够了)。如果某一方比赛中某一时刻使用的内存超限,该方立即判负,比赛结束。
 
7.5    对参赛进程每次行棋“思考”时间限制为5秒。如果某一方超时,该方立即判负,比赛结束。


[ 本帖最后由 beyondyf 于 2012-6-10 20:50 编辑 ]
搜索更多相关主题的帖子: 对战平台 比赛结果 源代码 
2012-06-10 18:01
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
呵呵,你怎么知道我将用C#写平台?

我用C#已经很多年了,让我改用c/c++写会很不习惯。

如果你愿意用c/c++写一个的话,这个任务给你了。

这里也向有意参赛的朋友说明一下。参赛程序的编写与语言无关。只要编译成控制台程序就行。

重剑无锋,大巧不工
2012-06-10 18:55
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
这是一个本地游戏,与网络协议无关,也不需要服务器。

参赛程序只需从标准输入流接收数据,向标准输出流发送数据即可。

标准流将由平台重定向,参赛程序不需要考虑这些。

这么说可能还是抽象,过两天我写好平台大家一运行就明白了。我会再写两个示例参赛程序。

重剑无锋,大巧不工
2012-06-10 20:26
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
回复 9楼 love24114
井字棋不是跳棋。有且只有两个人下。

这么说吧,在平台的界面上将有两个选择参赛程序的按钮。选择好后,点击开始按钮两个程序开始下棋。平台上将显示一个井子棋棋盘,实时显示对弈情况。

你的思维还固定在网游的模式。这里玩的是AI,是让程序和程序下棋,不是人和人。

重剑无锋,大巧不工
2012-06-10 21:24
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
回复 15楼 jokerskill
唉,不瞒你说,磁芯大战我十几年前就玩过。

玩不是问题,问题是和谁玩。你能么?

估计你只知道这么个名词而已,连怎么玩都不知道。

踏实点,不要好高骛远。先把走学会了再说飞的事。

重剑无锋,大巧不工
2012-06-11 14:48
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
回复 18楼 jokerbat
手机上网中,不想打太多的字。

不是有意想贬低你,但你现在的水平连入门都够不上。

前两天是你在问二维数组的事吧?你还是踏踏实实把基础打好吧。

重剑无锋,大巧不工
2012-06-11 21:27
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
回复 21楼 阿鞠尼
兄弟今年高寿?

重剑无锋,大巧不工
2012-06-12 11:14
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
回复 25楼 阿鞠尼
郁闷,断了一天网。

小友的修词还是要重视一下了。大哥虚长你10岁,欢迎多交流。

对了,各位对我开篇的描述能看明白么?有没有什么我没说清楚的地方?

重剑无锋,大巧不工
2012-06-12 23:53
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
连接是平台的事,参赛程序不需要考虑这些。你只当对手坐在电脑前就行了。用scanf接收他的输入,用printf向他输出。

重剑无锋,大巧不工
2012-06-13 13:21
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
既然大家对这个游戏的规则描述没有异议,那我就开始建设这个对战平台了。

我将使用C#语言在.net 4.0框架下实现平台。同时我也很愿意看到哪位高手用C/C++来实现这个平台。

对战平台测试版将于近期推出,有兴趣参加游戏的朋友现在可以按照规则描述写自己的BOT了。

酒尽。

重剑无锋,大巧不工
2012-06-15 20:10
快速回复:煮酒论英雄 二巡 井字棋对战规则讨论
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017184 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved