Пример #1
0
        /// <summary>
        /// Koncowka lewy, wykonuje sie po wykonaniu ruchu przez gracza
        /// </summary>
        private void EndTrick()
        {
            GameShape.CardMouseLeftButtonDown -= new MouseButtonEventHandler(GameShape_CardMouseLeftButtonDown);
            Canvas.SetZIndex(Player4Trick, 4);
            bool renons;

            for (int i = 1; i < WistPlayerNumber; i++)
            {
                Deck playerXMoves = new Deck(PlayersHandDecks[i - 1].Deck);
                playerXMoves = GameRules.PossibleMoves(PlayersHandDecks[i - 1].Deck, WistCard, out renons);
                PlayCardChosenAlgorithm(playerXMoves, PlayersTricks[i - 1], PlayersUsedCards[i - 1], PlayersAlgorithms[i - 1]);
                PlayersHandDecks[i - 1].Deck.Sort();
                //sprawdz czy dolozyl do koloru, jezeli nie to ustaw krotkosc
                if (renons)
                {
                    PlayersUsedCards[i - 1].CardRenons[WistCard.Suit] = true;
                }

                Canvas.SetZIndex(PlayersTricks[i - 1], 4 + i);
            }

            GameShape.MouseLeftButtonDown += new MouseButtonEventHandler(GameShape_MouseLeftButtonDown);
            GameShape.KeyUp += new KeyEventHandler(GameShape_KeyUp);
            //BeginTrick();
        }
Пример #2
0
        private void CleanUpTrick()
        {
            //dodaj numer wistujacego juz w zakresie 0-3
            wistList.Add(WistPlayerNumber - 1);

            //sprawdz kto wygral lewe i ustaw nowego wistujacego
            WistPlayerNumber = GameRules.TrickWinner(Player1Trick.Deck.TopCard, Player2Trick.Deck.TopCard, Player3Trick.Deck.TopCard, Player4Trick.Deck.TopCard, TrumpColor, WistPlayerNumber);
            WistCard         = null;

            //w tym miejscu wygrany jest juz wyliczony
            Hand trickVictoryPlayer = PlayersUsedCards[WistPlayerNumber - 1];

            //Hand trickVictoryPlayer = DetermineWhichPlayerUsedCards(WistPlayerNumber);

            //dodaj wygrane karty do reki gracza
            trickVictoryPlayer.AddInHand(new Card(Player1Trick.Deck.TopCard));
            trickVictoryPlayer.AddInHand(new Card(Player2Trick.Deck.TopCard));
            trickVictoryPlayer.AddInHand(new Card(Player3Trick.Deck.TopCard));
            trickVictoryPlayer.AddInHand(new Card(Player4Trick.Deck.TopCard));

            //przesun karty ze srodka do talii zuzytych kart
            Player1Trick.Deck.Draw(PlayedCards.Deck, 1);
            Player2Trick.Deck.Draw(PlayedCards.Deck, 1);
            Player3Trick.Deck.Draw(PlayedCards.Deck, 1);
            Player4Trick.Deck.Draw(PlayedCards.Deck, 1);
            PlayedCards.Deck.AllCardsNotVisible();
            PlayedCards.Deck.Sort();

            this.tricksNS.DataContext = Player2UsedCards.CardsInHand.Count / 4 + Player4UsedCards.CardsInHand.Count / 4;
            this.tricksWE.DataContext = Player1UsedCards.CardsInHand.Count / 4 + Player3UsedCards.CardsInHand.Count / 4;

            currentTrick.Clear();
        }
Пример #3
0
        /// <summary>
        /// Zwraca obecnie wygrywajaca lewe karte. Jezeli jest tylko 1 karta w lewie to zwroci ja.
        /// Kolorem obowiazujacym jest kolor wistu (czyli 1sza karta na liscie).
        /// </summary>
        /// <param name="curTrickCards">Obecna lewa. Moze sie skladac z od 0 do 4 kart.</param>
        /// <param name="outHighestCard">Zwracana karta w out'ie ktora jest najwysza.</param>
        /// <returns>PRAWDA jezeli jest jakas karta w lewie. Jezeli lewa jest pusta to nie ma co zwroc
        /// i zwraca FALSE, zas w out'ie jest null.</returns>
        public bool curTrickHighestCard(List <Card> curTrickCards, out Card outHighestCard)
        {
            Card highestCard = null;

            //jezeli pusty to zwroc nulla i false (nie ma najwyzszej)
            if (curTrickCards.Count <= 0)
            {
                outHighestCard = highestCard;
                return(false);
            }

            highestCard = curTrickCards.First();
            //jezeli jeden element to zwroc go
            if (curTrickCards.Count == 1)
            {
                outHighestCard = highestCard;
                return(true);
            }

            //jezeli wiecej niz 1 element to porownaj po kolei
            for (int i = 0; i < curTrickCards.Count; i++)
            {
                GameRules.CompareCards(highestCard, curTrickCards[i], TrumpColor, out highestCard);
            }

            outHighestCard = highestCard;
            return(true);
        }
Пример #4
0
        private void GameShape_CardMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            //zablokuj eventy
            //GameShape.CardDrag -= new CardDragEventHandler(GameShape_CardDrag);
            GameShape.CardMouseLeftButtonDown -= new MouseButtonEventHandler(GameShape_CardMouseLeftButtonDown);

            bool renons;
            //klikniecie na karte sprobuje zagrac karte
            var       cardShapeClicked = (CardShape)sender;
            CardShape card             = (CardShape)sender;
            var       gameShape        = GameShape.GetGameShape(card.Card.Deck.Game);
            var       oldDeckShape     = gameShape.GetDeckShape(card.Card.Deck);

            if (oldDeckShape.Name == "Player4Hand")
            {
                //wygeneruj mozliwe ruchy gracza
                Deck player4Moves = new Deck(Player4Hand.Deck);
                player4Moves = GameRules.PossibleMoves(Player4Hand.Deck, WistCard, out renons);
                Player4Hand.Deck.Sort();

                //karta ktora chce zagrac gracz
                Card userPlayedCard = new Card(card.Card.Rank, card.Card.Suit, player4Moves);

                //sprawdz czy karta ktora chce zagrac gracz jest w jego mozliwych ruchac
                if (player4Moves.Has(userPlayedCard.Rank, userPlayedCard.Suit))
                {
                    Player4UsedCards.AddPlayed(userPlayedCard);
                    Player4UsedCards.SortHigh();
                    //jezeli graz jest wistujacym to jego ruch staje sie karta wistujaca
                    if (WistPlayerNumber == 4)
                    {
                        WistCard = userPlayedCard;
                    }
                    //jezeli nie jest to sprawdz czy nie ma krotkosci
                    else if (renons)
                    {
                        Player4UsedCards.CardRenons[WistCard.Suit] = true;
                    }

                    PlayCard(Player4Hand.Deck, Player4Trick.Deck, card.Card);

                    //card.Card.Deck = Player4Trick.Deck;
                    currentTrick.Add(userPlayedCard);
                    EndTrick();
                    return;
                }
            }
            //Nie zagral prawidlowej karty - odblokuj klikanie
            GameShape.CardMouseLeftButtonDown += GameShape_CardMouseLeftButtonDown;
            //GameShape.CardMouseLeftButtonDown += new MouseButtonEventHandler(GameShape_CardMouseLeftButtonDown);

            //gameShape.GetDeckShape(card.Card.Deck).UpdateCardShapes();
            UpdateAllCardShapes();
            //Canvas.SetZIndex(oldDeckShape, 0);
        }
Пример #5
0
        /// <summary>
        /// Poczatek lewy, wykonuje sie przed wykonaniem ruchu przez gracza
        /// </summary>
        private void BeginTrick()
        {
            GameShape.CardMouseLeftButtonDown -= new MouseButtonEventHandler(GameShape_CardMouseLeftButtonDown);
            bool renons;
            int  i;

            if (DetermineWhichPlayerHand(WistPlayerNumber).Deck.Cards.Count == 0)
            {
                //zakoncz gre
                EndGame();
                return;
            }

            if (WistPlayerNumber == 4)
            {
                GameShape.CardMouseLeftButtonDown += new MouseButtonEventHandler(GameShape_CardMouseLeftButtonDown);
                return;           //jezeli gracz jest wistujacym to skoncz
            }

            //zaczyna od numeru gracza wistujacego - gdy wistujacym jest gracz nie wejdzie ani razu
            for (i = WistPlayerNumber; i < 4; i++)
            {
                Deck playerXMoves;// = new Deck(PlayersHandDecks[i-1].Deck);
                //pierwszy gracz jest wistujacym
                if (i == WistPlayerNumber)
                {
                    playerXMoves = GameRules.PossibleMoves(PlayersHandDecks[i - 1].Deck, null, out renons);
                    WistCard     = new Card(PlayCardChosenAlgorithm(playerXMoves, PlayersTricks[i - 1], PlayersUsedCards[i - 1], PlayersAlgorithms[i - 1]));
                }
                //kolejni gracze musze dostosowac ruchy do wistujacego
                else
                {
                    playerXMoves = GameRules.PossibleMoves(PlayersHandDecks[i - 1].Deck, WistCard, out renons);
                    PlayCardChosenAlgorithm(playerXMoves, PlayersTricks[i - 1], PlayersUsedCards[i - 1], PlayersAlgorithms[i - 1]);
                    //sprawdz czy dolozyl do koloru, jezeli nie to ustaw krotkosc
                    if (renons)
                    {
                        PlayersUsedCards[i - 1].CardRenons[WistCard.Suit] = true;
                    }
                }

                Canvas.SetZIndex(PlayersTricks[i - 1], i);
                PlayersHandDecks[i - 1].Deck.Sort();
            }

            GameShape.CardMouseLeftButtonDown += new MouseButtonEventHandler(GameShape_CardMouseLeftButtonDown);
            return;
        }
Пример #6
0
        //graj sam
        //NIESKONCZONA - chyba juz skonczona
        private void PlayAutoTrick(int @howManyTricks = 13)
        {
            GameShape.CardMouseLeftButtonDown -= new MouseButtonEventHandler(GameShape_CardMouseLeftButtonDown);
            bool renons;
            int  i;

            if (PlayersHandDecks[WistPlayerNumber - 1].Deck.Cards.Count == 0)
            {
                //zakoncz gre
                EndGame();
                return;
            }

            for (i = 0; i < 4; i++)
            {
                int index = (WistPlayerNumber - 1 + i) % 4;

                Deck playerXMoves = new Deck(PlayersHandDecks[index].Next.Deck);
                //pierwszy gracz jest oczywiscie wistujacym
                if (i == 0)
                {
                    playerXMoves = GameRules.PossibleMoves(PlayersHandDecks[index].Deck, null, out renons);
                    WistCard     = new Card(PlayCardChosenAlgorithm(playerXMoves, PlayersTricks[index], PlayersUsedCards[index], PlayersAlgorithms[index]));
                }
                //kolejni gracze musze dostosowac ruchy do wistujacego
                else
                {
                    playerXMoves = GameRules.PossibleMoves(PlayersHandDecks[index].Deck, WistCard, out renons);
                    PlayCardChosenAlgorithm(playerXMoves, PlayersTricks[index], PlayersUsedCards[index], PlayersAlgorithms[index]);
                    //sprawdz czy dolozyl do koloru, jezeli nie to ustaw krotkosc
                    if (renons)
                    {
                        PlayersUsedCards[index].CardRenons[WistCard.Suit] = true;
                    }
                }

                Canvas.SetZIndex(PlayersTricks[index], i);
                PlayersHandDecks[index].Deck.Sort();
            }
            GameShape.MouseLeftButtonDown += new MouseButtonEventHandler(GameShape_MouseLeftButtonDown);
        }