Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        private bool 日月反背格(PaiPan pan)
        {
            // 太阳在戌宫坐命,此时太阴在辰宫;或太阴在辰宫坐命,太阳在戌宫。
            if (pan.MingGong.ZhiString == "戌")
            {
                if (pan.MingGong.Stars.Exists(s => s.Name == "太阳"))
                {
                    var gong = pan.Gongs.First(g => g.ZhiString == "辰");
                    if (gong.Stars.Exists(s => s.Name == "太阴"))
                    {
                        return(true);
                    }
                }
            }

            if (pan.MingGong.ZhiString == "辰")
            {
                if (pan.MingGong.Stars.Exists(s => s.Name == "太阴"))
                {
                    var gong = pan.Gongs.First(g => g.ZhiString == "戌");
                    if (gong.Stars.Exists(s => s.Name == "太阳"))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Ejemplo n.º 3
0
        private bool 巨机同宫格(PaiPan pan)
        {
            // 巨门、天机二星在卯宫或酉宫坐命,且无化忌同宫。

            // 卯宫或酉宫坐命
            if (pan.MingGong.ZhiString != "卯" && pan.MingGong.ZhiString != "酉")
            {
                return(false);
            }

            // 巨门、天机二星坐命
            if (!pan.MingGong.Stars.Exists(s => s.Name == "巨门") ||
                !pan.MingGong.Stars.Exists(s => s.Name == "天机"))
            {
                return(false);
            }

            // 无化忌同宫
            //if (pan.MingGong.Stars.Exists(s => s.Name == "化忌"))
            //    return false;
            if (pan.MingGong.Stars.Exists(s => "忌" == s.Hua))
            {
                return(false);
            }

            return(true);
        }
Ejemplo n.º 4
0
        private bool 刑忌夹印格(PaiPan pan)
        {
            // 天相受化忌和天梁于左右邻宫相夹;或天相受化忌和擎羊于左右邻宫相夹。
            var gong = pan.Gongs.First(g => g.Stars.Exists(s => s.Name == "天相"));

            if (gong != null)
            {
                if (pan.MingGong.Previous.Stars.Exists(s => "忌" == s.Hua) &&
                    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.Hua))
                {
                    return(true);
                }

                if (pan.MingGong.Previous.Stars.Exists(s => "忌" == s.Hua) &&
                    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.Hua))
                {
                    return(true);
                }
            }


            return(false);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        public FuQiGong GetResult(PaiPan pan)
        {
            FuQiGong result = base.GetResult <FuQiGong>(pan, GongIndex.夫妻宫, 3);

            //命宫主星爱情分析
            result.AiQingFenXi = new AiQingFenXi();

            var stars = pan.MingGong.Stars.Select(s => s.Name);

            foreach (var item in dal.s8)
            {
                if (stars.Contains(item.name.Substring(0, 2)))
                {
                    result.AiQingFenXi.StarId     = int.Parse(item.id);
                    result.AiQingFenXi.Name       = item.name;
                    result.AiQingFenXi.aiqingguan = item.aiqingguan;
                    result.AiQingFenXi.jianyi     = item.jianyi;
                    result.AiQingFenXi.shihe      = item.shihe;

                    var liangdu = pan.MingGong.Stars.First(s => s.Name == item.name.Substring(0, 2)).LiangDu;
                    if (liangdu.HasValue && liangdu.Value < 0)
                    {
                        result.AiQingFenXi.liangdu = item.ruoxian;
                    }
                    else
                    {
                        result.AiQingFenXi.liangdu = item.miaowang;
                    }

                    break; //一定break
                }
            }

            return(result);
        }
Ejemplo n.º 7
0
        public MingGong GetResult(PaiPan pan)
        {
            MingGong result = base.GetResult <MingGong>(pan, GongIndex.命宫, pan.IsMale ? 0 : 1);

            //身
            var shen = pan.Gongs.First(g => g.Is_Shen);

            result.ShenGongPosition = shen.Name;
            result.ShenGongContent  = dal.s3.Find(s => shen.Name.Contains(s.name)).text;


            //分析
            s10_xingdi fenxi = null;

            if (result.ZhuXing.Count == 2)
            {
                fenxi = dal.s10.Find(s => s.id == string.Format("{0}#{1}", result.ZhuXing[0].Id, result.ZhuXing[1].Id));
            }
            else
            {
                fenxi = dal.s10.Find(s => s.id == result.ZhuXing[0].Id.ToString());
            }

            result.Youdian = fenxi.youdian;
            result.Quedian = fenxi.quedian;
            result.Fenxi   = fenxi.fenxi;

            return(result);
        }
Ejemplo n.º 8
0
        private bool 财禄夹马格(PaiPan pan)
        {
            // 天马守命宫,二左右临宫有武曲与化禄来夹,或为武曲与禄存来夹。

            if (pan.MingGong.Stars.Exists(s => s.Name == "天马"))
            {
                if (pan.MingGong.Previous.Stars.Exists(s => s.Name == "武曲") &&
                    pan.MingGong.Next.Stars.Exists(s => "禄" == s.Hua))
                {
                    return(true);
                }

                if (pan.MingGong.Previous.Stars.Exists(s => "禄" == s.Hua) &&
                    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);
                }

                if (pan.MingGong.Previous.Stars.Exists(s => s.Name == "禄存") &&
                    pan.MingGong.Next.Stars.Exists(s => s.Name == "武曲"))
                {
                    return(true);
                }
            }
            return(false);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
 private bool 命无正曜格(PaiPan pan)
 {
     // 命宫里无任何十四颗主星坐命。
     if (!pan.MingGong.Stars.Exists(s => s.Type == Star.StarType.主星))
     {
         return(true);
     }
     return(false);
 }
Ejemplo n.º 11
0
        private void btnGeJu_Click(object sender, EventArgs e)
        {
            DateTime        dateTime = this.dpBirthDate.Value;
            ChineseCalendar cc       = new ChineseCalendar(dateTime);
            PaiPan          pan      = new PaiPan(cc, this.ckMan.Checked);
            var             eg       = new Engine(@".\Data\");

            this.txtBrithday.Text = eg.GeJuAnalyzer.GetResult(pan).ToString();
        }
Ejemplo n.º 12
0
 private static string FormatFoot(PaiPan pan)
 {
     return(@"</td>
         </tr>
         </table>
         </div>
         </body>
         </html>");
 }
Ejemplo n.º 13
0
        public IList <CellData> parseGong(PaiPan pan)
        {
            List <CellData> datas = new List <CellData>();

            foreach (Gong g in pan.Gongs)
            {
                CellData cd = new CellData();
                cd.zhiStr = g.ZhiString;
                if (g.Is_Shen)
                {
                    cd.gongName.Add("身宫");
                }
                cd.gongName.Add(g.Name);
                cd.ganStr = g.GanString;

                if (g.DaXian_To == 0)
                {
                    cd.daXian = string.Empty;
                }
                else
                {
                    cd.daXian = string.Format("{0}-{1}", g.DaXian_From, g.DaXian_To);
                }

                foreach (var s in g.Stars)
                {
                    if (dal.Dic_ZhuXing.ContainsKey(s.Name))
                    {
                        cd.zhuXing.Add(s);
                    }
                    else if (dal.Dic_JiXing.ContainsKey(s.Name) || dal.Dic_XiongXing.ContainsKey(s.Name))
                    {
                        cd.fuXing.Add(s);
                        if (dal.Dic_XiongXing.ContainsKey(s.Name))
                        {
                            cd.xiongXing.Add(s);
                        }
                    }
                    else if (s.Type == Star.StarType.博士十二 || s.Type == Star.StarType.年前十二 || s.Type == Star.StarType.岁前十二)
                    {
                        cd.s2Xing.Add(s);
                    }
                    else if (s.Type == Star.StarType.长生十二)
                    {
                        cd.changSheng = s;
                    }
                    else
                    {
                        cd.s1Xing.Add(s);
                    }
                }

                datas.Add(cd);
            }
            return(datas);
        }
Ejemplo n.º 14
0
 private bool 命里逢空格(PaiPan pan)
 {
     // 地劫、地空二星或其中之一星守命。
     if (pan.MingGong.Stars.Exists(s => s.Name == "地劫") ||
         pan.MingGong.Stars.Exists(s => s.Name == "地空"))
     {
         return(true);
     }
     return(false);
 }
Ejemplo n.º 15
0
        /// <summary>
        /// 获取流年财运指数
        /// </summary>
        /// <param name="pan"></param>
        /// <returns></returns>
        public float GetLiuNianCaiboScore(PaiPan pan)
        {
            var caiboMing = pan.Gongs.First(g => g.Name == GongIndex.财帛宫.ToString());
            var caiboXian = pan.Gongs.First(g => g.XianName == GongIndex.财帛宫.ToString());
            var caiboLiu  = pan.Gongs.First(g => g.LiuName == GongIndex.财帛宫.ToString());
            var scoreMing = CaiboScore(pan, caiboMing);
            var scoreXian = CaiboScore(pan, caiboXian);
            var scoreLiu  = CaiboScore(pan, caiboLiu);

            return(scoreMing * ming_weight + scoreXian * xian_weight + scoreLiu * liu_weight);
        }
Ejemplo n.º 16
0
 private bool 英星入庙格(PaiPan pan)
 {
     // 破申守命居子或午宫。
     if (pan.MingGong.ZhiString == "子" || pan.MingGong.ZhiString == "午")
     {
         if (pan.MingGong.Stars.Exists(s => s.Name == "破申"))
         {
             return(true);
         }
     }
     return(false);
 }
Ejemplo n.º 17
0
 private bool 七杀朝斗格(PaiPan pan)
 {
     // 七杀于子或午或寅或申宫守命。
     if (pan.MingGong.ZhiString == "子" || pan.MingGong.ZhiString == "午" || pan.MingGong.ZhiString == "寅" || pan.MingGong.ZhiString == "申")
     {
         if (pan.MingGong.Stars.Exists(s => s.Name == "七杀"))
         {
             return(true);
         }
     }
     return(false);
 }
Ejemplo n.º 18
0
        public ShiYeGong GetResult(PaiPan pan)
        {
            ShiYeGong result = base.GetResult <ShiYeGong>(pan, GongIndex.事业宫, 8);

            result.ShiYeFenXi = new ShiYeFenXi();

            foreach (var item in dal.s9)
            {
                if (result.ZhuXing.Exists(x => x.Id == item.id))
                {
                    result.ShiYeFenXi.StarId   = item.id;
                    result.ShiYeFenXi.Name     = item.name;
                    result.ShiYeFenXi.juese    = item.juese;
                    result.ShiYeFenXi.zhiye    = item.zhiye;
                    result.ShiYeFenXi.zongping = item.zongping;
                    result.ShiYeFenXi.jianyi   = item.jianyi;

                    int zhi = result.SelfGong.Zhi > 6 ? result.SelfGong.Zhi - 6 : result.SelfGong.Zhi;
                    switch (zhi)
                    {
                    case 1:
                        result.ShiYeFenXi.chenggongmijue = item.ziwu;
                        break;

                    case 2:
                        result.ShiYeFenXi.chenggongmijue = item.chouwei;
                        break;

                    case 3:
                        result.ShiYeFenXi.chenggongmijue = item.yinshen;
                        break;

                    case 4:
                        result.ShiYeFenXi.chenggongmijue = item.maoyou;
                        break;

                    case 5:
                        result.ShiYeFenXi.chenggongmijue = item.chenxu;
                        break;

                    default:
                        result.ShiYeFenXi.chenggongmijue = item.sihai;
                        break;
                    }


                    break;
                }
            }


            return(result);
        }
Ejemplo n.º 19
0
 private bool 将星得地格(PaiPan pan)
 {
     // 武曲坐命在辰或戌宫。
     if (pan.MingGong.ZhiString == "辰" || pan.MingGong.ZhiString == "戌")
     {
         if (pan.MingGong.Stars.Exists(s => s.Name == "武曲"))
         {
             return(true);
         }
     }
     return(false);
 }
Ejemplo n.º 20
0
 private bool 风流彩杖格(PaiPan pan)
 {
     // 在寅宫,贪狼坐命,遇陀罗同宫。
     if (pan.MingGong.ZhiString == "寅")
     {
         if (pan.MingGong.Stars.Exists(s => s.Name == "贪狼") &&
             pan.MingGong.Stars.Exists(s => s.Name == "陀罗"))
         {
             return(true);
         }
     }
     return(false);
 }
Ejemplo n.º 21
0
 private bool 左右同宫格(PaiPan pan)
 {
     // 命宫在丑或未宫,左辅右弼同宫,为本格。
     if (pan.MingGong.ZhiString == "丑" || pan.MingGong.ZhiString == "未")
     {
         if (pan.MingGong.Stars.Exists(s => s.Name == "左辅") &&
             pan.MingGong.Stars.Exists(s => s.Name == "右弼"))
         {
             return(true);
         }
     }
     return(false);
 }
Ejemplo n.º 22
0
        private bool 紫府朝垣格(PaiPan pan)
        {
            // 紫薇、天府于三方四正照命。
            BasicGong sfsz = SanFangSiZheng(pan, GongIndex.命宫);

            if (sfsz.DuiZhaoGong.Stars.Exists(s => s.Name == "紫薇") &&
                sfsz.DuiZhaoGong.Stars.Exists(s => s.Name == "天府"))
            {
                return(true);
            }

            return(false);
        }
Ejemplo n.º 23
0
        private bool 极向离明格(PaiPan pan)
        {
            // 紫薇在午宫坐命

            if (pan.MingGong.ZhiString == "午")
            {
                if (pan.MingGong.Stars.Exists(s => s.Name == "紫薇"))
                {
                    return(true);
                }
            }
            return(false);
        }
Ejemplo n.º 24
0
 private bool 贞杀同宫格(PaiPan pan)
 {
     // 廉贞、七杀同在同在丑或未宫守命。
     if (pan.MingGong.ZhiString == "丑" || pan.MingGong.ZhiString == "未")
     {
         if (pan.MingGong.Stars.Exists(s => s.Name == "廉贞") &&
             pan.MingGong.Stars.Exists(s => s.Name == "七杀"))
         {
             return(true);
         }
     }
     return(false);
 }
Ejemplo n.º 25
0
        private bool 寿星入庙格(PaiPan pan)
        {
            // 天梁守命,入午宫。

            if (pan.MingGong.ZhiString == "午")
            {
                if (pan.MingGong.Stars.Exists(s => s.Name == "天梁"))
                {
                    return(true);
                }
            }

            return(false);
        }
Ejemplo n.º 26
0
        private void button2_Click(object sender, EventArgs e)
        {
            DateTime        dateTime = this.dpBirthDate.Value;
            ChineseCalendar cc       = new ChineseCalendar(dateTime);
            PaiPan          pan      = new PaiPan(cc, this.ckMan.Checked);

            ChineseCalendar cliu = new ChineseCalendar(this.dpLiuDate.Value);


            pan.Liu(cliu);


            this.txtBrithday.Text = this.txtBrithday.Text + "\n\n" + pan.TestLiu;
        }
Ejemplo n.º 27
0
        private bool 月朗天门格(PaiPan pan)
        {
            // 太阴在亥宫守命,为本格。

            if (pan.MingGong.ZhiString == "亥")
            {
                if (pan.MingGong.Stars.Exists(s => s.Name == "太阴"))
                {
                    return(true);
                }
            }

            return(false);
        }
Ejemplo n.º 28
0
        private bool 石中隐玉格(PaiPan pan)
        {
            // 巨门在子或午宫坐命。

            if (pan.MingGong.ZhiString == "子" || pan.MingGong.ZhiString == "午")
            {
                if (pan.MingGong.Stars.Exists(s => s.Name == "巨门"))
                {
                    return(true);
                }
            }

            return(false);
        }
Ejemplo n.º 29
0
        private bool 雄宿朝垣格(PaiPan pan)
        {
            // 廉贞在申或寅宫守命。

            if (pan.MingGong.ZhiString == "申" || pan.MingGong.ZhiString == "寅")
            {
                if (pan.MingGong.Stars.Exists(s => s.Name == "廉贞"))
                {
                    return(true);
                }
            }

            return(false);
        }
Ejemplo n.º 30
0
        public IList <KeyValuePair <GongIndex, int> > Get12GongScore(PaiPan pan)
        {
            var ret = new List <KeyValuePair <GongIndex, int> >(12);

            for (int i = 0; i < 12; i++)
            {
                var index = (GongIndex)i;
                var gong  = base.GetResult <BasicGong>(pan, index, 0);
                var score = GetScore(gong, index);
                ret.Add(new KeyValuePair <GongIndex, int>(index, score));
            }

            return(ret);
        }