private static UInt32 MyCardReader(UInt32 code, Card.CardData *pData) { Card card = CardsManager.GetCard((int)code); if (card != null) { *pData = card.Data; } return(code); }
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(); }
public void SetId(int id) { if (Id == id) { return; } Id = id; Data = CardsManager.GetCard(Id); if (Data != null) { Name = Data.Name; } }
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); } }
//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) { } }
public static Card Get(int id) { return(CardsManager.GetCard(id)); }