Esempio n. 1
0
 private void ChangedGame(string strGameChosen)
 {
     //Console.WriteLine("GameChosen: "+strGameChosen);
     try
     {
         if (ChosenGame.Spectators.Contains(this))
         {
             ChosenGame.Spectators.Remove(this);
         }
     }
     catch (Exception) {  }
     if (SpectatingTournament.SpectatorsGames.ContainsKey(strGameChosen))
     {
         ChosenGame = SpectatingTournament.SpectatorsGames[strGameChosen];
     }
     ChosenGame.Spectators.Add(this);
     GameUpdate();
 }
Esempio n. 2
0
 public GameOverEventArgs(Player winner, TTTGame game)
 {
     Winner = winner;
     Game   = game;
 }
Esempio n. 3
0
 public virtual void OnGameOver(Player winner, TTTGame donegame)
 {
     GameOver?.Invoke(this, new GameOverEventArgs(winner, donegame));
 }
Esempio n. 4
0
        public void pairup()
        {
            List <Player> playersRemaining = new List <Player>(); // allows us to remove them

            playersRemaining.AddRange(PlayersWaitingForGame);     // not directly =, since that might not work?
            List <Player> shuffledPlayersRemaining = new List <Player>();

            for (int i = 0; i < playersRemaining.Count; i++)
            {
                shuffledPlayersRemaining.Add(playersRemaining[i]);
            }
            int n = shuffledPlayersRemaining.Count;

            while (n > 1)
            {
                n--;
                int k     = Program.RandomNumber(0, n);
                var value = shuffledPlayersRemaining[k];
                shuffledPlayersRemaining[k] = shuffledPlayersRemaining[n];
                shuffledPlayersRemaining[n] = value;
            }
            if (shuffledPlayersRemaining.Count % 2 != 0)
            {
                if (BotLevel == 0)
                {
                    var player = shuffledPlayersRemaining[0];
                    shuffledPlayersRemaining.Remove(player);
                    player.Send("Wait");
                    Winners.Add(player);
                    player.Tournamentin = this;
                    Thread Ws = new Thread(() => WaitingSpectator(player));
                    Ws.Start();
                }
                else
                {
                    Bot bot = new Bot();
                    shuffledPlayersRemaining.Add(bot.SetPlayer(f1, BotLevel));
                }
            }

            while (shuffledPlayersRemaining.Count > 0)
            {
                Player nought = shuffledPlayersRemaining[0];
                Player cross  = shuffledPlayersRemaining[1];
                nought.Tournamentin = this;
                cross.Tournamentin  = this;
                shuffledPlayersRemaining.Remove(nought);
                shuffledPlayersRemaining.Remove(cross);
                TTTGame newgame = new TTTGame();
                newgame.tournamentin    = this;
                newgame.drawsallowed    = drawsallowed;
                newgame.roundnumber     = TotalRoundNumber;
                GameCount              += 1;
                newgame.CPlayer         = cross;
                newgame.f1              = f1;
                newgame.NPlayer         = nought;
                nought.GameIn           = newgame;
                nought.NoughtOrCross    = 'N';
                nought.oppopent         = cross;
                cross.GameIn            = newgame;
                cross.NoughtOrCross     = 'C';
                cross.oppopent          = nought;
                newgame.roundgamenumber = GameRoundNumber;
                f1.NewLB(cross.Name, nought.Name, GameRoundNumber);
                newgame.totalgamenumber = GameCount;
                newgame.WhoStarting();
                GamesStillPlaying.Add(newgame);
                newgame.GameOver += CheckFinshedGames;
                if (nought._Bot == null)
                {
                    Thread NoughtMessages = new Thread(newgame.HandleNoughtPlayer);
                    NoughtMessages.Start();
                    nought.recicivedataThread = NoughtMessages;
                }
                if (cross._Bot == null)
                {
                    Thread CrossMessages = new Thread(newgame.HandleCrossPlayer);
                    CrossMessages.Start();
                    cross.recicivedataThread = CrossMessages;
                }
                GameRoundNumber += 1;
            }
            gamesofround = GamesStillPlaying.Count();
        }
Esempio n. 5
0
 public void AddSpectatorGame(string noughtplayer, string crossplayer, int roundnumber, int gamenumber, TTTGame Game)
 {
     SpectatorsGames.Add($"{noughtplayer}~{crossplayer}~{Convert.ToString(roundnumber)}~{Convert.ToString(gamenumber)}", Game);
 }