public void EventCardAdded(Player player)
        {
            Player nextPlayer = NextPlayerPlayingCard(player);

            if (nextPlayer != null)
            {
                server.AskPlayCard(nextPlayer, RoundDeck);
            }
            else
            {
                tourPlayingCard = 0;
                Player firstPlayer = RoundDeck.AddPointToTeams();
                RoundDeck.ClearTable();
                if (firstPlayer != null && firstPlayer.Deck.cards.Count > 0)
                {
                    server.AskPlayCard(firstPlayer, RoundDeck);
                }
                else
                {
                    // On recommence les paris
                    DisplayScores();
                    bet = new Bet();
                    Deck.ReGenerate();
                    Deck.Distrib(Team);
                    server.AskBet(Team.First().Player.First(), bet);
                    // jeu finis et on compte les points
                }
            }
        }
        public void DoAddCard(Player player, int idCard)
        {
            Card c = player.Deck.cards.ElementAt(idCard);

            c.player = player;
            RoundDeck.AddCard(c);
            player.Deck.cards.RemoveAt(idCard);
            EventCardAdded(player);
        }
Ejemplo n.º 3
0
 void GiveOutCardsToPlayers(Model model)
 {
     for (int i = 0; i < 7; i++)
     {
         foreach (var player in PlayersList)
         {
             player.Take(RoundDeck.Draw());
         }
         model.Update(this);
     }
 }
Ejemplo n.º 4
0
 void GiveOutCardsToPlayers()
 {
     for (int i = 0; i < 7; i++)
     {
         foreach (var player in PlayersList)
         {
             player.Take(RoundDeck.Draw());
             BoardInfo.Update(PlayersList, PlayersList[0].CardList);
         }
     }
 }
Ejemplo n.º 5
0
 void GiveOutCardsToPlayers()
 {
     for (int i = 0; i < 7; i++)
     {
         foreach (var player in PlayersList)
         {
             player.Take(RoundDeck.Draw());
             Thread.Sleep(100);
             //передача инфы в модел
         }
     }
 }
Ejemplo n.º 6
0
 void Update(Turn turn, Card card)
 {
     CentralCard = card;
     if (turn.SkipMove)
     {
         skipMove = SkipMove.Skip;
     }
     if (turn.Take2cards)
     {
         PlayersList[currentPlayer].CardList.Add(RoundDeck.Draw());
         PlayersList[currentPlayer].CardList.Add(RoundDeck.Draw());
     }
     if (turn.ChangeDirection)
     {
         if (direction == Direction.Сlockwise)
         {
             direction = Direction.СounterСlockwise;
         }
         else
         {
             direction = Direction.Сlockwise;
         }
     }
 }
Ejemplo n.º 7
0
        public Tuple <Player, int> Run()
        {
            Card cardOnBoard = RoundDeck.Draw();

            BoardInfo      = new BoardInfo(PlayersList, PlayersList[0].CardList);
            Info.boardInfo = BoardInfo;
            GiveOutCardsToPlayers();
            bool isSomebodyWin = false;

            CentralCard = RoundDeck.Draw();
            BoardInfo.Update(PlayersList, PlayersList[0].CardList, CentralCard);
            Player winner = new Player("winner");

            while (!isSomebodyWin)
            {
                if (currentPlayer == 0)
                {
                    // тут надо написать так, чтобы у карт, которые можно положить было выделение
                    bool markCard = true;
                    while (Info.mark == false)
                    {
                        var listCardsPlayer = PlayersList[0].CardList;
                        for (int i = 0; i < listCardsPlayer.Count(); i++)
                        {
                            if (markCard == true && (listCardsPlayer[i].Color == cardOnBoard.Color || listCardsPlayer[i].Inscription == cardOnBoard.Inscription))
                            {
                                Info.MarkCards.Add(i, true);
                            }
                            if (i == listCardsPlayer.Count() - 1)
                            {
                                markCard = false;
                            }
                        }
                    }
                    // какое-то условие
                    var turn = Turn.MakeTurn(CentralCard, PlayersList[0].CardList[Info.currentCard]);
                    Update(turn, PlayersList[0].CardList[Info.currentCard]);
                    PlayersList[currentPlayer].CardList.RemoveAt(Info.currentCard);
                    Info.mark = false;
                }
                else
                {
                    var bot        = PlayersList[currentPlayer] as Bot;
                    var turnResult = bot.MakeTurn(CentralCard);
                    if (turnResult == null)
                    {
                        bot.CardList.Add(RoundDeck.Draw());
                        var endTurnResult = bot.MakeTurnWithTakeCard(CentralCard);
                        if (endTurnResult != null)
                        {
                            Update(endTurnResult.Item2, endTurnResult.Item1);
                            PlayersList[currentPlayer].CardList.Remove(endTurnResult.Item1);
                        }
                    }
                    else
                    {
                        Update(turnResult.Item2, turnResult.Item1);
                    }
                    if (turnResult != null)
                    {
                        PlayersList[currentPlayer].CardList.Remove(turnResult.Item1);
                    }
                    Info.MarkCards.Clear();
                }
                NextPlayer();
                for (int i = 0; i < 4; i++)
                {
                    if (PlayersList[i].CardList.Count == 0)
                    {
                        winner        = PlayersList[i];
                        isSomebodyWin = true;
                    }
                }
                Thread.Sleep(100);
                BoardInfo.Update(PlayersList, PlayersList[0].CardList, CentralCard);
            }
            int score = 0;

            for (int i = 0; i < 4; i++)
            {
                score += PlayersList[1].CardList.Count * 10;
            }
            return(new Tuple <Player, int>(winner, score));
        }
Ejemplo n.º 8
0
        public Tuple <Player, int> Run()
        {
            BoardInfo      = new BoardInfo(PlayersList, PlayersList[0].CardList);
            Info.boardInfo = BoardInfo;
            GiveOutCardsToPlayers();
            bool isSomebodyWin = false;

            CentralCard = RoundDeck.Draw();
            BoardInfo.Update(PlayersList, PlayersList[0].CardList, CentralCard);
            Player winner = new Player("winner");

            while (!isSomebodyWin)
            {
                if (currentPlayer == 0)
                {
                    List <bool> isAvailible     = new List <bool>();
                    var         listCardsPlayer = PlayersList[0].CardList;
                    for (int i = 0; i < listCardsPlayer.Count(); i++)
                    {
                        if (listCardsPlayer[i].Color == CentralCard.Color || listCardsPlayer[i].Inscription == CentralCard.Inscription)
                        {
                            isAvailible.Add(true);
                        }
                        else
                        {
                            isAvailible.Add(false);
                        }
                    }
                    var flag = false;
                    foreach (var bol in isAvailible)
                    {
                        if (bol)
                        {
                            flag = true;
                        }
                    }
                    if (!flag && !wastaking)
                    {
                        PlayersList[currentPlayer].CardList.Add(RoundDeck.Draw());
                        BoardInfo.Update(PlayersList, PlayersList[0].CardList, CentralCard);
                        wastaking = true;
                        continue;
                    }
                    else if (!flag && wastaking)
                    {
                        Thread.Sleep(150);
                        NextPlayer();
                        BoardInfo.Update(PlayersList, PlayersList[0].CardList, CentralCard);
                        continue;
                    }
                    Info.borders      = Translater.Translate(isAvailible);
                    Info.visibleCards = Translater.Translate(PlayersList[0].CardList);
                    Info.enabledCards = Translater.BoolTranslate(PlayersList[0].CardList);
                    while (Info.mark == false)
                    {
                    }
                    if (PlayersList[0].CardList[Info.currentCard].Color != CentralCard.Color &&
                        PlayersList[0].CardList[Info.currentCard].Inscription != CentralCard.Inscription)
                    {
                        Info.mark = false;
                        continue;
                    }
                    var turn = Turn.MakeTurn(CentralCard, PlayersList[0].CardList[Info.currentCard]);
                    Update(turn, PlayersList[0].CardList[Info.currentCard]);
                    PlayersList[currentPlayer].CardList.RemoveAt(Info.currentCard);
                    Info.mark = false;
                    Thread.Sleep(150);
                }
                else
                {
                    var bot        = PlayersList[currentPlayer] as Bot;
                    var turnResult = bot.MakeTurn(CentralCard);
                    if (turnResult == null)
                    {
                        bot.CardList.Add(RoundDeck.Draw());
                        var endTurnResult = bot.MakeTurnWithTakeCard(CentralCard);
                        if (endTurnResult != null)
                        {
                            Update(endTurnResult.Item2, endTurnResult.Item1);
                            PlayersList[currentPlayer].CardList.Remove(endTurnResult.Item1);
                        }
                    }
                    else
                    {
                        Update(turnResult.Item2, turnResult.Item1);
                    }
                    if (turnResult != null)
                    {
                        PlayersList[currentPlayer].CardList.Remove(turnResult.Item1);
                    }
                }
                NextPlayer();
                for (int i = 0; i < 4; i++)
                {
                    if (PlayersList[i].CardList.Count == 0)
                    {
                        winner        = PlayersList[i];
                        isSomebodyWin = true;
                    }
                }
                Thread.Sleep(250);
                BoardInfo.Update(PlayersList, PlayersList[0].CardList, CentralCard);
            }
            int score = 0;

            for (int i = 0; i < 4; i++)
            {
                score += PlayersList[1].CardList.Count * 10;
            }
            RoundDeck = new Deck();
            foreach (var player in PlayersList)
            {
                player.CardList.Clear();
            }
            return(new Tuple <Player, int>(winner, score));
        }