public Pentago_Rules(EvaluationFunction ef = EvaluationFunction.control, NextStatesFunction nsf = NextStatesFunction.all_states, bool iapieces = IA_PIECES_WHITES, bool remove_repeated_states_on_nextStates = false, float draw_value = 0) { this.ef = ef; this.nsf = nsf; this.remove_repeated_states_on_nextStates = remove_repeated_states_on_nextStates; this.draw_value = draw_value; IA_PIECES = iapieces; if (ef == EvaluationFunction.AplusDiagHack) { setUpDiagonalHack(); } //create all possible plays. //since we are using a class, there is no need to initialize them again //when we are getting possible moves in a board //just filter the impossible ones if (all_possible_place_piece_moves == null) { all_possible_place_piece_moves = new Pentago_Move[36]; int i = 0; for (int s2p = 0; s2p < 4; s2p++) { for (int x = 0; x < 3; x++) { for (int y = 0; y < 3; y++) { all_possible_place_piece_moves[i] = new Pentago_Move(s2p, x, y); i++; } } } } if (nsf == NextStatesFunction.check_symmetries) { bakeMovesAntiDiagAbove(); bakeMovesMainDiagAbove(); bakeMovesSquare0Triang(); bakeMovesTopTriang(); bakeSquare0(); bakeSquare0n1(); bakeSquare0n2(); } if (all_possible_rotate_squares_moves == null) { all_possible_rotate_squares_moves = new Pentago_Move[8]; int i = 0; for (int s2p = 0; s2p < 4; s2p++) { all_possible_rotate_squares_moves[i] = new Pentago_Move(s2p, false); i++; all_possible_rotate_squares_moves[i] = new Pentago_Move(s2p, true); i++; } } }
public Pentago_Rules(EvaluationFunction ef = EvaluationFunction.func1, NextStatesFunction nsf = NextStatesFunction.all_states, bool iapieces = IA_PIECES_WHITES, bool remove_repeated_states_on_nextStates = false) { this.ef = ef; this.nsf = nsf; this.remove_repeated_states_on_nextStates = remove_repeated_states_on_nextStates; IA_PIECES = iapieces; //create all possible plays. //since we are using a class, there is no need to initialize them again //when we are getting possible moves in a board //just filter the impossible ones if (all_possible_place_piece_moves == null) { all_possible_place_piece_moves = new Pentago_Move[36]; int i = 0; for (int s2p = 0; s2p < 4; s2p++) { for (int x = 0; x < 3; x++) { for (int y = 0; y < 3; y++) { all_possible_place_piece_moves[i] = new Pentago_Move(s2p, x, y); i++; } } } } if (all_possible_rotate_squares_moves == null) { all_possible_rotate_squares_moves = new Pentago_Move[8]; int i = 0; for (int s2p = 0; s2p < 4; s2p++) { all_possible_rotate_squares_moves[i] = new Pentago_Move(s2p, false); i++; all_possible_rotate_squares_moves[i] = new Pentago_Move(s2p, true); i++; } } }