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(); }
public GameOverEventArgs(Player winner, TTTGame game) { Winner = winner; Game = game; }
public virtual void OnGameOver(Player winner, TTTGame donegame) { GameOver?.Invoke(this, new GameOverEventArgs(winner, donegame)); }
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(); }
public void AddSpectatorGame(string noughtplayer, string crossplayer, int roundnumber, int gamenumber, TTTGame Game) { SpectatorsGames.Add($"{noughtplayer}~{crossplayer}~{Convert.ToString(roundnumber)}~{Convert.ToString(gamenumber)}", Game); }