全文预览

JAVA版井字棋的设计与实现

上传者:徐小白 |  格式:doc  |  页数:17 |  大小:155KB

文档介绍
X角度来考虑极小极大算法,找到X的最佳走棋位置,然后由O方来占据该位置。Р2、极小极大算法Р整个算法包括如下几个部分:Р首先要有一个评估方法gameState,对每走一步棋后的棋局进行评估,估值为WIN常量说明X方,即MAX方获胜;估值为LOSE则O方,即MIN方获胜;估值DRAW为平局;估值为INPROGRESS,说明棋未走完;估值为DOUBLE_LINK,说明棋局中有两连子情况Р然后用一个minimax方法寻找在当前棋局状态下X方的最佳位置, X方的最佳位置就是当X走该位置后,O方所有走法中最小值里的最大值,比如图4中第二层X 的位置选择。当找到该位置后,由O方来抢先占据该位置。Р最后用两个递归方法min和max来遍历所有的棋局。min方法负责找出O方的最小值,比如图4第二层最左边的棋局会导致5中O方的走法,min方法就是找出这5种走法中的最小值。同理,max方法负责找出X方的最大值,比如图4第二层三种棋局中的中间棋局。Р3、代码实现Р在刚才那个人人对弈井字棋的基础上,我们进行一些修改来实现人机对弈。首先单击事件加入调用方法让计算机走棋的代码,如下:Р// 按钮的监听事件Рprivate class JBClick implements ActionListener {Р// 当单击按钮时Р?public void actionPerformed(ActionEvent e) {Р for (int i = 0; i < 9; i++) {Р if (e.getSource() == jb[i]) { jb[i].setText("X"); // 被单击的按钮走“X”Р jb[i].setEnabled(false); //置为不可用Р }Р }Р int gamestate = gameState(jb); // 获取棋盘状态Р // 如果棋局未结束,则计算机走下一步

收藏

分享

举报
下载此文档