protected override int Find(ComputerBrain computerBrain, Layout currentGame) { var probabilityManager = new ProbabilityManager(); var currentGameArray = currentGame.Positions.ToArray(); var beforeEqualGames = computerBrain.Memory.Where(i => i.Positions.SequenceEqual(currentGame.Positions)); var lostGames = beforeEqualGames.Where(i => !i.ComputerWin); var failMoves = GetNextTurnMoves(computerBrain, currentGame, lostGames); var lostPositions = GetPositionMoves(currentGameArray, failMoves); lostPositions.ForEach(position => probabilityManager.Increment(position, false)); var winGames = beforeEqualGames.Where(i => i.ComputerWin); var correctMoves = GetNextTurnMoves(computerBrain, currentGame, winGames); var winPositions = GetPositionMoves(currentGameArray, correctMoves); winPositions.ForEach(position => probabilityManager.Increment(position, true)); var findedPosition = probabilityManager.BestPosition(probabilityManager.ShouldMoveToWin()); if (currentGame.CanMove(findedPosition)) { return(findedPosition); } return(AnyPosition(currentGame)); }
private void Start() { gameUI = GameUI.Instance(); playerControl = PlayerControl.Instance(); cameraManager = CameraManager.Instance(); mapManager = MapManager.Instance(); dataManager = DataManager.Instance(); probabilityManager = ProbabilityManager.Instance(); allTime = Constant.Instance().ALLTIME; nowTime = allTime; }
void Start() { mapWall = Resources.Load("wall") as GameObject; mapTile = Resources.Load("tile") as GameObject; mapCoin = Resources.Load("coin") as GameObject; mapSkySpikes = Resources.Load("skySpikes") as GameObject; mapSpikes = Resources.Load("spikes") as GameObject; mapColor = SceneTypeManager.Instance().SelectColor(SceneTypeManager.Instance().currentType); mapConstant = Constant.Instance(); mapProbability = ProbabilityManager.Instance(); CreateMap(); player = GameObject.Instantiate(Resources.Load(SceneTypeManager.Instance().playerName) as GameObject); }