Código-fonte em Java da inicialização de partida do WAR no Gametrack

private int GTnextInt(int n){ if (n <= 0) return 0; int bits, val; //sorteia enquanto não pegar uma chave enviesada, ie, na última trache de quase "n" valores inteiros do { bits = rand.nextInt(); ++quantRandoms; if(bits < 0) bits = -bits; val = bits % n; } while (bits - val + (n-1) < 0); return val; } // Implementing Fisher–Yates shuffle private void shuffleArray(int[] ar) { for (int i = ar.length - 1; i > 0; i--) { int index = GTnextInt(i + 1); // Simple swap int a = ar[index]; ar[index] = ar[i]; ar[i] = a; } } String[] jogadores = {"jogadorA", "jogadorB", "jogadorC", "", "", ""}; java.util.ArrayList<Integer> listaQuem = new java.util.ArrayList<Integer>(jogadores.length); for(int i = 0; i < jogadores.length; ++i){ if(jogadores[i].equals("")) continue; listaQuem.add(i); } int quant = listaQuem.size(); int[] cores = new int[quant]; int[] ncartas = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41}; int[] mesa = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,42}; int[] listaobjetivos = {0,1,2,3,4,5,6,7,8,9,10,11,12,13}; shuffleArray(ncartas, true); shuffleArray(mesa, true); shuffleArray(listaobjetivos, true); int ind = GTnextInt(quant); int[] listapegos = new int[42]; for(int i = 0; i < 42; ++i){ listapegos[ncartas[i]] = ind; if(++ind >= quant) ind = 0; } for(int i = 0; i < quant; ++i){ int quem = listaQuem.get(ind); nomes[i] = jogadores[quem]; cores[i] = quem; for(int j = 0; j < 42; ++j){ if(listapegos[j] == ind) posses[j] = i; } if(++ind >= quant) ind = 0; } int j = 0; for(int i = 0; i < listaobjetivos.length; ++i){ int o = listaobjetivos[i]; // desconsidere a carta se o objetivo for eliminar a si mesmo ou uma cor que não está no jogo if(o <= 5) { if((o == cores[j])||(find(cores, o) < 0)) continue; } objetivos[j] = o; if(++j >= quant) break; }