private void Play(IBot bot, ITicTacToeBotAbility botAbility, ITicTacToeEnvironmentContext context) { var spaces = m_board.GetSpaces(); var p = botAbility.PlayTurn(context); if (spaces[p.RowIndex, p.ColumnIndex].SpaceType == SpaceType.Empty) { m_board.SetSpace(p.RowIndex, p.ColumnIndex, context.MySpaceType); return; } else { var msg = String.Format(CultureInfo.CurrentUICulture, "O bot '{0}' executou uma atualização inválida. Tentativa de jogar na linha {1} e coluna {2}.", bot.Name, p.RowIndex, p.ColumnIndex); throw new InvalidOperationException(msg); } }
/// <summary> /// Initializes the round. /// </summary> /// <param name="context">The world context.</param> public override void InitializeRound(IWorldContext context) { m_board = new TicTacToeBoard(); m_noughtBotEnviromentContext = new TicTacToeEnvironmentContext(); m_crossBotEnviromentContext = new TicTacToeEnvironmentContext(); m_upateResult = new TicTacToeEnvironmentUpdateResult(); var bots = context.GetBotsWithKindOfAbility <ITicTacToeBotAbility>(); m_crossBot = bots[0]; m_crossBotAbility = (ITicTacToeBotAbility)context.GetBotAbility <ITicTacToeBotAbility>(m_crossBot); m_crossBotEnviromentContext.Board = m_board; m_crossBotEnviromentContext.MySpaceType = SpaceType.Cross; m_crossBotEnviromentContext.OpponentSpaceType = SpaceType.Nought; m_noughtBot = bots[1]; m_noughtBotAbility = (ITicTacToeBotAbility)context.GetBotAbility <ITicTacToeBotAbility>(m_noughtBot); m_noughtBotEnviromentContext.Board = m_board; m_noughtBotEnviromentContext.MySpaceType = SpaceType.Nought; m_noughtBotEnviromentContext.OpponentSpaceType = SpaceType.Cross; m_winnerSpaces = new ITicTacToeBoardSpace[0]; }