private void TrySet(int row, int col, Manager.GameMode gameMode) { if (Manager.fieldState[row, col] != Manager.CellStateType.FIELD) { return; } if (!Manager.CanSandwich(row, col, gameMode)) { return; } switch (Manager.gameMode) { case Manager.GameMode.WHITE: Manager.fieldState[row, col] = Manager.CellStateType.WHITE; Manager.ChangeField(row, col); Manager.DrawFieldS(); Manager.gameMode = Manager.GameMode.BLACK; Message.MessageText = Manager.BLACK_TURN_MESSAGE; break; case Manager.GameMode.BLACK: Manager.fieldState[row, col] = Manager.CellStateType.BLACK; Manager.ChangeField(row, col); Manager.DrawFieldS(); Manager.gameMode = Manager.GameMode.WHITE; Message.MessageText = Manager.WHITE_TURN_MESSAGE; break; } }
public static List <Manager.CellState> SetableList(Manager.GameMode gameMode) { List <Manager.CellState> list = new List <Manager.CellState>(); for (int row = 0; row < Manager.ROW_COUNT; row++) { for (int col = 0; col < Manager.COL_COUNT; col++) { if (Manager.fieldState[row, col] != Manager.CellStateType.FIELD) { continue; } if (Manager.CanSandwich(row, col, gameMode)) { list.Add(new Manager.CellState(row, col, Manager.CellStateType.FIELD)); } } } return(list); }
public static bool CanSandwich(int row, int col, Manager.GameMode gameMode) { Manager.CellStateType player_type = (gameMode == Manager.GameMode.BLACK) ? Manager.CellStateType.BLACK : Manager.CellStateType.WHITE; Manager.CellStateType enemy_type = (gameMode == Manager.GameMode.BLACK) ? Manager.CellStateType.WHITE : Manager.CellStateType.BLACK; int current_row = row; int current_col = col; int get_enemy_count = 0; //north while (current_row > 0) { current_row--; if (Manager.fieldState[current_row, current_col] == enemy_type) { get_enemy_count++; } else if (Manager.fieldState[current_row, current_col] == player_type && get_enemy_count > 0) { return(true); } else { break; } } //reset current_row = row; current_col = col; get_enemy_count = 0; //east while (current_col < Manager.COL_COUNT - 1) { current_col++; if (Manager.fieldState[current_row, current_col] == enemy_type) { get_enemy_count++; } else if (Manager.fieldState[current_row, current_col] == player_type && get_enemy_count > 0) { return(true); } else { break; } } //reset current_row = row; current_col = col; get_enemy_count = 0; //south while (current_row < Manager.ROW_COUNT - 1) { current_row++; if (Manager.fieldState[current_row, current_col] == enemy_type) { get_enemy_count++; } else if (Manager.fieldState[current_row, current_col] == player_type && get_enemy_count > 0) { return(true); } else { break; } } //reset current_row = row; current_col = col; get_enemy_count = 0; //west while (current_col > 0) { current_col--; if (Manager.fieldState[current_row, current_col] == enemy_type) { get_enemy_count++; } else if (Manager.fieldState[current_row, current_col] == player_type && get_enemy_count > 0) { return(true); } else { break; } } //reset current_row = row; current_col = col; get_enemy_count = 0; //north west while (current_row > 0 && current_col > 0) { current_row--; current_col--; if (Manager.fieldState[current_row, current_col] == enemy_type) { get_enemy_count++; } else if (Manager.fieldState[current_row, current_col] == player_type && get_enemy_count > 0) { return(true); } else { break; } } //reset current_row = row; current_col = col; get_enemy_count = 0; //north east while (current_row > 0 && current_col < Manager.COL_COUNT - 1) { current_row--; current_col++; if (Manager.fieldState[current_row, current_col] == enemy_type) { get_enemy_count++; } else if (Manager.fieldState[current_row, current_col] == player_type && get_enemy_count > 0) { return(true); } else { break; } } //reset current_row = row; current_col = col; get_enemy_count = 0; //south west while (current_row < Manager.ROW_COUNT - 1 && current_col > 0) { current_row++; current_col--; if (Manager.fieldState[current_row, current_col] == enemy_type) { get_enemy_count++; } else if (Manager.fieldState[current_row, current_col] == player_type && get_enemy_count > 0) { return(true); } else { break; } } //reset current_row = row; current_col = col; get_enemy_count = 0; //south east while (current_row < Manager.ROW_COUNT - 1 && current_col < Manager.COL_COUNT - 1) { current_row++; current_col++; if (Manager.fieldState[current_row, current_col] == enemy_type) { get_enemy_count++; } else if (Manager.fieldState[current_row, current_col] == player_type && get_enemy_count > 0) { return(true); } else { break; } } return(false); }