五子棋实验报告
人工智能课程实验第一小组
成员:赖昌灏(组长)06373078 黄鹏 06373068 黄徐迅 06373070
揭指 06373076 赖斯06373081 刘银龙 06373105
一.实验题目
五子棋对弈程序
二.实验要求
1、要求有一个良好的界面,方便裁判把对方的下子填入棋盘相应的位置。
先手为黑子,后手为白子。棋盘大小为 15*15。
2、要求既支持先手、又支持后手的方式。比赛时通过抓阄决定先手还是后
手。
3、如果黑子(先手方)下了禁手子,则后手方(白子)的程序必须输出提
示黑子禁手,否则比赛继续,不能判黑子负。
三.算法设计分析:
1)数据的存储
五子棋的棋盘是 15X15 的,可以用一个二维数组来存储当前的棋盘状态。程序
中用 int board[15][15]来存储。其中用数值 0 表示人下过的棋子,用数值 1 表示
电脑下过的棋子,用数值 2 表示还未被下过的棋子。
2)平局以及胜负的判断。
程序中使用了一个函数 Judge()来进行判断,具体设计如下:
平局:
五子棋对战双方加起来最多下的棋子为 15X15=225 颗,所以当下过的总的棋子
数为 225 且双方都没有赢的情况下,视为平局,此次对战结束。用一个 bool 变
量 tie 来表示,置为 true。
胜负:
(1)在这种 15X15 的棋盘中,任何一方能取胜的格局数总的为 572,横竖
方向总的有 11*15*2=330 种。两个对角方向总的有((1+10)*10/2*2+11)*2=242