private bool 辅拱文星格(PaiPan pan) { // 文昌、文曲在命宫,有辅弼两星在三方四正拱照或左右邻宫相夹。 if (pan.MingGong.Stars.Exists(s => s.Name == "文昌") && pan.MingGong.Stars.Exists(s => s.Name == "文曲")) { BasicGong sfsz = SanFangSiZheng(pan, GongIndex.命宫); Gong[] arr = new Gong[] { sfsz.SelfGong, sfsz.DuiZhaoGong, sfsz.HuiGongs[0], sfsz.HuiGongs[1] }; Gong g1 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "左辅")); Gong g2 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "右弼")); if (g1 != null && g2 != null) { return(true); } if (pan.MingGong.Previous.Stars.Exists(s => s.Name == "左辅") && pan.MingGong.Next.Stars.Exists(s => s.Name == "右弼")) { return(true); } if (pan.MingGong.Previous.Stars.Exists(s => s.Name == "右弼") && pan.MingGong.Next.Stars.Exists(s => s.Name == "左辅")) { return(true); } } return(false); }
private bool 君臣庆会格(PaiPan pan) { // 命宫有紫微星,且于三方四正中有至少有左辅、右弼任何一星加会或同宫,或两星于两临宫相夹。 if (pan.MingGong.Stars.Exists(s => s.Name == "紫薇")) { BasicGong sfsz = SanFangSiZheng(pan, GongIndex.命宫); Gong[] arr = new Gong[] { sfsz.SelfGong, sfsz.DuiZhaoGong, sfsz.HuiGongs[0], sfsz.HuiGongs[1] }; Gong g1 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "左辅")); Gong g2 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "右弼")); // 左辅、右弼任何一星加会或同宫 if (g1 != null || g2 != null) { return(true); } // 两星于两临宫相夹 if (pan.MingGong.Previous.Stars.Exists(s => s.Name == "左辅") && pan.MingGong.Next.Stars.Exists(s => s.Name == "右弼")) { return(true); } if (pan.MingGong.Previous.Stars.Exists(s => s.Name == "右弼") && pan.MingGong.Next.Stars.Exists(s => s.Name == "左辅")) { return(true); } } return(false); }
private bool 日月并明格(PaiPan pan) { // 日月位于三方四正中,且太阳在巳,太阴在酉或太阳在辰,太阴在戌,为本格。 BasicGong sfsz = SanFangSiZheng(pan, GongIndex.命宫); Gong[] arr = new Gong[] { sfsz.SelfGong, sfsz.DuiZhaoGong, sfsz.HuiGongs[0], sfsz.HuiGongs[1] }; Gong taiyang = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "太阳")); Gong taiyin = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "太阴")); // 日月位于三方四正中 if (taiyang != null && taiyin != null) { // 太阳在巳,太阴在酉 if (taiyang.ZhiString == "巳" && taiyin.ZhiString == "酉") { return(true); } // 太阳在辰,太阴在戌 if (taiyang.ZhiString == "辰" && taiyin.ZhiString == "戌") { return(true); } } return(false); }
private bool 天乙拱命格(PaiPan pan) { // 天魁,天钺俱在三方四正中。 BasicGong sfsz = SanFangSiZheng(pan, GongIndex.命宫); Gong[] arr = new Gong[] { sfsz.SelfGong, sfsz.DuiZhaoGong, sfsz.HuiGongs[0], sfsz.HuiGongs[1] }; Gong g1 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "天魁")); Gong g2 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "天钺")); if (g1 != null && g2 != null) { return(true); } return(false); }
private bool 权禄巡逢格(PaiPan pan) { // 化禄、化权俱在三方四正中。 BasicGong sfsz = SanFangSiZheng(pan, GongIndex.命宫); Gong[] arr = new Gong[] { sfsz.SelfGong, sfsz.DuiZhaoGong, sfsz.HuiGongs[0], sfsz.HuiGongs[1] }; Gong g1 = arr.FirstOrDefault(g => g.Stars.Exists(s => "禄" == s.Hua)); Gong g2 = arr.FirstOrDefault(g => g.Stars.Exists(s => "权" == s.Hua)); if (g1 != null && g2 != null) { return(true); } return(false); }
private bool 铃陀格(PaiPan pan) { // 在三方四正中,四煞只有铃星及陀罗,才入格。 BasicGong sfsz = SanFangSiZheng(pan, GongIndex.命宫); Gong[] arr = new Gong[] { sfsz.SelfGong, sfsz.DuiZhaoGong, sfsz.HuiGongs[0], sfsz.HuiGongs[1] }; Gong g1 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "火星")); Gong g2 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "擎羊")); Gong g3 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "陀罗")); Gong g4 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "铃星")); if (g1 == null && g2 == null && g3 != null && g4 != null) { return(true); } return(false); }
private bool 科名会禄格(PaiPan pan) { // 化科在命宫,化禄在三方四正会照。 if (pan.MingGong.Stars.Exists(s => "科" == s.Hua)) { BasicGong sfsz = SanFangSiZheng(pan, GongIndex.命宫); Gong[] arr = new Gong[] { sfsz.SelfGong, sfsz.DuiZhaoGong, sfsz.HuiGongs[0], sfsz.HuiGongs[1] }; Gong g1 = arr.FirstOrDefault(g => g.Stars.Exists(s => "禄" == s.Hua)); if (g1 != null) { return(true); } } return(false); }
private bool 合火铃贪格(PaiPan pan) { // 贪狼守命,遇火星、铃星俱在命或三方会照。 if (pan.MingGong.Stars.Exists(s => s.Name == "贪狼")) { BasicGong sfsz = SanFangSiZheng(pan, GongIndex.命宫); Gong[] arr = new Gong[] { sfsz.SelfGong, sfsz.HuiGongs[0], sfsz.HuiGongs[1] }; Gong g1 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "火星")); Gong g2 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "铃星")); if (g1 != null && g2 != null) { return(true); } } return(false); }
private bool 阳梁昌禄格(PaiPan pan) { // 三方四正会齐了太阳、天梁、文昌、禄存四星。 BasicGong sfsz = SanFangSiZheng(pan, GongIndex.命宫); Gong[] arr = new Gong[] { sfsz.SelfGong, sfsz.DuiZhaoGong, sfsz.HuiGongs[0], sfsz.HuiGongs[1] }; Gong g1 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "太阳")); Gong g2 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "天梁")); Gong g3 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "文昌")); Gong g4 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "禄存")); if (g1 != null && g2 != null && g3 != null && g4 != null) { return(true); } return(false); }
private bool 机月同梁格(PaiPan pan) { // 于三方四正中有天机、太阴、天同、天梁四星交会。 BasicGong sfsz = SanFangSiZheng(pan, GongIndex.命宫); Gong[] arr = new Gong[] { sfsz.SelfGong, sfsz.DuiZhaoGong, sfsz.HuiGongs[0], sfsz.HuiGongs[1] }; Gong g1 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "天机")); Gong g2 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "太阴")); Gong g3 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "天同")); Gong g4 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "天梁")); if (g1 != null && g2 != null && g3 != null && g4 != null) { return(true); } return(false); }
private bool 马落空亡格(PaiPan pan) { // 天马遇地劫、地空同宫或三方冲照。 if (pan.MingGong.Stars.Exists(s => s.Name == "天马")) { BasicGong sfsz = SanFangSiZheng(pan, GongIndex.命宫); Gong[] arr = new Gong[] { sfsz.SelfGong, sfsz.HuiGongs[0], sfsz.HuiGongs[1] }; Gong g1 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "地劫")); Gong g2 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "地空")); if (g1 != null && g2 != null) { return(true); } } return(false); }
private bool 禄逢冲破格(PaiPan pan) { // 禄存或化禄坐命,在三方四正中,有被地劫、地空冲破。 if (pan.MingGong.Stars.Exists(s => s.Name == "禄存") || pan.MingGong.Stars.Exists(s => "禄" == s.Hua)) { BasicGong sfsz = SanFangSiZheng(pan, GongIndex.命宫); Gong[] arr = new Gong[] { sfsz.SelfGong, sfsz.DuiZhaoGong, sfsz.HuiGongs[0], sfsz.HuiGongs[1] }; Gong g1 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "地劫")); Gong g2 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "地空")); if (g1 != null && g2 != null) { return(true); } } return(false); }
private bool 巨逢四煞格(PaiPan pan) { // 巨门守命,且在三方四正中,与羊陀火铃四煞同时有会照或同宫关系。 if (pan.MingGong.Stars.Exists(s => s.Name == "巨门")) { BasicGong sfsz = SanFangSiZheng(pan, GongIndex.命宫); Gong[] arr = new Gong[] { sfsz.SelfGong, sfsz.DuiZhaoGong, sfsz.HuiGongs[0], sfsz.HuiGongs[1] }; Gong g1 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "火星")); Gong g2 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "擎羊")); Gong g3 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "陀罗")); Gong g4 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "铃星")); if (g1 != null && g2 != null && g3 != null && g4 != null) { return(true); } } return(false); }
private bool 禄马交驰格(PaiPan pan) { // 命宫或三方有禄存、天马或化禄、天马。 BasicGong sfsz = SanFangSiZheng(pan, GongIndex.命宫); Gong[] arr = new Gong[] { sfsz.SelfGong, sfsz.HuiGongs[0], sfsz.HuiGongs[1] }; Gong g1 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "禄存")); Gong g2 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "天马")); Gong g3 = arr.FirstOrDefault(g => g.Stars.Exists(s => "禄" == s.Hua)); if (g1 != null && g2 != null) { return(true); } if (g3 != null && g2 != null) { return(true); } return(false); }
private bool 廉贞文武格(PaiPan pan) { // 廉贞坐命,官禄宫为武曲来会,三方四正再会文昌或文曲。 if (pan.MingGong.Stars.Exists(s => s.Name == "廉贞")) { var gong = pan.Gongs.First(g => g.Name == "事业宫"); if (gong.Stars.Exists(s => s.Name == "武曲")) { BasicGong sfsz = SanFangSiZheng(pan, GongIndex.命宫); Gong[] arr = new Gong[] { sfsz.SelfGong, sfsz.DuiZhaoGong, sfsz.HuiGongs[0], sfsz.HuiGongs[1] }; Gong g1 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "文昌")); Gong g2 = arr.FirstOrDefault(g => g.Stars.Exists(s => s.Name == "文曲")); if (g1 != null || g2 != null) { return(true); } } } return(false); }
public float CaiboScore(PaiPan pan, Gong caibo) { var sfsz = SanFangSiZheng(pan, caibo.Name); // 主星 List <Star> zhuxing = caibo.Stars.Where(s => s.Type == Star.StarType.主星).ToList(); if (zhuxing == null || zhuxing.Count == 0) { zhuxing = new List <Star>(); var duiStars = sfsz.DuiZhaoGong.Stars.Where(s => s.Type == Star.StarType.主星); foreach (var star in duiStars) { var s = new Star(star.Name, star.Type); if (star.LiangDu != null) { int ld = (int)star.LiangDu; ld -= 2; if (ld < -3) { ld = -3; } s.LiangDu = ld; } zhuxing.Add(s); } } // 辅星 var fuxing0 = caibo.Stars.Where(s => dal.Dic_JiXing.ContainsKey(s.Name) || dal.Dic_XiongXing.ContainsKey(s.Name)).ToList(); var fuxing = new List <Star>(fuxing0); foreach (var star in zhuxing) { if (!string.IsNullOrEmpty(star.Hua)) { fuxing.Add(new Star("化" + star.Hua, Star.StarType.其它)); } } // 会照辅星 List <Star> huizhaoFuxing = new List <Star>(); foreach (var s in sfsz.DuiZhaoGong.Stars) { if (dal.Dic_JiXing.ContainsKey(s.Name) || dal.Dic_XiongXing.ContainsKey(s.Name)) { huizhaoFuxing.Add(s); } if (!string.IsNullOrEmpty(s.Hua)) { fuxing.Add(new Star("化" + s.Hua, Star.StarType.其它)); } } foreach (var s in sfsz.HuiGongs[0].Stars) { if (dal.Dic_JiXing.ContainsKey(s.Name) || dal.Dic_XiongXing.ContainsKey(s.Name) || s.Name == "化禄") { huizhaoFuxing.Add(s); } if (!string.IsNullOrEmpty(s.Hua)) { fuxing.Add(new Star("化" + s.Hua, Star.StarType.其它)); } } foreach (var s in sfsz.HuiGongs[1].Stars) { if (dal.Dic_JiXing.ContainsKey(s.Name) || dal.Dic_XiongXing.ContainsKey(s.Name) || s.Name == "化禄") { huizhaoFuxing.Add(s); } if (!string.IsNullOrEmpty(s.Hua)) { fuxing.Add(new Star("化" + s.Hua, Star.StarType.其它)); } } // 三方四正是否有武曲 bool hasWuqu = false; if (sfsz.SelfGong.Stars.Exists(s => s.Name == "武曲") || sfsz.DuiZhaoGong.Stars.Exists(s => s.Name == "武曲") || sfsz.HuiGongs[0].Stars.Exists(s => s.Name == "武曲") || sfsz.HuiGongs[1].Stars.Exists(s => s.Name == "武曲")) { hasWuqu = true; } return(CaiboScore(zhuxing, fuxing, huizhaoFuxing, hasWuqu)); }