Esempio n. 1
0
        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]);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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.");
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
 public void PlayerPairThrowsForSameColorPlayers()
 {
     var black       = new HumanPlayerBuilder(StoneColor.Black).Build();
     var secondBlack = new HumanPlayerBuilder(StoneColor.Black).Build();
     var players     = new PlayerPair(black, secondBlack);
 }