Пример #1
0
        private static UInt32 MyCardReader(UInt32 code, Card.CardData *pData)
        {
            Card card = CardsManager.GetCard((int)code);

            if (card != null)
            {
                *pData = card.Data;
            }
            return(code);
        }
Пример #2
0
        private void CalculateResults()
        {
            int[] comboCount = new int[_combos.Count];
            for (int i = 0; i < _reshuffleAmount; i++)
            {
                List <int> randomHand = Decklist.rand(_deckMain).GetRange(0, handSize);
                bool       firstFound = true;
                for (int j = 0; j < _combosIds.Count; j++)
                {
                    bool       resultFound = false;
                    List <int> combo       = _combosIds[j];
                    if (ListComparer.ContainsAllItems(randomHand, combo))
                    {
                        resultFound = true;
                        comboCount[j]++;
                        if (firstFound)
                        {
                            _globalCombosCount++;
                            firstFound = false;
                        }
                    }
                    List <Card> randomHandCard = new List <Card>();
                    foreach (var c in randomHand)
                    {
                        randomHandCard.Add(CardsManager.GetCard(c));
                    }
                    logs.Add($"Hand number {i.ToString()} Combo number: {j.ToString()} Found combo: {resultFound} Combo: {string.Join(", ", _combos[j])} Hand: {string.Join(", ", randomHandCard)}");
                }
            }
            for (int j = 0; j < _combosIds.Count; j++)
            {
                logs.Add($"\nResult for Combo{j.ToString()} is: {comboCount[j].ToString()}\n");
            }
            for (int i = 0; i < _combos.Count; i++)
            {
                DisplayResults(_combos[i], comboCount[i]);
            }
            decimal percentage = GetPercentage(_globalCombosCount, _reshuffleAmount);

            amountLabel.Text     = $"{_globalCombosCount.ToString()} out of {_reshuffleAmount} hands = {percentage.ToString()}%";
            LastComboLogFileName = $"ComboLogs_{_deckName}_{DateTime.Now.ToString("yyyyMMddTHHmmss")}.txt";
            try
            {
                if (!Directory.Exists(_logsFolder))
                {
                    Directory.CreateDirectory(_logsFolder);
                }
                File.WriteAllLines(Path.Combine(_logsFolder, LastComboLogFileName), logs);
            }
            catch
            {
                MessageBox.Show("The app experienced issues exporting logs into the folder.", "Error saving logs to the logs folder", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            logs.Clear();
        }
Пример #3
0
 public void SetId(int id)
 {
     if (Id == id)
     {
         return;
     }
     Id   = id;
     Data = CardsManager.GetCard(Id);
     if (Data != null)
     {
         Name = Data.Name;
     }
 }
Пример #4
0
        private void FindFourOfAKindCalls(List <Card> selectedCards, PlayerPosition position, ref List <Call> foundCalls, ref List <Card> remainedCards)
        {
            List <Card> cards             = new List <Card>(selectedCards);
            var         countOfCardValues = new int[9];

            foreach (var card in cards)
            {
                countOfCardValues[(int)card.Value]++;
            }

            for (int i = 1; i < 9; i++)
            {
                var cardValue = (CardValue)i;

                if (countOfCardValues[i] != 4 || cardValue == CardValue.Seven || cardValue == CardValue.Eight)
                {
                    continue;
                }

                switch (cardValue)
                {
                case CardValue.Jack:
                    foundCalls.Add(new Call(position, CallType.FourJacks, CardsManager.GetCard(CardSuit.Spades, cardValue).ToString()));
                    break;

                case CardValue.Nine:
                    foundCalls.Add(new Call(position, CallType.FourNines, CardsManager.GetCard(CardSuit.Spades, cardValue).ToString()));
                    break;

                case CardValue.Ace:
                case CardValue.King:
                case CardValue.Queen:
                case CardValue.Ten:
                    foundCalls.Add(new Call(position, CallType.FourOfAKind, CardsManager.GetCard(CardSuit.Spades, cardValue).ToString()));
                    break;
                }


                cards.RemoveAll(c => c.Value == cardValue);
            }

            if (cards.Count > 0)
            {
                remainedCards.AddRange(cards);
            }
        }
Пример #5
0
        //public IList<MonoCardInDeckManager> IMain { get; private set; }
        //public IList<MonoCardInDeckManager> IExtra { get; private set; }
        //public IList<MonoCardInDeckManager> ISide { get; private set; }
        //public IList<MonoCardInDeckManager> IRemoved { get; private set; }
        public Decklist(string path)
        {
            Main     = new List <int>();
            Extra    = new List <int>();
            Side     = new List <int>();
            Deck_O   = new D();
            CardMain = new List <Card>();
            //IMain = new List<MonoCardInDeckManager>();
            //IExtra = new List<MonoCardInDeckManager>();
            //IRemoved = new List<MonoCardInDeckManager>();
            //ISide = new List<MonoCardInDeckManager>();
            try
            {
                Name = Path.GetFileNameWithoutExtension(path);
                string   text  = System.IO.File.ReadAllText(path);
                string   st    = text.Replace("\r", "");
                string[] lines = st.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);
                int      flag  = -1;
                foreach (string line in lines)
                {
                    if (line == "#main")
                    {
                        flag = 1;
                    }
                    else if (line == "#extra")
                    {
                        flag = 2;
                    }
                    else if (line == "!side")
                    {
                        flag = 3;
                    }
                    else if (flag > 0)
                    {
                        int code = 0;
                        try
                        {
                            code = Int32.Parse(line);
                        }
                        catch (Exception n)
                        {
                        }
                        if (code > 100)
                        {
                            switch (flag)
                            {
                            case 1:
                            {
                                if (!Main.Contains(code))
                                {
                                    var card = CardsManager.GetCard(code);
                                    this.CardMain.Add(card);
                                }
                                this.Main.Add(code);
                                this.Deck_O.Main.Add(code);
                            }
                            break;

                            default:
                                break;
                            }
                        }
                    }
                }
            }
            catch (System.Exception e)
            {
            }
        }
Пример #6
0
 public static Card Get(int id)
 {
     return(CardsManager.GetCard(id));
 }