Esempio n. 1
0
 public void newGameCards()
 {
     if (RemainingCards == null)
     {
         RemainingCards = new List <Card>();
     }
     else
     {
         RemainingCards.Clear();
     }
     RemainingCards.AddRange(new Card[] {
         new Card(CardType.Fascist),
         new Card(CardType.Fascist),
         new Card(CardType.Liberal),
         new Card(CardType.Fascist),
         new Card(CardType.Liberal),
         new Card(CardType.Fascist),
         new Card(CardType.Fascist),
         new Card(CardType.Fascist),
         new Card(CardType.Liberal),
         new Card(CardType.Fascist),
         new Card(CardType.Liberal),
         new Card(CardType.Liberal),
         new Card(CardType.Fascist),
         new Card(CardType.Fascist),
         new Card(CardType.Fascist),
         new Card(CardType.Liberal),
         new Card(CardType.Fascist)
     });
     RemainingCards.Shuffle();
 }
Esempio n. 2
0
        /// <summary>
        /// Initializes a new deck and shuffles
        /// </summary>
        //public Deck(int numberOfDecks = 1)
        //{
        //    show = new Display();
        //    Initialize(numberOfDecks);
        //}

        public Deck(List <ICard> customDeck, IDisplay disp)
        {
            RemainingCards.Clear();
            PlayedCards.Clear();
            RemainingCards  = customDeck;
            show            = disp;
            usingCustomDeck = true;
            NumberOfDecks   = 1;
        }
Esempio n. 3
0
 public Blackjack(int playerCount, int deckCount)
 {
     rng     = new Random();
     players = Enumerable.Range(0, playerCount).Select(x => new Player()).ToList();
     Console.WriteLine($"Players are {string.Join(",", players.Select(player=>player.Id))}");
     cards = new RemainingCards {
         Cards = DeckHelper.Generate(deckCount)
     };
     cards.Cards = cards.Cards.Shuffle();
     Console.WriteLine("Cards are shuffled.");
 }
Esempio n. 4
0
        private void PrepareGame()
        {
            Players.Shuffle();
            RemainingCards.Shuffle();

            CurrentRound = new GameRound();

            foreach (var p in Players)
            {
                p.Status = Status.Normal;
            }
            CurrentRound.RoundState  = RoundState.PickChancellor;
            CurrentRound.PresidentId = Players[0].UserId;
            Players[0].Status        = Status.President;
        }
Esempio n. 5
0
        private async void Start()
        {
            if (_tempResultsFolder == null)
            {
                _tempResultsFolder = await ApplicationData.Current.TemporaryFolder.CreateFolderAsync("Results", CreationCollisionOption.OpenIfExists);

                _sourceHostConfigsFolder = await _expectedFolder.CreateFolderAsync("SourceHostConfigs", CreationCollisionOption.OpenIfExists);

                _sourceCardsFolder = await _expectedFolder.CreateFolderAsync("SourceCards", CreationCollisionOption.OpenIfExists);
            }

            CurrentCardVisual = null;

            // If no cards left
            if (RemainingCards.Count == 0)
            {
                RemainingHostConfigs.RemoveAt(0);

                // If also no host configs left, done
                if (RemainingHostConfigs.Count == 0)
                {
                    GoToDoneState();
                    return;
                }

                // Otherwise reset the cards and pop off the current host config
                foreach (var c in _originalCards)
                {
                    RemainingCards.Add(c);
                }
            }

            CurrentCard       = RemainingCards.First().Name;
            CurrentHostConfig = RemainingHostConfigs.First().Name;

            // Delay a bit to allow UI thread to update, otherwise user would never see an update
            await Task.Delay(10);

            var testResult = await TestCard(RemainingCards.First(), RemainingHostConfigs.First());

            Results.Add(testResult);

            RemainingCards.RemoveAt(0);

            // And start the process again
            Start();
        }
Esempio n. 6
0
    public void OnPointerDown(PointerEventData pointerEventData)
    {
        Utilities.InstantiateCard(Utilities.PickFirstCard(), CardBorders.GetEmptyCardBorder(GlobalVariables.turn));

        RemainingCards.ChangeRemainingCardsText();
    }
Esempio n. 7
0
 public void MakeActionBeforeEnd()
 {
     try
     {
         if (FascistCardsOnBoard == 6)
         {
             CurrentRound.RoundState = RoundState.End;
             GameResult = new GameResult()
             {
                 Fascists    = Players.Where(p => p.Role != Role.Liberal).ToList(),
                 WinningTeam = CardType.Fascist,
                 Reason      = "Six fascit Cards Placed on Board"
             };
         }
         else if (CardsOnBoard.Where(c => c.CardType == CardType.Liberal).Count() == 5)
         {
             CurrentRound.RoundState = RoundState.End;
             GameResult = new GameResult()
             {
                 Fascists    = Players.Where(p => p.Role != Role.Liberal).ToList(),
                 WinningTeam = CardType.Fascist,
                 Reason      = "Six fascit Cards Placed on Board"
             };
         }
         else if (Players.Count == 9 || Players.Count == 10)
         {
             if (FascistCardsOnBoard == 1 && fascistCardPlacedNbre == 0)
             {
                 fascistCardPlacedNbre++;
                 CurrentRound.RoundState = RoundState.InvestigateMembership;
             }
             else if (FascistCardsOnBoard == 2 && fascistCardPlacedNbre == 1)
             {
                 fascistCardPlacedNbre++;
                 CurrentRound.RoundState = RoundState.InvestigateMembership;
             }
             else if (FascistCardsOnBoard == 3 && fascistCardPlacedNbre == 2)
             {
                 fascistCardPlacedNbre++;
                 CurrentRound.RoundState = RoundState.PickNextPresident;
             }
             else if (FascistCardsOnBoard == 4 && fascistCardPlacedNbre == 3)
             {
                 CurrentRound.RoundState = RoundState.KillMember;
             }
             else if (FascistCardsOnBoard == 5 && fascistCardPlacedNbre == 4)
             {
                 CurrentRound.RoundState = RoundState.KillMember;
             }
             else
             {
                 MoveToNextTurn();
             }
         }
         else if (Players.Count == 7 || Players.Count == 8)
         {
             if (FascistCardsOnBoard == 2 && fascistCardPlacedNbre == 0)
             {
                 fascistCardPlacedNbre++;
                 CurrentRound.RoundState = RoundState.InvestigateMembership;
             }
             else if (FascistCardsOnBoard == 3 && fascistCardPlacedNbre == 1)
             {
                 fascistCardPlacedNbre++;
                 CurrentRound.RoundState = RoundState.PickNextPresident;
             }
             else if (FascistCardsOnBoard == 4 && fascistCardPlacedNbre == 2)
             {
                 CurrentRound.RoundState = RoundState.KillMember;
             }
             else if (FascistCardsOnBoard == 5 && fascistCardPlacedNbre == 3)
             {
                 CurrentRound.RoundState = RoundState.KillMember;
             }
             else
             {
                 MoveToNextTurn();
             }
         }
         else
         {
             if (FascistCardsOnBoard == 3 && fascistCardPlacedNbre == 0)
             {
                 fascistCardPlacedNbre++;
                 CurrentRound.RoundState = RoundState.PeekNextCards;
                 CurrentRound.CardsInHand.Clear();
                 if (RemainingCards.Count < 3)
                 {
                     DiscardedCards.Shuffle();
                     RemainingCards.AddRange(DiscardedCards);
                     DiscardedCards.Clear();
                 }
                 CurrentRound.CardsInHand.Add(RemainingCards[0]);
                 CurrentRound.CardsInHand.Add(RemainingCards[1]);
                 CurrentRound.CardsInHand.Add(RemainingCards[2]);
             }
             else if (FascistCardsOnBoard == 4 && fascistCardPlacedNbre == 1)
             {
                 CurrentRound.RoundState = RoundState.KillMember;
             }
             else if (FascistCardsOnBoard == 5 && fascistCardPlacedNbre == 2)
             {
                 CurrentRound.RoundState = RoundState.KillMember;
             }
             else
             {
                 MoveToNextTurn();
             }
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine("ProceedAfterDiscard.ex: " + ex.Message);
     }
 }
Esempio n. 8
0
        public void ProceedAfterVote()
        {
            try
            {
                if (CurrentRound.VoteResults.Result)
                {
                    //Update round:
                    CurrentRound.ElectChancellor();
                    if (FascistCardsOnBoard >= 3 && playersDict[CurrentRound.ChancellorId].Role == Role.Hitler)
                    {
                        CurrentRound.RoundState = RoundState.End;
                        GameResult = new GameResult()
                        {
                            Fascists    = Players.Where(p => p.Role != Role.Liberal).ToList(),
                            WinningTeam = CardType.Fascist,
                            Reason      = "Hitler elected after three fascit Cards Placed on Board"
                        };
                    }
                    else
                    {
                        if (RemainingCards.Count < 3)
                        {
                            DiscardedCards.Shuffle();
                            RemainingCards.AddRange(DiscardedCards);
                            DiscardedCards.Clear();
                        }
                        var cards = new List <Card>()
                        {
                            RemainingCards[0], RemainingCards[1], RemainingCards[2]
                        };
                        RemainingCards.RemoveRange(0, 3);
                        CurrentRound.PreparePresidentToDiscard(cards);
                    }
                }
                else
                {
                    CurrentRound.NbreOfFailedVotes++;
                    if (CurrentRound.NbreOfFailedVotes == 3)
                    {
                        if (RemainingCards.Count < 1)
                        {
                            DiscardedCards.Shuffle();
                            RemainingCards.AddRange(DiscardedCards);
                            DiscardedCards.Clear();
                        }
                        Card card = RemainingCards[0];

                        RemainingCards.RemoveAt(0);
                        CardsOnBoard.Add(card);

                        CurrentRound.NbreOfFailedVotes = 0;
                        MakeActionBeforeEnd();
                    }
                    else
                    {
                        MoveToNextTurn();
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("ProceedAfterVote.ex : " + ex.Message);
            }
        }