Exemple #1
0
        public void StartGame()
        {
            int many = 12; //Количество игроков

            GameIn?.Invoke("Игра началась");
            CreatePlayers(many);
            if (dealingcards == false)
            {
                DealCards();
            }

            foreach (var player in Player.PlayersList)
            {
                player.IsAlive = true;
                //Открытие всех позиций, соотвтествующих уровню LevelAdd
                foreach (Position pos in player.PlayerCard.allpositions)
                {
                    if (pos.Levelhide <= LevelAdd)
                    {
                        pos.Open = true;
                    }
                }
            }
            StartNewRound();
        }
Exemple #2
0
        //Один проход по всем игрокам
        public void StartNewRound()
        {
            while (true)
            {
                if (Player.PlayersList.Count <= PlayersToEnd)
                {
                    GameIn?.Invoke("Игра окончена");
                    GameIn?.Invoke("В отряде остались игроки:");
                    foreach (var player in Player.PlayersList)
                    {
                        GameIn?.Invoke(player.Name);
                    }
                    break;
                }
                RoundNumber++;
                GameIn?.Invoke($"Начался раунд {RoundNumber}");
                //Таймер (подключить отдельно для возможности игры с таймером и без)
                foreach (var player in Player.PlayersList)
                {
                    if (player.IsAlive)
                    {
                        player.Talking(this);
                    }
                }
                GameIn?.Invoke("Начинается голосование");
                Voting(Player.PlayersList);


                //Как реализовать удаление игрока???

                //Обработка результатов голосования (передается список игроков, над которыми будет работать алгоритм)
                List <Player> tosurvive = ToSurvive(Player.PlayersList);
                DeleteOrSurviveRound(tosurvive);
            }
        }
Exemple #3
0
 public void DeletePlayerByVotes(List <Player> tosurvive)
 {
     GameIn?.Invoke($"Игрок {tosurvive[0].Name} покидает игру");
     tosurvive[0].DeletePlayer();
     Main.TextBlockDict["BlockPlayer" + tosurvive[0].Quanity.ToString()].Text = "";
     Main.ChangeEnableSub(true, false, false);
     MaxVote = 0;
     IsNow   = false;
 }
Exemple #4
0
 //Раздача карт (до начала игры)
 public void DealCards()
 {
     foreach (var player in Player.PlayersList)
     {
         player.CreateOrRefreshCard();
     }
     dealingcards = true;
     GameIn?.Invoke("Все игроки получили карты");
 }
Exemple #5
0
        //Один проход по всем игрокам (surviveround = true раунд выживания)
        public void StartNewRound(List <Player> playerlist, bool surviveround = false)
        {
            Main.HideTimer();

            Main.ChangeEnableSub(false, true, false);
            Main.ChangeEnable(Main.ButtonVoteDict, false);

            Main.ChangeEnable(Main.ButtonDeleteDict, false);
            Main.ChangeEnable(Main.ButtonDeleteDict, true);
            Main.VoteQuantity = 0;
            Main.ClearBlocks(Main.BlockVoteQuantityDict);
            PlayersEndTalk         = 0;
            Main.GameProgress.Text = ""; //очищаем чат
            Main.BVoting.Content   = "Начать голосование";

            if (surviveround == false)
            {
                RoundNumber++;
                foreach (var player in playerlist)
                {
                    player.OnVote = false;
                }

                //Сдвигаем круг ходов на одного игрока
                if (RoundNumber != 1)
                {
                    Player firstplayer = Player.PlayersList[0];
                    Player.PlayersList.Remove(firstplayer);
                    Player.PlayersList.Add(firstplayer);
                }

                Main.ChangeEnable(Main.ButtonExposeDict, true);
                ResetVotes();
                Main.IsSurvive = false;

                GameIn?.Invoke($"Начался раунд {RoundNumber}");
            }

            Main.BNext_Talking.Content = $"Ход игрока {playerlist[PlayersEndTalk].Name}";
            //Таймер (подключить отдельно для возможности игры с таймером и без)

            CheckEndGame();

            if (surviveround == false)
            {
                if (playerlist.Count > 0)
                {
                    CardReload();
                    PrintCard();
                }
            }
        }
Exemple #6
0
        //Раздача карт (до начала игры)
        //public void DealCards()
        //{

        //    dealingcards = true;
        //    GameIn?.Invoke("Все игроки получили карты");
        //}

        public Game StartGame()
        {
            GameIn?.Invoke("Игра началась");
            CreatePlayers(PlayersToStart);

            Main.BlockNameCatastrophe.Text = Cataclysm.Data;
            Main.BlockNameDescription.Text = Cataclysm.Description;

            CardReload(true);
            PrintCard();

            return(this);
        }
Exemple #7
0
 //Проверка на конец игры
 public void CheckEndGame()
 {
     if (Player.PlayersList.Count <= PlayersToEnd)
     {
         GameIn?.Invoke("Игра окончена");
         GameIn?.Invoke("В отряде остались игроки:");
         foreach (var player in Player.PlayersList)
         {
             GameIn?.Invoke(player.Name);
         }
         Player.DeleteAllPlayers();
         Main.ChangeEnableSub(false, false, false);
     }
 }
Exemple #8
0
 //Метод просматривает количество голосов, если есть лидер, то исключает его
 //Если таких игроков несколько, то проводит второй круг между игроками борющимися за выживание
 public void DeleteOrSurviveRound(List <Player> tosurvive)
 {
     if (tosurvive.Count == 0)
     {
     }
     else if (tosurvive.Count == 1)
     {
         DeletePlayerByVotes(tosurvive);
         MaxVote = 0;
     }
     else if (IsNow == false)
     {
         foreach (var player in tosurvive)
         {
             if (player.Vote != MaxVote)
             {
                 tosurvive.Remove(player);
             }
         }
         Main.IsSurvive = true;
         StartNewRound(tosurvive, Main.IsSurvive);
         IsNow = true;
         Main.BVoting.Content = "Начать голосование";
     }
     else if (IsNow == true)
     {
         if (tosurvive[0].Vote != 0)
         {
             foreach (var player in tosurvive)
             {
                 player.DeletePlayer();
                 GameIn?.Invoke($"Игрок {player.Name} покидает игру");
                 Main.TextBlockDict["BlockPlayer" + player.Quanity.ToString()].Text = "";
             }
             MaxVote = 0;
         }
         Main.BNext_Talking.Content = "Ход следующего игрока";
         Main.IsSurvive             = false;
         Main.ChangeEnableSub(true, false, false);
         IsNow = false;
     }
 }
Exemple #9
0
        //Алгоритм определяет за кого проголосовало больше всего игроков
        public List <Player> ToSurvive(List <Player> Players)
        {
            List <Player> tosurvive = new List <Player>();
            int           current   = 0;

            MaxVote = 0;
            foreach (var player in Players)
            {
                current = player.Vote;
                if (current > MaxVote)
                {
                    MaxVote = current;
                    tosurvive.Clear();
                    tosurvive.Add(player);
                }
                else if (current == MaxVote)
                {
                    tosurvive.Add(player);
                }
            }
            GameIn?.Invoke($"Максимальное количество голосов: {MaxVote}");
            return(tosurvive);
        }
Exemple #10
0
        //Метод просматривает количество голосов, если есть лидер, то исключает его
        //Если таких игроков несколько, то проводит второй круг между игроками борющимися за выживание
        public void DeleteOrSurviveRound(List <Player> tosurvive)
        {
            if (tosurvive.Count == 1)
            {
                GameIn?.Invoke($"Игрок {tosurvive[0].Name} покидает игру");
                tosurvive[0].DeletePlayer();
                tosurvive.Remove(tosurvive[0]);
            }
            else
            {
                foreach (var player in tosurvive)
                {
                    player.Talking(this);
                }
            }
            Voting(tosurvive);
            List <Player> result = ToSurvive(tosurvive);

            foreach (var player in result)
            {
                GameIn?.Invoke($"Игрок {player.Name} покидает игру");
                player.DeletePlayer();
            }
        }