Merge branch 'malte-ai' into 'master'

Maltes AI

See merge request !24
This commit is contained in:
Malte Tammena 2017-10-20 23:22:31 +02:00
commit 5d957c47fe

View file

@ -49,7 +49,7 @@ public class MalteAI implements Player{
}
@Override
public void setEnemyID(int id) {
public void setEnemyID(int enemyID) {
this.enemyID = enemyID;
}
@ -66,17 +66,19 @@ public class MalteAI implements Player{
// Get options which would lead to instant win.
Set<Integer> winningOptions = getRowCompletionOptions(options, board, id);
for (Integer i: winningOptions) {
// System.out.println("Choose to win");
return i.intValue();
}
// Get options which would prevent an instant win of the enemy.
enemyID = enemyID == 0 ? 1: enemyID;
Set<Integer> preventionsOptions = getRowCompletionOptions(options, board, enemyID);
for (Integer i: preventionsOptions) {
// System.out.println("Choose to prevent");
return i.intValue();
}
// Choose a move that will continue a sequence that already exists.
Set<Integer> twoOfFour = getTwoOfFourOptions(options, board, id);
for (Integer i: twoOfFour) {
// System.out.println("Choose to progress");
return i.intValue();
}
// Choose a move that will not lead to an instant win of the enemy
@ -86,10 +88,12 @@ public class MalteAI implements Player{
choosewisely.remove(i);
int[][] fakeBoard = makeMove(copyBoard(board), i, id);
if (getRowCompletionOptions(options, fakeBoard, enemyID).size() == 0) {
// System.out.println("Choose random but smart");
return i.intValue();
}
}
// If nothing applies, take a random valied one.
// System.out.println("Choose random and stupid");
return takeRandom(options).intValue();
}