Ejemplo n.º 1
0
        /// <summary>
        /// Từ địa chi của giờ, lấy ra thiên can của giờ.
        /// </summary>
        /// <param name="chi"></param>
        /// <returns></returns>
        public ThienCan GetCanCuaGio(DiaChi chi)
        {
            int chiIndex = 0;

            for (int i = 0; i < DiaChi.All.Count; i++)
            {
                if (chi == DiaChi.All[i])
                {
                    chiIndex = i;
                    break;
                }
            }

            ThienCan canGioTi      = GetCanGioTi();
            int      canGioTiIndex = 0;

            for (int i = 0; i < ThienCan.All.Count; i++)
            {
                if (canGioTi == ThienCan.All[i])
                {
                    canGioTiIndex = i;
                    break;
                }
            }

            int canIndex = (canGioTiIndex + chiIndex) % 10;

            return(ThienCan.All[canIndex]);
        }
Ejemplo n.º 2
0
        private bool IsDuKhi(DiaChi chi)
        {
            // Tháng 3 kiến Thìn, Mộc còn dư khí mùa xuân.
            if (Chi == Thin && chi.NguHanh == Moc)
            {
                return(true);
            }

            // Tháng 6 kiến Mùi, Hỏa còn dư khí mùa hạ.
            if (Chi == Mui && chi.NguHanh == Hoa)
            {
                return(true);
            }

            // Tháng 9 kiến Tuất, Kim còn dư khí mùa thu.
            if (Chi == Tuat && chi.NguHanh == Kim)
            {
                return(true);
            }

            // Tháng 12 kiến Sửu, Thủy còn dư khí mùa đông.
            if (Chi == Suu && chi.NguHanh == Thuy)
            {
                return(true);
            }

            return(false);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Tử: bị nhật thần hoặc nguyệt kiến khắc.
        /// </summary>
        /// <param name="chi"></param>
        /// <returns></returns>
        public bool IsTuyet(DiaChi chi)
        {
            if (IsDuKhi(chi))
            {
                return(false);
            }

            return(Chi.NguHanh.Khac == chi.NguHanh);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Hưu: sinh ra nhật thần hoặc nguyệt kiến nên mất lực.
        /// </summary>
        /// <param name="chi"></param>
        /// <returns></returns>
        public bool IsHuu(DiaChi chi)
        {
            if (IsDuKhi(chi))
            {
                return(false);
            }

            return(Chi.NguHanh.SinhBoi == chi.NguHanh);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Từ hành của hào, kiểm tra xem nhật thìn hay nguyệt kiến có bị mộ.
        /// Giai đoạn mộ sẽ rơi vào thìn tuất sửu mùi.
        /// </summary>
        /// <param name="hanh"></param>
        /// <param name="chi"></param>
        /// <returns></returns>
        public static bool IsMo(NguHanh hanh, DiaChi chi)
        {
            if (hanh == Tho)
            {
                // Hành thổ không thể có mộ ở Thìn giống Thủy,
                // vì không lẽ Thìn thổ (nhật kiến, nguyệt kiến) cũng mộ ở Thìn?
                return(false);
            }

            return(GetThoiKi(hanh, chi) == Mo);
        }
Ejemplo n.º 6
0
        public CanChi GetCanChiGio()
        {
            if (_gioAm == null)
            {
                DiaChi   chi = GetChiCuaGio(SolarDate);
                ThienCan can = GetCanCuaGio(chi);

                _gioAm = new CanChi {
                    Can = can, Chi = chi
                };
            }

            return(_gioAm);
        }
Ejemplo n.º 7
0
        public TruongSinhNguHanh(NguHanh hanh, DiaChi chiBatDau)
        {
            NguHanh = hanh;
            var index     = chiBatDau.Id - 1;
            var lastIndex = KinhDichCommon.DiaChi.All.Count - 1;

            for (int i = 0; i <= lastIndex; i++)
            {
                if (index > lastIndex)
                {
                    index = 0;
                }

                DiaChi.Add(KinhDichCommon.DiaChi.All[index]);
                index++;
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Từ ngũ hành của nguyệt kiến kiểm tra xem địa chi thuộc thời kì nào của vòng trường sinh.
        /// </summary>
        /// <param name="hanh">ngũ hành của tháng</param>
        /// <param name="chi">địa chi của hào</param>
        /// <returns></returns>
        public static VongTruongSinh GetThoiKi(NguHanh hanh, DiaChi chi)
        {
            foreach (var truongSinh in TruongSinhList)
            {
                if (hanh == truongSinh.NguHanh)
                {
                    for (int i = 0; i < truongSinh.DiaChi.Count; i++)
                    {
                        if (chi == truongSinh.DiaChi[i])
                        {
                            return(All[i]);
                        }
                    }
                }
            }

            throw new System.Exception("Wrong code in VongTruongSinh.");
        }
Ejemplo n.º 9
0
        private void Add10CanChi(CanChi canChiBatDau)
        {
            All.Add(canChiBatDau);

            CanChi canChiTruoc = canChiBatDau;
            CanChi canChi;

            // Add other 9 CanChi.
            for (int i = 0; i < SoNgay - 1; i++)
            {
                canChi = canChiTruoc.Next();

                All.Add(canChi);
                canChiTruoc = canChi;
            }

            Khong1 = canChiTruoc.Chi.Next();
            Khong2 = Khong1.Next();
        }
Ejemplo n.º 10
0
 /// <summary>
 /// Vượng hoặc tướng.
 /// </summary>
 /// <param name="chi"></param>
 /// <returns></returns>
 public bool IsVuongTuong(DiaChi chi)
 {
     return(IsVuong(chi) || IsTuong(chi));
 }
Ejemplo n.º 11
0
 /// <summary>
 /// Kiểm tra 1 địa chi có phải lâm không vào nhật thần hay không?
 /// </summary>
 /// <param name="nhatThan"></param>
 /// <param name="chi"></param>
 /// <returns></returns>
 public bool IsLamKhong(DiaChi chi)
 {
     return(chi == Tuan.Khong1 || chi == Tuan.Khong2);
 }
Ejemplo n.º 12
0
 /// <summary>
 /// Chi dương (Tí, ...) sẽ đi với can dương là Giáp, Bính, Mậu, Canh và Nhâm.
 /// Chi âm (Hợi, ...) sẽ đi với can âm là Ất, Đinh, Kỷ, Tân, Quý.
 /// </summary>
 /// <param name="chi"></param>
 /// <returns></returns>
 public static ThienCan GetCanDauTienHopLe(DiaChi chi)
 {
     return(chi.Duong ? CanDuong[0] : CanAm[0]);
 }
Ejemplo n.º 13
0
 /// <summary>
 /// Tướng. Được nhật thìn hoặc nguyệt kiến sinh.
 /// </summary>
 /// <param name="chi"></param>
 /// <returns></returns>
 public bool IsTuong(DiaChi chi)
 {
     return(Chi.NguHanh.Sinh == chi.NguHanh);
 }
Ejemplo n.º 14
0
 /// <summary>
 /// Hưu tù.
 /// </summary>
 /// <param name="chi"></param>
 /// <returns></returns>
 public bool IsHuuTu(DiaChi chi)
 {
     return(IsHuu(chi) || IsTu(chi) || IsTuyet(chi));
 }