Ejemplo n.º 1
0
 private string[] GetPanSeqStep(string[] srcArr, string[,] dipan, string zhishi, string hg)
 {
     string[,] panSeqSrc = DyadicArrayHelper.InitNineGong(srcArr, true);
     int[] fromSeq = DyadicArrayHelper.GetPanSeq(dipan, zhishi);
     int[] toSeq   = DyadicArrayHelper.GetPanSeq(dipan, hg);
     return(new string[] { panSeqSrc[fromSeq[0], fromSeq[1]], panSeqSrc[toSeq[0], toSeq[1]] });
 }
Ejemplo n.º 2
0
        private string[,] OrderGodPan(string[,] dipan, string zhishi, string hg, bool order)
        {
            string[,] panSeqSrc = new string[3, 3];
            if (!order)
            {
                panSeqSrc = DyadicArrayHelper.InitNineGong(xgodArr, true);
            }
            else
            {
                panSeqSrc = DyadicArrayHelper.InitNineGong(godArr, true);
            }
            int[] toSeq = DyadicArrayHelper.GetPanSeq(dipan, hg);
            int   step  = 0;

            step             = DyadicArrayHelper.GetOrderStep(panSeqSrc, godArr[7], panSeqSrc[toSeq[0], toSeq[1]]);
            string[,] newPan = DyadicArrayHelper.DyadicNineGongToSideEigthGong(panSeqSrc, step, true);
            return(newPan);
        }
Ejemplo n.º 3
0
        private string[,] OrderDoorPan(string[,] dipan, string zhishi, string xunz, string hg, string hz, bool order)
        {
            zhishi = GetZHISHI(GetFuTou(hourGZ, true));
            string[,] panSeqSrc = DyadicArrayHelper.InitNineGong(doorArr, true);
            int[] fromSeq = DyadicArrayHelper.GetPanSeq(dipan, zhishi);//值坐标

            zhimen = panSeqSrc[fromSeq[0], fromSeq[1]];
            //if (zhimen == "") //落中宫,寄坤宫 记五数
            //{
            //    fromSeq[0] = 2;
            //    fromSeq[1] = 0;
            //}
            int[]  toSeq = DyadicArrayHelper.GetNineGongSeq(fromSeq, Diffz(xunz, hz), xunz, hz, order);//旬支飞时支的坐标
            string from  = panSeqSrc[fromSeq[0], fromSeq[1]];

            if (from.Trim() == string.Empty)
            {
                from = panSeqSrc[2, 0];
            }
            string to = panSeqSrc[toSeq[0], toSeq[1]];

            if (to.Trim() == string.Empty)
            {
                to = panSeqSrc[2, 0];
            }
            int step = 0;

            if (from == to)
            {
                return(panSeqSrc);
            }
            else
            {
                step = DyadicArrayHelper.GetOrderStep(panSeqSrc, from, to);
            }
            string[,] newPan = DyadicArrayHelper.DyadicNineGongToSideEigthGong(panSeqSrc, step, true);
            return(newPan);
        }
Ejemplo n.º 4
0
        private void Start()
        {
            //1,准备数据
            InitStaticData();
            GetAllGZ();
            //2,根据日干和节气求局数
            int ju = GetJu(dayGZ);

            //3,根据局数飞布定地盘;
            string[] dipan = OrderDIPan(ju);
            string[,] dealDiPan = DyadicArrayHelper.InitNineGong(dipan, false);
            Dictionary <int, string> dicDP = GetDPDic(dealDiPan);

            //4,根据值使和地盘求天盘;
            hourGZ = GetShiGZ(dayGZ);//根据日求时
            string shiG = hourGZ.Substring(0, 1);

            zhifu = GetZF(dicDP, shiG);
            string zhiyi  = GetDiPan6Yi(hourGZ);
            string zhishi = zhiyi;// GetZHISHI(GetFuTou(hourGZ, true));//根据时求符首

            if (zhishi == dealDiPan[1, 1])
            {
                zhishi = dealDiPan[2, 0];                           //特例中宫落二宫
            }
            if (shiG == dealDiPan[1, 1])
            {
                shiG = dealDiPan[2, 0];                                         //特例中宫落二宫
            }
            int step = DyadicArrayHelper.GetOrderStep(dealDiPan, zhishi, shiG); //偏移量

            if (shiG == ganArr[0])
            {
                step = 0;                   //元帅特例
            }
            string[,] tianPan = OrderTianPan(dealDiPan, step);
            //5,九星盘
            string[,] starPan = OrderStarPan(dealDiPan, zhishi, shiG);
            //6,八神盘
            bool order = ju > 0;

            string[,] godPan = OrderGodPan(dealDiPan, zhishi, shiG, order);
            //7,八门盘
            string shiZ = hourGZ.Substring(1, 1);
            string xunZ = GetFuTou(hourGZ, true);

            string[,] doorPan = OrderDoorPan(dealDiPan, zhishi, xunZ, shiG, shiZ, order);

            //以下调试===========================================================================================================
            if (order)
            {
                JU = "阳遁: " + ju + "局";
            }
            else
            {
                JU = "阴遁: " + ju + "局";
            }
            if (zhimen.Trim().Length == 0)
            {
                zhimen = "死五";
            }
            string msg = "时间: " + yearGZ + monthGZ + dayGZ + "日" + hourGZ + "时"
                         + System.Environment.NewLine + "节气: " + jieQi
                         + System.Environment.NewLine + JU
                         + System.Environment.NewLine + "旬首: 甲" + xunZ + (zhiyi != zhishi? zhiyi + "转 " + zhishi: zhiyi)
                         + System.Environment.NewLine + "直使: " + zhimen + "门"
                         + System.Environment.NewLine + "直符: 落" + zhifu + shiG + "宫";

            //MessageBox.Show(msg);
            label1.Text = msg;

            DataTable dt = DyadicArrayHelper.ArrayToTable(dealDiPan);

            subGrid1.Location   = new System.Drawing.Point(13, 27);
            subGrid1.Size       = new System.Drawing.Size(303, 72);
            subGrid1.DataSource = dt;
            int[] focusCell = DyadicArrayHelper.GetPanSeq(dealDiPan, zhiyi);
            subGrid1.focusColmunIndex = focusCell[0];
            subGrid1.focusRowIndex    = focusCell[1];

            DataTable dt4 = DyadicArrayHelper.ArrayToTable(godPan);

            subGrid4.Location         = new System.Drawing.Point(13, 101);
            subGrid4.Size             = new System.Drawing.Size(303, 72);
            subGrid4.DataSource       = dt4;
            focusCell                 = DyadicArrayHelper.GetPanSeq(godPan, godArr[7]);
            subGrid4.focusColmunIndex = focusCell[0];
            subGrid4.focusRowIndex    = focusCell[1];

            DataTable dt6 = DyadicArrayHelper.ArrayToTable(DyadicArrayHelper.InitNineGong(guaArr, true));

            subGrid6.Location         = new System.Drawing.Point(13, 175);
            subGrid6.Size             = new System.Drawing.Size(303, 72);
            subGrid6.DataSource       = dt6;
            focusCell                 = DyadicArrayHelper.GetPanSeq(dealDiPan, yiqiArr[0]);
            subGrid6.focusColmunIndex = focusCell[0];
            subGrid6.focusRowIndex    = focusCell[1];

            DataTable dt2 = DyadicArrayHelper.ArrayToTable(tianPan);

            subGrid2.Location         = new System.Drawing.Point(326, 27);
            subGrid2.Size             = new System.Drawing.Size(303, 72);
            subGrid2.DataSource       = dt2;
            focusCell                 = DyadicArrayHelper.GetPanSeq(tianPan, shiG);
            subGrid2.focusColmunIndex = focusCell[0];
            subGrid2.focusRowIndex    = focusCell[1];

            DataTable dt3 = DyadicArrayHelper.ArrayToTable(starPan);

            subGrid3.Location         = new System.Drawing.Point(326, 101);
            subGrid3.Size             = new System.Drawing.Size(303, 72);
            subGrid3.DataSource       = dt3;
            focusCell                 = DyadicArrayHelper.GetPanSeq(starPan, shiG);
            subGrid3.focusColmunIndex = focusCell[0];
            subGrid3.focusRowIndex    = focusCell[1];

            DataTable dt5 = DyadicArrayHelper.ArrayToTable(doorPan);

            subGrid5.Location         = new System.Drawing.Point(326, 175);
            subGrid5.Size             = new System.Drawing.Size(303, 72);
            subGrid5.DataSource       = dt5;
            focusCell                 = DyadicArrayHelper.GetPanSeq(doorPan, zhimen);
            subGrid5.focusColmunIndex = focusCell[0];
            subGrid5.focusRowIndex    = focusCell[1];
        }