// Path: app/src/main/java/com/earthblood/tictactoe/util/GameSymbol.java
// public enum GameSymbol {
//     X(1,"X"),
//     O(2,"O");
// 
//     private int id;
//     private String value;
// 
//     private GameSymbol(int id, String value){
//         this.id = id;
//         this.value = value;
//     }
// 
//     public int getId() {
//         return id;
//     }
// 
//     public String getValue() {
//         return value;
//     }
// 
//     public static GameSymbol byId(int id) {
//         for (GameSymbol gameSymbol : values()) {
//             if(gameSymbol.getId() == id){
//                 return gameSymbol;
//             }
//         }
//         return null;
//     }
// }


import com.earthblood.tictactoe.util.GameSymbol;
/**
 * @author John Piser developer@earthblood.com
 *
 * Copyright (C) 2014 EARTHBLOOD, LLC
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */
package com.earthblood.tictactoe.strategy;


public class ToeStrategyNormal extends ToeStrategyBase implements ToeStrategy {

    public ToeStrategyNormal(int[] selectedXBoxIds, int[] selectedOBoxIds, GameSymbol androidSymbol) {
        this.selectedXBoxIds = selectedXBoxIds;
        this.selectedOBoxIds = selectedOBoxIds;
        this.androidSymbol   = androidSymbol;
    }

    @Override
    public int getBoxId() {

        StrategyItemPickRandomBox   pickRandom    = new StrategyItemPickRandomBox();
        StrategyItemPickMiddleBox   pickMiddle    = new StrategyItemPickMiddleBox(pickRandom);
        StrategyItemPatternDetector pickDefensive = new StrategyItemPatternDetector(
                                                         pickMiddle,
                                                         totalPatterns() - 5,
                                                         androidOpponent());

        return pickDefensive.execute(selectedXBoxIds, selectedOBoxIds, androidSymbol);
    }

    @Override
// Path: app/src/main/java/com/earthblood/tictactoe/util/GameSymbol.java
// public enum GameSymbol {
//     X(1,"X"),
//     O(2,"O");
// 
//     private int id;
//     private String value;
// 
//     private GameSymbol(int id, String value){
//         this.id = id;
//         this.value = value;
//     }
// 
//     public int getId() {
//         return id;
//     }
// 
//     public String getValue() {
//         return value;
//     }
// 
//     public static GameSymbol byId(int id) {
//         for (GameSymbol gameSymbol : values()) {
//             if(gameSymbol.getId() == id){
//                 return gameSymbol;
//             }
//         }
//         return null;
//     }
// }


// Path: app/src/main/java/com/earthblood/tictactoe/strategy/ToeStrategyNormal.java
import com.earthblood.tictactoe.util.GameSymbol;

/**
 * @author John Piser developer@earthblood.com
 *
 * Copyright (C) 2014 EARTHBLOOD, LLC
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */
package com.earthblood.tictactoe.strategy;


public class ToeStrategyNormal extends ToeStrategyBase implements ToeStrategy {

    public ToeStrategyNormal(int[] selectedXBoxIds, int[] selectedOBoxIds, GameSymbol androidSymbol) {
        this.selectedXBoxIds = selectedXBoxIds;
        this.selectedOBoxIds = selectedOBoxIds;
        this.androidSymbol   = androidSymbol;
    }

    @Override
    public int getBoxId() {

        StrategyItemPickRandomBox   pickRandom    = new StrategyItemPickRandomBox();
        StrategyItemPickMiddleBox   pickMiddle    = new StrategyItemPickMiddleBox(pickRandom);
        StrategyItemPatternDetector pickDefensive = new StrategyItemPatternDetector(
                                                         pickMiddle,
                                                         totalPatterns() - 5,
                                                         androidOpponent());

        return pickDefensive.execute(selectedXBoxIds, selectedOBoxIds, androidSymbol);
    }

    @Override
    public GameSymbol getSymbol() {