int main(int argc, char* argv[])
{
    MinimaxSearcher ms;
    AlphaBetaSearcher abs;
    NegamaxSearcher ns;
    NegamaxAlphaBetaSearcher nabs;


    AlphaBetaSearcher as;
    HumanPlayer human("张三");
    //ComputerPlayer computer1("KA47");
    //computer1.SetSearcher(&as, SEARCH_DEPTH);
    ComputerPlayer computer("ThinkPad X200");
    computer.SetSearcher(&nabs, SEARCH_DEPTH);

    WzEvaluator wzFunc;
    FeEvaluator feFunc;
    GameState init_state;
    init_state.InitGameState(PLAYER_A);
    init_state.SetEvaluator(&feFunc);
    /*
        init_state.SetGameCell(0, PLAYER_A);
        init_state.SetGameCell(1, PLAYER_B);
        init_state.SetGameCell(3, PLAYER_B);
        init_state.SetGameCell(4, PLAYER_B);
        init_state.SetGameCell(5, PLAYER_A);
        init_state.SetGameCell(6, PLAYER_A);
    */
    /*
        init_state.SetGameCell(0, PLAYER_B);
        init_state.SetGameCell(3, PLAYER_B);
        init_state.SetGameCell(4, PLAYER_A);
        init_state.SetGameCell(5, PLAYER_A);
        init_state.SetGameCell(6, PLAYER_A);
        init_state.SetGameCell(8, PLAYER_B);
    */
    GameControl gc;
    gc.SetPlayer(&computer, PLAYER_A);
    gc.SetPlayer(&human, PLAYER_B);
    //gc.SetPlayer(&computer1, PLAYER_B);
    gc.InitGameState(init_state);
    gc.Run();

    return 0;
}