예제 #1
0
        public void checkLostActions(Playfield p, bool isLethalCheck)
        {
            Playfield tmpPf = new Playfield();

            foreach (Action a in p.playactions)
            {
                tmpPf.doAction(a);
            }
            MiniSimulator mainTurnSimulator = new MiniSimulator(6, 3000, 0);

            mainTurnSimulator.setSecondTurnSimu(settings.simulateEnemysTurn, settings.secondTurnAmount);
            mainTurnSimulator.setPlayAround(settings.playarround, settings.playaroundprob, settings.playaroundprob2);

            //tmpPf.checkLostAct = true;

            float bestval = mainTurnSimulator.doallmoves(tmpPf, isLethalCheck);

            if (bestval > p.value)
            {
                p.playactions.Clear();
                p.playactions.AddRange(mainTurnSimulator.bestboard.playactions);
                p.value = bestval;
            }
        }
예제 #2
0
        private Ai()
        {
            this.nextMoveGuess = new Playfield {
                mana = -100
            };

            this.mainTurnSimulator = new MiniSimulator(maxdeep, maxwide, 0); // 0 for unlimited
            this.mainTurnSimulator.setPrintingstuff(true);

            /*this.nextTurnSimulator = new MiniSimulatorNextTurn();
             * this.enemyTurnSim = new EnemyTurnSimulator();
             * this.enemySecondTurnSim = new EnemyTurnSimulator();*/

            for (int i = 0; i < Settings.Instance.numberOfThreads; i++)
            {
                this.nextTurnSimulator.Add(new MiniSimulatorNextTurn());
                //this.enemyTurnSim.Add(new EnemyTurnSimulator());
                //this.enemySecondTurnSim.Add(new EnemyTurnSimulator());

                this.nextTurnSimulator[i].thread = i;
                //this.enemyTurnSim[i].thread = i;
                //this.enemySecondTurnSim[i].thread = i;
            }
        }