- 1
- 0
- 约4.32千字
- 约 39页
- 2021-11-15 发布于山西
- 举报
LOGO 六子棋博弈程序 计算机博弈与人工智能协会 计算机博弈与人工智能 本次大赛通信协议 博弈程序整体设计思路 博弈程序核心模块 机器博弈交互平台 本次大赛的一些相关说明 讲解要点 机器博弈交互平台 裁判系统 棋盘 黑方程序 白方程序 1 1 1 2 3 3 4 5 5 6 本次大赛通信协议 接受裁判系统信息:scanf(%s,Msg); 传回裁判系统信息:printf(%s,Move); 1.确定队名:name?“ 传回队名: name BitStronger\n“ 2.开局:new 3.确定黑白方: 黑方:black 白方:white 4.发送、接收招法 //先横向坐标,后纵向坐标 黑方第一步:move X0Y0 其他步数:move X0Y0X1Y1 博弈程序整体设计思路 实际问题 数学建模 算法 编程、调试 得到结果 棋盘表示 六子棋棋盘由19条横线和19条纵线组成。 棋盘一共有19*19=361个交点。 交点出现的可能情况:无子、黑子、白子 棋盘:char position[19][19]; 棋子: 黑棋(BLACK):0 白棋(WHITE):1 无子(NOSTONE):0xff 示例代码 宏定义: #define GRID_NUM 19 //棋盘行数 #define GRID_COUNT 361 //可放棋子总数 #define BLACK 0 //黑棋 #define WHITE 1 //白棋 #define NOSTONE 0xff //无棋 全局变量: BYTE position [GRID_NUM][GRID_NUM]; //棋盘 STONEMOVE m_cmBestMove; //记录着法 注: #include windows.h typedef unsigned char BYTE 示例代码 结构定义: //棋子位置 typedef struct _stoneposition { BYTE x; BYTE y; }STONEPOS; //走法 typedef struct _stonemove { STONEPOS StonePos[2]; //棋子位置 int Score; //走法的分数 }STONEMOVE; 示例代码 主函数,程序的入口 void main() { int ChessmanType; //记录棋子颜色 char Msg[500]; //保存接收到的消息 char name[] = “name 中国深度\n; //队伍信息 char Move[] = move AABB\n; //走法 int x0,x1,y0,y1; //坐标 //初始化棋盘 memset ( position, NOSTONE, GRID_COUNT); 示例代码 while (1) { //循环接收裁判平台发送的消息,注意需要发送的字符串应该//以\n结束,裁判平台才会认为是一次完整的输入. //发送完需要调用fflush(stdout)清空输出缓冲区,使字符串//立刻输出到裁判平台 memset(Msg,0,500); scanf(%s,Msg); if (strcmp(Msg,name?) == 0) { printf(%s,name); fflush(stdout); continue; } 示例代码 if (strcmp(Msg,“new”) == 0) //新开局 { memset(position,NOSTONE,GRID_COUNT); //初始化棋盘 scanf(%s,Msg); if (strcmp(Msg,“black”) == 0) //确定我方棋子的颜色 { Sleep(50); //延迟一段时间发送,经测试,立即发送可 //能造成平台无响应 printf(move JJ\n); position[9][9] = BLACK; fflush(stdout); ChessmanType = BLACK;
原创力文档

文档评论(0)