Esempio n. 1
0
 public static void war(Dictionary <Stack <Card>, Player> warCards, DefaultDeck winnerDeck)
 {
     /// 1. hotaram cate carti pune fiecare jucator (
     ///      -daca are 0 carti-aia e;
     ///      -daca are nr carti '<=' nr carti de pus jos -nr carti;
     ///      -daca are nr carti '>' nr carti de pus jos -nr carti de pus jos;
     /// 2. pargurgem stack urile, gasim val max, aflam cati au carte max
     ///       -> ori intram iar in war cu jucatorii ramasi
     ///       -> ori alegem castigatorul/castigatorii(in caz de este egalitate si au 0 carti in mana)
     ///
 }
Esempio n. 2
0
        public static void playSimple(Game game)
        {
            int nrOfPlayers = game.GetNrPlayers();
            var players     = game.getPlayers();
            //var map = new Dictionary<Card, int>();
            var tableCards = new Dictionary <Card, Player>();

            bool GameOver = false;

            while (!GameOver)
            {
                foreach (Player player in players)
                {
                    /// 1. Jucatorul pune carte jos
                    /// 2. Din mana jucatorului se 'scoate' acea carte
                    /// 3. Cartile se adauga in map-ul cartiMasa<Carte, ID>

                    for (int i = 0; i < tableCards.Count; i++)
                    {
                        tableCards.Add(player.getPlayerHand().putCard(0), player);
                    }
                }

                /// 4. Se lucreaza cu map-ul
                /// 5. Se gaseste val max si nr de jucatori  cu val max

                int valMax = 0, nrPlayers = 0;
                foreach (var card in tableCards)
                {
                    if (card.Key.getNumber() == valMax)  //daca se gaseste val max, creste nr playeri
                    {
                        nrOfPlayers++;
                    }

                    if (card.Key.getNumber() > valMax)  //daca se gaseste val max, se initializeaza val max
                    {
                        valMax      = card.Key.getNumber();
                        nrOfPlayers = 1;
                    }
                }

                if (nrOfPlayers == 1)  //daca avem un singur jucator cu carte maxima
                {
                    foreach (var card in tableCards)
                    {
                        if (card.Key.getNumber() == valMax)  //gasim jucatorul si il afisam
                        {
                            Console.WriteLine("Jucatorul " + card.Value.getId());
                            //treb sa i dam si cartile
                            break;
                        }
                    }
                }

                else   //intra in razboi nr playeri
                {
                    var warCards = new Dictionary <Stack <Card>, Player>();

                    foreach (var card in tableCards)
                    {  //pentru fiecare jucator care intra in war, construim un stack
                       // sa stim care e ultima carte pusa jos de el
                        if (card.Key.getNumber() == valMax)
                        {
                            Stack <Card> cardsStack = new Stack <Card>();
                            cardsStack.Push(card.Key); //adaugam ultima carte intr-ul stack

                            warCards.Add(cardsStack, card.Value);
                        }

                        else  //pt jucatorii din afara war-ului
                        {
                            if (card.Value.getPlayerHand().getNrCards() == 0) //daca jucatorii care n-au intrat in war
                                                                              //raman cu 0 carti, atunci AFARA
                            {
                                players.Remove(card.Value);
                            }
                        }
                    }
                    DefaultDeck winnerDeck = new DefaultDeck(); //vom salva toate cartile de pe masa intr-un deck

                    foreach (var card in tableCards)            //aceste carti vor fi atribuite castigatorului
                    {
                        winnerDeck.addCard(card.Key);
                    }

                    tableCards.Clear(); //golim memoria la tableCards, sa nu apara erori

                    war(warCards, winnerDeck);
                }
            }
        }
Esempio n. 3
0
        static void Main(string[] args)
        {
            Console.WriteLine();

            Deck deck = new DefaultDeck(52);

            //deck.printDeck();
            deck.shuffleDeck();

            //  Card carte4 = new Card(4, CardColor.club); //construim cartile
            //  Card carte5 = new Card(8, CardColor.club);

            /* var map = new Dictionary<Card, int>(); //facem un map pentru carte si Id jucator
             * map.Add(carte4, 13);  //adaugam in map cartea
             * map.Add(carte5, 12);
             * WarRules.compareCards(map);  //o trimitem la razboi
             */
            deck.printDeck();
            List <Card> returned = deck.extractNCards(5);

            foreach (Card c in returned)
            {
                Console.WriteLine(c);
            }
            deck.printDeck();

            //teste pt rules
            Card carte4 = new Card(4, CardColor.club);
            Card carte5 = new Card(8, CardColor.club);

            WarRules.compareCards(carte4, carte5);

            int x = WarRules.getHandWinner();
            int y = WarRules.getMaxCard();
            int z = WarRules.getNrPlayers();
            int t = WarRules.getWarParties();

            Console.WriteLine("au jucat " + z + " playeri");
            Console.WriteLine("cea mai mare carte a fost " + y);
            Console.WriteLine("a castigat sigur playerul cu indicele " + x);
            Console.WriteLine("au intrat in razboi " + t);

            Console.WriteLine();

            Card carte1 = new Card(9, CardColor.spade);
            Card carte2 = new Card(9, CardColor.club);
            Card carte3 = new Card(9, CardColor.heart);


            WarRules.compareCards(carte1, carte2, carte5, carte3);

            x = WarRules.getHandWinner();
            y = WarRules.getMaxCard();
            z = WarRules.getNrPlayers();
            t = WarRules.getWarParties();

            Console.WriteLine("au jucat " + z + " playeri");
            Console.WriteLine("cea mai mare carte a fost " + y);
            Console.WriteLine("a castigat sigur playerul cu indicele " + x);
            Console.WriteLine("au intrat in razboi " + t);
        }