public static List <Poker> ConvertToPokerList(PokerPattern pattern, PatternValue value) { if (pattern == null) { return(null); } var pokers = new List <Poker>(); if (pattern.Type == PatternType.BUCHU) { return(pokers); } var pool = new List <Poker>(); if (pattern.Pokers != null) { pool.AddRange(pattern.Pokers); } var pile = pattern.HeadPile; while (pile != null) { var list = new List <Poker>(); for (int i = 0; i < pool.Count; i++) { var p = pool[i]; if (p.NumType == pile.NumType) { list.Add(p); pool.RemoveAt(i); i--; } } if (list.Count < pile.Count) { for (int i = 0, n = pile.Count - list.Count; i < n; i++) { for (int c = 0; c < pool.Count; c++) { if (value.IsHeartHost(pool[c])) { list.Add(pool[c]); pool.RemoveAt(c); c--; } } } } pokers.AddRange(list); pile = pile.Next; } return(pokers); }
/// <summary> /// Default constructor /// </summary> public Fill() { IndexedColor = 64; PatternFill = PatternValue.none; ForegroundColor = DEFAULTCOLOR; BackgroundColor = DEFAULTCOLOR; }
/// <summary> /// Constructor with foreground and background color /// </summary> /// <param name="foreground">Foreground color of the fill</param> /// <param name="background">Background color of the fill</param> public Fill(string foreground, string background) { BackgroundColor = background; ForegroundColor = foreground; IndexedColor = 64; PatternFill = PatternValue.solid; }
public void SetMyLastChuPai(PokerLogic.PokerPattern chuPai) { var value = new PatternValue(GetCurrentHost); var pokers = PokerLogicUtil.ConvertToPokerList(chuPai, value); var myUser = _myUser.Read(); SetLastChuPai(SeatPosition.Bottom, pokers, myUser != null ? myUser.sex : 0); }
/// <summary> /// Sets the color and the depending fill type /// </summary> /// <param name="value">color value</param> /// <param name="filltype">fill type (fill or pattern)</param> public void SetColor(string value, FillType filltype) { if (filltype == FillType.fillColor) { ForegroundColor = value; BackgroundColor = DEFAULTCOLOR; } else { ForegroundColor = DEFAULTCOLOR; BackgroundColor = value; } PatternFill = PatternValue.solid; }
private void SetLastChuPai(SeatPosition seatPos, PokerPattern lastChuPai, int sex, bool withEffect = true) { if (lastChuPai == null) { return; } var value = new PatternValue(GetCurrentHost); var matcher = new PatternMatcher(value); var pattern = matcher.Match(PokerLogicUtil.ToPokerList(lastChuPai.pokers)); var pokers = PokerLogicUtil.ConvertToPokerList(pattern, value); SetLastChuPai(seatPos, pokers, sex, withEffect); }
/// <summary> /// Constructor with color value and fill type /// </summary> /// <param name="value">Color value</param> /// <param name="filltype">Fill type (fill or pattern)</param> public Fill(string value, FillType filltype) { if (filltype == FillType.fillColor) { BackgroundColor = value; ForegroundColor = DEFAULTCOLOR; } else { BackgroundColor = DEFAULTCOLOR; ForegroundColor = value; } IndexedColor = 64; PatternFill = PatternValue.solid; }
public void TestSelectSuperABCDE() { _currentHost = PokerNumType.PA; _value = new PatternValue(GetCurrentHost); _matcher = new PatternMatcher(_value); _pokerAI = new PokerAI(_matcher, _value); _pokerAI.SetMyPokers(PokerUtil.ParsePokerList("SQ, SQ, CQ, D2, HA")); var lastChuPai = _matcher.Match(PokerUtil.ParsePokerList("D7, HA, D9, D0, DJ")); var selected = _pokerAI.SelectBiggerXXXXOrSuperABCDE(lastChuPai, 0, true); Assert.AreEqual(PokerPattern.NULL, selected); }
private IEnumerable <PatternValue> BuildPatterns(IEnumerable <PatternXml> patterns) { var res = new List <PatternValue>(); if (patterns != null) { foreach (var p in patterns) { var pv = new PatternValue(); pv.Pattern = p.Pattern; pv.Text = p.Value; res.Add(pv); } } return(res); }
/// <summary> /// Gets the pattern name from the enum /// </summary> /// <param name="pattern">Enum to process</param> /// <returns>The valid value of the pattern as String</returns> public static string GetPatternName(PatternValue pattern) { string output; switch (pattern) { case PatternValue.none: output = "none"; break; case PatternValue.solid: output = "solid"; break; case PatternValue.darkGray: output = "darkGray"; break; case PatternValue.mediumGray: output = "mediumGray"; break; case PatternValue.lightGray: output = "lightGray"; break; case PatternValue.gray0625: output = "gray0625"; break; case PatternValue.gray125: output = "gray125"; break; default: output = "none"; break; } return(output); }
private void Awake() { _patternValue = new PatternValue(GetCurrentHost); }
private void SetLastChuPai(SeatPosition seatPos, List <Poker> lastChuPai, int sex, bool withEffect = true) { if (seatPos == SeatPosition.Null) { return; } var chuPai = GetLastChuPai(seatPos); if (PokerLogicUtil.PokerListEqual(chuPai, lastChuPai)) { // 如果现在要显示的牌,和当前的牌相等的话,就不需要再显示了。 return; } SetLastChuPai(seatPos, lastChuPai); var slots = GetLastChuPaiSlots(seatPos); var buChu = GetBuChuImage(seatPos); var basePos = GetBasePos(seatPos); if (slots.Count > 0) { for (int i = 0; i < slots.Count; i++) { SetSlotIdle(slots[i]); } slots.Clear(); } if (lastChuPai == null || lastChuPai.Count <= 0) { var tweener = GetBuChuTweener(seatPos); if (tweener != null) { tweener.Kill(); } if (buChu) { buChu.sprite = BuChuSprite; if (!buChu.gameObject.activeSelf) { // 只有没显示的情况下,才显示动画。 tweener = StartBuChuAnimation(buChu.transform); SetBuChuTweener(seatPos, tweener); } } if (withEffect) { _soundController.PlayBuChuSound(); _soundController.PlayChuPaiSound(PokerLogic.PokerPattern.BUCHU, sex); } return; } if (buChu && buChu.gameObject.activeSelf) { buChu.gameObject.SetActive(false); } foreach (var p in lastChuPai) { var slot = GetSlot(); if (slot) { slot.Poker = p; slots.Add(slot); } } // SortSlot(slots); UpdateSlotPosition(basePos, slots); if (withEffect) { var value = new PatternValue(GetCurrentHost); var matcher = new PatternMatcher(value); var matched = matcher.Match(lastChuPai); if (matched != null && !matched.IsNull) { _soundController.PlayChuPaiSound(matched, sex); GameWindow.ShowChuPaiEffect(matched); } } }
public PatternCalculationTaskProgressInfo(double Progress, PatternValue Value) { this.Progress = Progress; this.Value = Value; }