Beispiel #1
0
        private List <UnpreparedTrainingsset> getUnpreparedTrainingssets(Game i_game, List <String> lstr, AlgoBot algobot)
        {
            List <UnpreparedTrainingsset> result = new List <UnpreparedTrainingsset>();
            Game n_game;

            if (!lstr.Contains(Game.BoardToString(i_game.Gameboard, i_game.turn)))
            {
                if (!i_game.over)//only save anything if there is a playble move afterwards
                {
                    int[] bestmove            = algobot.findBestMove(i_game, i_game.turn);
                    UnpreparedTrainingsset ut = new UnpreparedTrainingsset();
                    ut.inputGame  = i_game.Gameboard;
                    ut.turn       = i_game.turn;
                    ut.outputMove = bestmove;
                    result.Add(ut);
                    List <int[]> possibleMove = this.PossibleMoves(i_game);
                    for (int i = 0; i < possibleMove.Count; i++)
                    {
                        n_game = i_game.copy();
                        bool b = n_game.MakeMove(possibleMove[i][0], possibleMove[i][1], n_game.turn);
                        if (!b)
                        {
                            throw new Exception("nana");
                        }
                        List <UnpreparedTrainingsset> lst = getUnpreparedTrainingssets(n_game, lstr, algobot);
                        foreach (UnpreparedTrainingsset l in lst)
                        {
                            result.Add(l);
                            lstr.Add(Game.BoardToString(l.inputGame, i_game.turn));
                        }
                    }
                }
            }
            return(result);
        }