game connect4 java_用Java实现用于Connect 4的Minimax算法

我正在尝试使用minimax(和alpha beta修剪)构建Connect 4游戏,主要是为了向自己证明我能做到 . 然而,我遇到的一个重大概念问题是如何实际使用minimax算法 . 我这样做的方法是我有一个AI类,它有一个函数可以执行返回int的minimax算法 .

public int minimax(Board board, int depth, int alpha, int beta, String player) {

if(depth == 0 || board.getScore() >= 512) {

return board.getScore();

}

else if(player.equals("computer")) {

int temp = -1000000;

for(Integer[] moves : board.availableMoves) {

board.putPiece(player, moves[0]);

temp = Math.max(temp, minimax(board, depth-1, alpha, beta, "human"));

board.removePiece(moves[0], moves[1]);

alpha = Math.max(alpha, temp);

if (alpha >= beta) {

break;

}

}

return temp;

}

else {

int temp = 1000000;

for(Integer[] moves : board.availableMoves) {

board.putPiece(player, moves[0]);

temp = Math.min(temp, minimax(board, depth+1, alpha, beta, "computer"));

board.removePiece(moves[0], moves[1]);

beta = Math.min(beta, temp);

if(alpha >= beta) {

break;

}

}

return temp;

}

}

这是由名为computerMove()的Game类的函数调用的 .

public int computerMove() {

Board tempBoard = board;

int bestMove = 0;

AI ai = new AI();

ai.minimax(board, difficulty, -1000000, 1000000, "computer");

return bestMove;

}

但是,如何处理返回的int?我如何利用它来实际移动这件作品?返回的int只是我能得到的最好的板子,对吧?它告诉我没有特别关于我应该做的位置或板 .

非常感谢任何和所有的帮助 .

谢谢,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值