public void IndexerReturnsCorrectPlayers() { var black = new HumanPlayerBuilder(StoneColor.Black).Build(); var white = new HumanPlayerBuilder(StoneColor.White).Build(); var players = new PlayerPair(black, white); Assert.AreEqual(black, players[StoneColor.Black]); Assert.AreEqual(white, players[StoneColor.White]); }
public void PlayersAreSetProperlyToTheRightColors() { var black = new HumanPlayerBuilder(StoneColor.Black).Build(); var white = new HumanPlayerBuilder(StoneColor.White).Build(); var firstOrderPlayers = new PlayerPair(black, white); var secondOrderPlayers = new PlayerPair(white, black); Assert.AreEqual(black, firstOrderPlayers.Black); Assert.AreEqual(black, secondOrderPlayers.Black); Assert.AreEqual(white, firstOrderPlayers.White); Assert.AreEqual(white, secondOrderPlayers.White); }
public override void Process(KgsConnection connection) { KgsGameInfo info = KgsGameInfo.FromGameJoin(this); if (info == null) { return; } var channel = connection.Data.GetChannel(this.ChannelId); if (channel == null) { channel = connection.Data.CreateGame(KgsTrueGameChannel.FromGameInfo(info, this.ChannelId)); } var blackPlayer = new KgsPlayerBuilder(Game.StoneColor.Black, connection) .Name(info.Black.Name) .Rank(info.Black.Rank) .Build(); if (info.Black.Name == connection.Username) { blackPlayer = new HumanPlayerBuilder(Game.StoneColor.Black).Name(info.Black.Name).Rank(info.Black.Rank).Build(); } var whitePlayer = new KgsPlayerBuilder(Game.StoneColor.White, connection) .Name(info.White.Name) .Rank(info.White.Rank) .Build(); if (info.White.Name == connection.Username) { whitePlayer = new HumanPlayerBuilder(Game.StoneColor.White).Name(info.White.Name).Rank(info.White.Rank).Build(); } var ongame = new KgsGameBuilder(info, connection) .BlackPlayer(blackPlayer) .WhitePlayer(whitePlayer) .Build(); connection.Data.JoinGame(ongame, channel as KgsTrueGameChannel); foreach (var ev in SgfEvents) { ev.ExecuteAsIncoming(connection, ongame); } connection.Events.RaiseGameJoined(ongame); }
private GamePlayer CreateAgentFromComboboxObject(InGameForm form, object text, StoneColor color) { TimeControl timeControl = null; if (rbNoTimeControl.Checked) { timeControl = new NoTimeControl(); } else if (rbAbsoluteTiming.Checked) { timeControl = new AbsoluteTimeControl(1); } else if (rbCanadianTiming.Checked) { timeControl = new CanadianTimeControl(TimeSpan.FromSeconds(10), 5, TimeSpan.FromSeconds(10)); } else if (rbJapaneseTiming.Checked) { timeControl = new JapaneseTimeControl(20, 30, 3); } if (text is string && ((string)text) == "Human") { GamePlayer human = new HumanPlayerBuilder(color) .Name(color.ToString()) .Rank("NR") .Clock(timeControl) .Build(); (human.Agent as HumanAgent).MoveRequested += (e, e2) => { form.GuiAgent_PleaseMakeAMove(null, null); }; return(human); } if (text is IAIProgram) { IAIProgram newInstance = (IAIProgram)Activator.CreateInstance(text.GetType()); GamePlayer aiPlayer = new AiPlayerBuilder(color) .Name(text.ToString() + "(" + color.ToIgsCharacterString() + ")") .Rank("NR") .Clock(timeControl) .AiProgram(newInstance) .Build(); return(aiPlayer); } throw new Exception("This agent cannot be handled yet."); }
public async Task <IgsGame> AcceptMatchRequestAsync(IgsMatchRequest matchRequest) { // We are accepting a match and it begins. var lines = await MakeRequestAsync(matchRequest.AcceptCommand); if (lines.IsError) { return(null); } if (lines.Any(ln => ln.Code == IgsCode.Info && ln.PureLine.Contains("Requesting"))) { this.igsConnection.Events.OnErrorMessageReceived("Requesting " + matchRequest.OpponentName + " to confirm match."); return(null); } var heading = this.igsConnection.Data.LastReceivedGameHeading; var ogi = await GetGameByIdAsync(heading.GameNumber); var builder = GameBuilder.CreateOnlineGame(ogi).Connection(this.igsConnection); bool youAreBlack = heading.BlackName == this.igsConnection.Username; var humanPlayer = new HumanPlayerBuilder(youAreBlack ? StoneColor.Black : StoneColor.White).Name(youAreBlack ? heading.BlackName : heading.WhiteName) .Rank(youAreBlack ? ogi.Black.Rank : ogi.White.Rank) .Clock(new CanadianTimeControl(TimeSpan.Zero, 25, TimeSpan.FromMinutes(ogi.ByoyomiPeriod))) .Build(); var onlinePlayer = new IgsPlayerBuilder(youAreBlack ? StoneColor.White : StoneColor.Black, this.igsConnection).Name( youAreBlack ? heading.WhiteName : heading.BlackName) .Rank(youAreBlack ? ogi.White.Rank : ogi.Black.Rank) .Clock(new CanadianTimeControl(TimeSpan.Zero, 25, TimeSpan.FromMinutes(ogi.ByoyomiPeriod))) .Build(); builder.BlackPlayer(youAreBlack ? humanPlayer : onlinePlayer) .WhitePlayer(youAreBlack ? onlinePlayer : humanPlayer); var game = builder.Build(); this.igsConnection.GamesYouHaveOpened.Add(game); return(game); }
public void PlayerPairThrowsForSameColorPlayers() { var black = new HumanPlayerBuilder(StoneColor.Black).Build(); var secondBlack = new HumanPlayerBuilder(StoneColor.Black).Build(); var players = new PlayerPair(black, secondBlack); }