Implementasi Algoritma Analisis Dan Implementasi Algoritma Minimax Dengan Optimasi Alpha Beta Pruning .

Gambar 4.5 Tampilan Game Play

4.5 Implementasi Algoritma

Berikut adalah implementasi algoritma Minimax dengan optimasi Alpha Beta Pruning pada aplikasi JFinRo ini. public final class AIPlayer implements Player, Constanta { private static final int MAXWIN = 10000; private static final int MINWIN = -10000; private int movefinal int kedalamanSaatIni, final int maxdepth, final Check board,final Square squareOut, final byte giliran, int alpha, int beta { if kedalamanSaatIni == maxdepth { squareOut.init; ++nodeDievaluasi; return evalboard; } int max = MINWIN - 1; int min = MAXWIN + 1; final Square potentialSquare = SquareFactory.create; int moveVal; Square s = SquareFactory.create; Universitas Sumatera Utara while getNextPossibleMoves, board { final Check b = board.copy; b.setPieces, giliran; if giliran == COMPUTER_PIECE { switch b.terminalTest { case USER_WIN: moveVal = MINWIN; break; case COMPUTER_WIN: moveVal = MAXWIN; break; default: moveVal = movekedalamanSaatIni + 1, maxdepth, b, potentialSquare, USER_PIECE, alpha, beta; break; } if moveVal max { squareOut.copyPositions; max = moveVal; } if alphaBetaPruningEnabled { alpha = alpha moveVal ? alpha : moveVal; if alpha = beta { return beta; } } } else { switch b.terminalTest { case USER_WIN: moveVal = MINWIN; break; case COMPUTER_WIN: moveVal = MAXWIN; break; default: moveVal = movekedalamanSaatIni + 1, maxdepth, b, potentialSquare, COMPUTER_PIECE, alpha, beta; break; } if moveVal min { squareOut.copyPositions; min = moveVal; } if alphaBetaPruningEnabled { beta = beta moveVal ? beta : moveVal; if beta = alpha { return alpha; } } } } Universitas Sumatera Utara if alphaBetaPruningEnabled { return giliran == COMPUTER_PIECE ? alpha : beta; } return giliran == COMPUTER_PIECE ? max : min; } Berikut adalah implementasi fungsi evaluasi pada permainan Five in Row ini. private static int evalfinal Check b { final Stats c = new Statsb, COMPUTER_PIECE; final Stats u = new Statsb, USER_PIECE; int retVal = 0; if u.uncapped4 0 { return MINWIN; } if c.uncapped4 0 { return MAXWIN; } retVal += c.capped2 5; retVal -= u.capped2 5; retVal += c.uncapped2 10; retVal -= u.uncapped2 10; retVal += c.capped3 20; retVal -= u.capped3 30; retVal += c.uncapped3 100; retVal -= u.uncapped3 120; retVal += c.capped4 500; retVal -= u.capped4 500; return Math.maxMINWIN, Math.minMAXWIN, retVal; } Universitas Sumatera Utara

4.6 Pengujian Agen