一字棋

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中,便于之后判断赢得棋局状态
changeChess(int x,int y,int id,bool ifCon =false) 选手id在棋盘的(x,y)处下棋子,ifcon为是否为电脑对 弈
5
主要函数
travelGraph() //广度优先遍历棋局 open表头元素出队列,存入close表 遍历棋局状态矩阵,一旦碰到元素为0,则改为当 前棋局playerid的对手id号(-playerid)存入open
队列中,设置棋局的父棋局为当前棋局
将元素改为0,继续遍历 直到open表里没有元素或者height达到规定值
6
主要函数
evaluateChess(int[,] chessState1,int id,int[,] chessState2)
搜索棋局状态,找到playerid连成一线的个数,以及 playerid的对手id连成一线的个数,两个相减,得到 价值
15
源自文库
7
主要函数
EvaluateGraph(int playid) close表首元素出栈
如果没有子棋局,则将棋局状态矩阵中为零的元素
改为playerid得到一个矩阵,同时改为-playerid得 到另一个矩阵,通过估价函数得到估价,将自己存
入其父棋局的子棋局集合中
如果有,则看当前棋局的playerid是否为初始棋局 的playerid相同,如果相同,取其子棋局的估价最
小值,否则取最大值
8
实验结果
人先走:
9
实验结果
人先走:
10
实验结果
电脑先走:
11
实验结果
电脑先走:
12
实验结果
电脑自己对弈:
13
实验结果
电脑自己对弈:
14
总结
在理解极大极小搜索过程后着手写程序,但在编写过 程中遇到了很多bug,比如计算机与人对弈过程中人 却赢了。这时候我设置了多个断点,查看中间变量的 值,找到出错的原因。在这过程中我更加深入理解了 极大极小搜索过程
chess(int chessid)//初始化棋局
int[,] getMatrix()//获取当前棋盘状态
changeOriginalChess(int x, int y,int id)//id玩家落子在(x,y)位置
4
主要函数
initChess() 将所有连成一线的坐标位置保存在successState数组
井字棋
目录
总流程图
重要数据结构 主要函数
实验结果
2
流程图
3
Chess类:
int[,] chessState//棋盘状态 playerid//当前的下棋方 chessCost//当前棋盘的估价 List<chess> childChessId//子棋局 chess fatherChess;//父棋局 chessId;//棋局的id号
相关文档
最新文档