井字棋相关知识.ppt

Your footer here 井字棋 目录 * 总流程图 重要数据结构 主要函数 实验结果 流程图 * Chess类: int[,] chessState//棋盘状态 playerid//当前的下棋方 chessCost//当前棋盘的估价 Listchess childChessId//子棋局 chess fatherChess;//父棋局 chessId;//棋局的id号 chess(int chessid)//初始化棋局 int[,] getMatrix()//获取当前棋盘状态 changeOriginalChess(int x, int y,int id)//id玩家落子在(x,y)位置 * 主要函数 initChess() 将所有连成一线的坐标位置保存在successState数组中,便于之后判断赢得棋局状态 changeChess(int x,int y,int id,bool ifCon =false) 选手id在棋盘的(x,y)处下棋子,ifcon为是否为电脑对弈 * 主要函数 travelGraph() //广度优先遍历棋局 open表头元素出队列,存入close表 遍历棋局状态矩阵,一旦碰到元素为0,则改为当前棋局playerid的对手id号(-playerid)存入open队列中,设置棋局的父棋局为当前棋局 将元素改为0,继续遍历 直到open表里没有元素或者height达到规定值 * 主要函数 evaluateChess(int[,] chessState1,int id,int[,] chessState2) 搜索棋局状态,找到playerid连成一线的个数,以及playerid的对手id连成一线的个数,两个相减,得到价值 * 主要函数 EvaluateGraph(int playid) close表首元素出栈 如果没有子棋局,则将棋局状态矩阵中为零的元素改为playerid得到一个矩阵,同时改为-playerid得到另一个矩阵,通过估价函数得到估价,将自己存入其父棋局的子棋局集合中 如果有,则看当前棋局的playerid是否为初始棋局的playerid相同,如果相同,取其子棋局的估价最小值,否则取最大值 * 实验结果 人先走: * 实验结果 人先走: * 实验结果 电脑先走: * 实验结果 电脑先走: * 实验结果 电脑自己对弈: * Your footer here

文档评论(0)

1亿VIP精品文档

相关文档