import java.io.PrintWriter; import java.net.Socket; import java.util.Scanner; public class Benchmark { static Scanner scan = new Scanner(System.in); static int nbPlayers; static int rulesUsed; static String tableName; static String ruleSet; final static String ruleSetBench = "do(raise(X0), 1) :- X0 is 10, rank(XRval), X1 =XRval, rank(XRval), X2 =XRval, handkaarten(X3), members([card(X1, _), card(X2, _)],X3). do(raise(X0), 2) :- X0 is 5, rank(XRval), X1 =XRval, rank(XRval), X2 =XRval, allekaarten(X3), members([card(X1, _), card(X2, _)],X3). do(fold, 3) :- tekort(X0), X1 is 6, (X0 > X1). do(call, 4) :- true."; final static String ruleSetPair = "do(fold, 1) :- rank(XRval), X0 =XRval, rank(XRval), X1 =XRval, allekaarten(X2), members([card(X0, _), card(X1, _)],X2)."; final static String ruleSetStraightFlush = "do(fold, 1) :- suit(XScolor), X0 = XScolor, rank(XRval), X1 =XRval, suit(XScolor), X2 = XScolor, rank(XRval), suit(XScolor), X4 = XScolor, rank(XRval), suit(XScolor), X6 = XScolor, rank(XRval), suit(XScolor), X8 = XScolor, rank(XRval), allekaarten(X10), members([card(X1, X0), card(X3, X2), card(X5, X4), card(X7, X6), card(X9, X8)],X10), X3 =:=XRval+1, X5 =:=XRval+2, X7 =:=XRval-1, X9 =:=XRval-2."; final static String ruleSetAceHigh = "do(fold, 1) :- X0 =14, allekaarten(X1), members([card(X0, _)],X1)."; final static String ruleSetBankroll = "do(fold, 1) :- saldo(X0), X1 is 10, (X0 > X1)."; final static String ruleSetFold = "do(fold,1):- true."; public static void main(String args[]) throws Exception{ System.out.println("How many players?"); nbPlayers = scan.nextInt(); System.out.println("What rulesset?"); System.out.println("1) benchmark"); System.out.println("2) pair"); System.out.println("3) straight flush"); System.out.println("4) ace high"); System.out.println("5) bankroll > 10"); System.out.println("6) fold"); rulesUsed = scan.nextInt(); System.out.println("Table name?"); tableName = scan.next(); final String startTableBench = "{\"request\": {" + "\"type\": \"startTable\"," + "\"tableName\": \"" + tableName +"\" ," + "\"nbPlayers\": " + nbPlayers +" ," + "\"password\": \"bench\"" + "}" + "}"; switch(rulesUsed){ case 1: ruleSet = ruleSetBench; break; case 2: ruleSet = ruleSetPair; break; case 3: ruleSet = ruleSetStraightFlush; break; case 4: ruleSet = ruleSetAceHigh; break; case 5: ruleSet = ruleSetBankroll;break; case 6: ruleSet = ruleSetFold; break; default: System.out.println("Please enter a number between 1 and 6."); throw new Exception("Please enter a number between 1 and 6."); } PrintWriter out = null; Socket socket = null; //Create socket connection socket = new Socket("borgraf", 20000); out = new PrintWriter(socket.getOutputStream(), true); //Start a table out.print(startTableBench); out.close(); System.out.println("Inputstream closed. Table should be started."); Thread.sleep(5000); //Add players for(int i=0; i<nbPlayers; i++){ socket = new Socket("borgraf", 20000); out = new PrintWriter(socket.getOutputStream(), true); out.print(addPlayer(i)); out.close(); //System.out.println(addPlayer(i)); } //Set up a test table for every person // for(int i=0; i<nbPlayers; i++){ // socket = new Socket("borgraf", 20000); // out = new PrintWriter(socket.getOutputStream(), true); // out.print(setupTesttable(i)); // out.close(); // } } public static String addPlayer(int i){ String playerName = "Player" + i; return "{\"request\": { " + "\"type\": \"joinTable\"," + "\"tableName\":\"" + tableName +"\" ," + "\"playerName\": \"" + playerName +"\" ,"+ "\"description\": \"" + ruleSet + "\"" + "}" + "}"; } public static String setupTesttable(int i){ String tableName = "Test" + i; return "{\"request\": {" + "\"type\": \"startTable\"," + "\"tableName\":\"" + tableName + "\" ," + "\"nbPlayers\": 3 ," + "\"password\": bench" + "}" + "}"; } }