package agent; import java.util.Random; import java.util.Vector; import java.lang.Math; // Implements a random drag agent. public class DatabaseAgent extends Agent { private int openingNr; private Vector openings[]; private Random random; private Vector opening; public DatabaseAgent(String server, int port){ super("DatabaseAgent",server,port); random = new Random(); loadOpenings(); } // This will implement the move search public Move getBestMove() { Move move = null; if (opening == null) { int size = openingNr; int index = java.lang.Math.abs(random.nextInt(openingNr)); opening = (Vector)(openings[index].clone()); } if (opening.size()>0) move = (Move)opening.remove(0); return move; } public static void main(String[] args) { int port=0; String server="localhost"; switch(args.length){ case 2: port=Integer.parseInt(args[1]); case 1: server=args[0]; break; default: } DatabaseAgent current = new DatabaseAgent(server,port); current.start(); } private void loadOpenings() { Vector load; openingNr = 15; openings = new Vector[openingNr]; // OBS dessa fungerar endast om man är white! // Agressive Knight oppenings load = new Vector(); load.add(new Move("D2","D4",1000)); load.add(new Move("B1","C3",1000)); load.add(new Move("C1","G5",1000)); load.add(new Move("G5","F4",1000)); openings[0] = load; load = new Vector(); load.add(new Move("D2","D4",1000)); load.add(new Move("B1","C3",1000)); load.add(new Move("C1","F4",1000)); openings[1] = load; load = new Vector(); load.add(new Move("D2","D4",1000)); load.add(new Move("B1","C3",1000)); load.add(new Move("C3","D5",1000)); load.add(new Move("D5","C3",1000)); load.add(new Move("E2","E4",1000)); openings[2] = load; load = new Vector(); load.add(new Move("D2","D4",1000)); load.add(new Move("B1","C3",1000)); load.add(new Move("E2","E4",1000)); //load.add(new Move("F3","D4",1000)); load.add(new Move("G1","F3",1000)); openings[3] = load; //är beroende av vad motståndaren gör: load = new Vector(); load.add(new Move("D2","D4",1000)); load.add(new Move("E2","E4",1000)); load.add(new Move("G1","F3",1000)); load.add(new Move("H2","H3",1000)); openings[4] = load; // Defensive openings //Kungsbonde öppningar 5st load = new Vector(); load.add(new Move("D2","D4",1000)); load.add(new Move("B1","C3",1000)); load.add(new Move("E2","E4",1000)); openings[5] = load; //?? load = new Vector(); load.add(new Move("D2","D4",1000)); load.add(new Move("E2","E4",1000)); load.add(new Move("F2","F4",1000)); openings[6] = load; load = new Vector(); load.add(new Move("D2","D4",1000)); load.add(new Move("E2","E4",1000)); openings[7] = load; load = new Vector(); load.add(new Move("D2","D4",1000)); load.add(new Move("E2","E4",1000)); load.add(new Move("G1","F3",1000)); load.add(new Move("C1","F4",1000)); openings[8] = load; load = new Vector(); load.add(new Move("D2","D4",1000)); load.add(new Move("B1","C3",1000)); load.add(new Move("E2","E4",1000)); openings[9] = load; load = new Vector(); load.add(new Move("D2","D4",1000)); load.add(new Move("B1","C3",1000)); load.add(new Move("C1","F4",1000)); openings[10] = load; load = new Vector(); load.add(new Move("D2","D4",1000)); load.add(new Move("C1","F4",1000)); openings[11] = load; load = new Vector(); load.add(new Move("D2","D4",1000)); load.add(new Move("B1","C3",1000)); load.add(new Move("C2","C4",1000)); load.add(new Move("E2","E4",1000)); openings[12] = load; load = new Vector(); load.add(new Move("D2","D4",1000)); load.add(new Move("B1","C3",1000)); load.add(new Move("C2","C4",1000)); load.add(new Move("B2","B4",1000)); openings[13] = load; //Dambonde load = new Vector(); load.add(new Move("E2","E4",1000)); load.add(new Move("D2","D4",1000)); load.add(new Move("C1","G5",1000)); openings[14] = load; } }