Lập trình Lý số

Trao đổi về các lĩnh vực khoa học và đời sống
Hình đại diện của thành viên
HoangHa
Ngũ đẳng
Ngũ đẳng
Bài viết: 1002
Tham gia: 21:40, 02/01/09
Đến từ: Hải Phòng

TL: Lập trình Lý số

Gửi bài gửi bởi HoangHa »

Đúng đúng, chỉ cần ít phút là nó phải có lời giải, tuy nhiên không thể hi vọng có 1 lời giải hoàn hảo đc...

Hiện em cũng đang xây dựng theo hướng tương tác đối tượng:

Đây là ý tưởng xây dựng của em:

(về lớp Sao Tử Vi):

// Thong tin thoi gian
private NAMANSAO _NamAnSao;
private THANGANSAO _ThangAnSao;
private NGAYANSAO _NgayAnSao;
private GIOANSAO _GioAnSao;

// Thong tin gioi tinh
private GIOITINH _GioiTinh;

// Thong tin chinh ve Sao
private SAOTUVI _SaoTuVi;
private List<LOAISAO> _LoaiSao;
private PHUONGVISAO _PhuongViSao;
private TINHAMDUONG _TinhAmDuong;
private NGUHANHSAO _NguHanhSao;
private TINHDACHAM _TinhDacHam;
private VITRIANSAO _ViTriAnSao;

// Cac thong tin khac ve Sao
private string _TenSao;
private string _YNghia;


Làm cách này bộ an sao chạy chậm hơn vì nó phải dựng đối tượng Sao tử vi và tiến hành các định vị, định tính => rồi mới hình thành đối tượng Cung số tử vi => từ đó hình thành lên đối tượng Lá số tử vi. Nhưng kiểm soát được đối tượng sao.

private List<LOAISAO> _LoaiSao;

=> Hôm trước có nhờ làng nước liệt kê giúp các loại sao. Một sao mang nhiều loại, loại này được nhét vào 1 danh sách. Đây là 1 phần trong việc xây dựng luật giải đoán.

=> Đối tượng sao này còn một thuộc tính chi phối nó đó là mối quan hệ với các sao khác, đây là một mảng có trước. Ví dụ với Phong Cáo, ta có quan hệ: Phong Cáo - Thai Phụ - Quốc Ấn - Tướng Quân... Theo tính toán của em, chỉ có khoảng ~ 1000 quan hệ là cùng.

=> Để xây dựng lời giải, ta căn cứ vào đối tượng Cung số tử vi, lấy liệt kê các bộ sao theo quan hệ kia rồi chèn lời giải ứng cho quan hệ đó.

:D Chung quy lại, em nghĩ cũng ko phải phức tạp khi ta quy hoạch được rõ ràng các đối tượng.
Đầu trang

Hình đại diện của thành viên
HoangHa
Ngũ đẳng
Ngũ đẳng
Bài viết: 1002
Tham gia: 21:40, 02/01/09
Đến từ: Hải Phòng

TL: Lập trình Lý số

Gửi bài gửi bởi HoangHa »

Báo cáo các bác, các bạn:

Hoàng đang thử xây dựng bộ giải đoán này theo mô hình tương tác đối tượng. Đây là thiết kế của lớp Sao Tử vi, các bác xem xét góp ý và chia sẻ ý tưởng.

(class này không đầy đủ cho các sao, chỉ có cho mỗi sao Tử vi, bạn đọc tự hoàn thành hoặc yêu cầu Hoàng gửi bản đủ)

Mã lệnh: Chọn tất cả

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;

namespace LySo.TuVi
{
    /// <summary>
    /// Danh sach cac sao trong khoa Tu vi dau so
    /// </summary>
    public enum SAOTUVI { NULL, TuVi, LiemTrinh, ThienDong, VuKhuc, ThaiDuong, ThienCo, ThienPhu, ThaiAm, ThamLang, CuMon, ThienTuong, ThienLuong, ThatSat, PhaQuan, LocTon, BacSi, LucSi, ThanhLong, TieuHao, TuongQuan, TauThu, PhiLiem, HiThan, BenhPhu, DaiHao, PhucBinh, QuanPhuLT, ThaiTue, ThieuDuong, TangMon, ThieuAm, QuanPhuTT, TuPhu, TuePha, LongDuc, BachHo, PhucDuc, DieuKhach, TrucPhu, TruongSinh, MocDuc, QuanDoi, LamQuan, DeVuong, Suy, Benh, Tu, Mo, Tuyet, Thai, Duong, KinhDuong, DaLa, DiaKiep, DiaKhong, HoaTinh, LinhTinh, TaPhu, HuuBat, VanXuong, VanKhuc, LongTri, PhuongCac, ThienKhoi, ThienViet, ThienKhoc, ThienHu, TamThai, BatToa, AnQuang, ThienQuy, ThienDuc, NguyetDuc, ThienHinh, ThienRieu, ThienY, HongLoan, ThienHi, QuocAn, DuongPhu, ThienGiai, DiaGiai, GiaiThan };

    /// <summary>
    /// Phan loai sao trong khoa Tu vi dau so
    /// </summary>
    public enum LOAISAO { NULL, DeTinh, CatTinh, QuyenTinh, TaiTinh };

    /// <summary>
    /// Phan loai phuong vi cua sao trong khoa Tu vi dau so
    /// </summary>
    public enum PHUONGVISAO { NULL, BacDauTinh, NamDauTinh };

    /// <summary>
    /// Phan loai tinh am duong cua sao trong khoa Tu vi dau so
    /// </summary>
    public enum TINHAMDUONG { NULL, Duong, Am };

    /// <summary>
    /// Phan loai ngu hanh cua sao trong khoa Tu vi dau so
    /// </summary>
    public enum NGUHANHSAO { NULL, Moc, Hoa, Tho, Kim, Thuy };

    /// <summary>
    /// Tinh chat Mieu dia, Vuong dia, Dac dia, Binh hoa, Ham dia cua sao
    /// </summary>
    public enum TINHDACHAM { NULL, HamDia, BinhHoa, DacDia, VuongDia, MieuDia };

    /// <summary>
    /// Vi tri an sao tren La so tu vi
    /// </summary>
    public enum VITRIANSAO { NULL, Ty, Suu, Dan, Mao, Thin, Ti, Ngo, Mui, Than, Dau, Tuat, Hoi };

    /// <summary>
    /// Danh sach cac cung so trong khoa Tu vi dau so
    /// </summary>
    public enum CUNGSOTUVI { NULL, Menh, PhuMau, PhucDuc, DienTrach, QuanLoc, NoBoc, ThienDi, TatAch, TaiBach, TuTuc, PhuThe, HuynhDe, Than };

    /// <summary>
    /// Nam an Sao trong khoa Tu vi
    /// </summary>
    public enum NAMANSAO { NULL, GiapTy, AtSuu, BinhDan, DinhMao, MauThin, KyTi, CanhNgo, TanMui, NhamThan, QuyDau, GiapTuat, AtHoi, BinhTy, DinhSuu, MauDan, KyMao, CanhThin, TanTi, NhamNgo, QuyMui, GiapThan, AtDau, BinhTuat, DinhHoi, MauTy, KySuu, CanhDan, TanMao, NhamThin, QuyTi, GiapNgo, AtMui, BinhThan, DinhDau, MauTuat, KyHoi, CanhTy, TanSuu, NhamDan, QuyMao, GiapThin, AtTi, BinhNgo, DinhMui, MauThan, KyDau, CanhTuat, TanHoi, NhamTy, QuySuu, GiapDan, AtMao, BinhThin, DinhTi, MauNgo, KyMui, CanhThan, TanDau, NhamTuat, QuyHoi };
    
    /// <summary>
    /// Thang an Sao trong khoa Tu vi
    /// </summary>
    public enum THANGANSAO { NULL, Mot, Hai, Ba, Bon, Nam, Sau, Bay, Tam, Chin, Muoi, MuoiMot, MuoiHai };
    
    /// <summary>
    /// Ngay an Sao trong khoa Tu vi
    /// </summary>
    public enum NGAYANSAO { NULL, MungMot, MungHai, MungBa, MungBon, MungNam, MungSau, MungBay, MungTam, MungChin, MungMuoi, MuoiMot, MuoiHai, MuoiBa, MuoiBon, MuoiNam, MuoiSau, MuoiBay, MuoiTam, MuoiChin, HaiMuoi, HaiMot, HaiHai, HaiBa, HaiBon, HaiNam, HaiSau, HaiBay, HaiTam, HaiChin, BaMuoi };
    
    /// <summary>
    /// Gio an Sao trong khoa Tu vi
    /// </summary>
    public enum GIOANSAO { NULL, Ty, Suu, Dan, Mao, Thin, Ti, Ngo, Mui, Than, Dau, Tuat, Hoi };

    /// <summary>
    /// Gioi tinh Nam, Nu
    /// </summary>
    public enum GIOITINH { NULL, Nam, Nu };

    /// <summary>
    /// Lop cac sao trong khoa Tu vi dau so
    /// </summary>
    public class SaoTuVi
    {
        // Thong tin thoi gian
        private NAMANSAO _NamAnSao;
        private THANGANSAO _ThangAnSao;
        private NGAYANSAO _NgayAnSao;
        private GIOANSAO _GioAnSao;

        // Thong tin gioi tinh
        private GIOITINH _GioiTinh;

        // Thong tin chinh ve Sao
        private SAOTUVI _SaoTuVi;
        private List<LOAISAO> _LoaiSao;
        private PHUONGVISAO _PhuongViSao;
        private TINHAMDUONG _TinhAmDuong;
        private NGUHANHSAO _NguHanhSao;
        private TINHDACHAM _TinhDacHam;
        private VITRIANSAO _ViTriAnSao;

        // Cac thong tin khac ve Sao
        private string _TenSao;
        private string _YNghia;

        /// <summary>
        /// Phuong thuc khoi tao lop SaoTuVi
        /// </summary>
        public SaoTuVi()
        {
            this._NamAnSao = NAMANSAO.NULL;
            this._ThangAnSao = THANGANSAO.NULL;
            this._NgayAnSao = NGAYANSAO.NULL;
            this._GioAnSao = GIOANSAO.NULL;

            this._GioiTinh = GIOITINH.NULL;

            this._SaoTuVi = SAOTUVI.NULL;
            this._LoaiSao = new List<LOAISAO>();
            this._PhuongViSao = PHUONGVISAO.NULL;
            this._TinhAmDuong = TINHAMDUONG.NULL;
            this._NguHanhSao = NGUHANHSAO.NULL;
            this._TinhDacHam = TINHDACHAM.NULL;
            this._ViTriAnSao = VITRIANSAO.NULL;

            this._TenSao = string.Empty;
            this._YNghia = string.Empty;
        }

        /// <summary>
        /// Phuong thuc khoi tao lop SaoTuVi
        /// </summary>
        /// <param name="Sao"></param>
        public SaoTuVi(SAOTUVI Sao)
        {
            // Khoi tao thong tin thoi gian
            this._NamAnSao = NAMANSAO.NULL;
            this._ThangAnSao = THANGANSAO.NULL;
            this._NgayAnSao = NGAYANSAO.NULL;
            this._GioAnSao = GIOANSAO.NULL;

            // Khoi tao thong tin gioi tinh
            this._GioiTinh = GIOITINH.NULL;

            // Khoi tao thong tin sao
            this._SaoTuVi = Sao;
            this._LoaiSao = new List<LOAISAO>();
            this._PhuongViSao = PHUONGVISAO.NULL;
            this._TinhAmDuong = TINHAMDUONG.NULL;
            this._NguHanhSao = NGUHANHSAO.NULL;
            this._TinhDacHam = TINHDACHAM.NULL;
            this._ViTriAnSao = VITRIANSAO.NULL;

            // Khoi tao cac thong tin khac
            this._TenSao = string.Empty;
            this._YNghia = string.Empty;
        }

        /// <summary>
        /// Phuong thuc khoi tao lop SaoTuVi
        /// </summary>
        /// <param name="Sao"></param>
        /// <param name="NamAnSao"></param>
        public SaoTuVi(SAOTUVI Sao, NAMANSAO NamAnSao)
        {
            // Khoi tao thong tin thoi gian
            this._NamAnSao = NamAnSao;
            this._ThangAnSao = THANGANSAO.NULL;
            this._NgayAnSao = NGAYANSAO.NULL;
            this._GioAnSao = GIOANSAO.NULL;

            // Khoi tao thong tin gioi tinh
            this._GioiTinh = GIOITINH.NULL;

            // Khoi tao thong tin sao
            this._SaoTuVi = Sao;
            this._LoaiSao = new List<LOAISAO>();
            this._PhuongViSao = PHUONGVISAO.NULL;
            this._TinhAmDuong = TINHAMDUONG.NULL;
            this._NguHanhSao = NGUHANHSAO.NULL;
            this._TinhDacHam = TINHDACHAM.NULL;
            this._ViTriAnSao = VITRIANSAO.NULL;

            // Khoi tao cac thong tin khac
            this._TenSao = string.Empty;
            this._YNghia = string.Empty;
        }

        /// <summary>
        /// Phuong thuc khoi tao lop SaoTuVi
        /// </summary>
        /// <param name="Sao"></param>
        /// <param name="ThangAnSao"></param>
        public SaoTuVi(SAOTUVI Sao, THANGANSAO ThangAnSao)
        {
            // Khoi tao thong tin thoi gian
            this._NamAnSao = NAMANSAO.NULL;
            this._ThangAnSao = ThangAnSao;
            this._NgayAnSao = NGAYANSAO.NULL;
            this._GioAnSao = GIOANSAO.NULL;

            // Khoi tao thong tin gioi tinh
            this._GioiTinh = GIOITINH.NULL;

            // Khoi tao thong tin sao
            this._SaoTuVi = Sao;
            this._LoaiSao = new List<LOAISAO>();
            this._PhuongViSao = PHUONGVISAO.NULL;
            this._TinhAmDuong = TINHAMDUONG.NULL;
            this._NguHanhSao = NGUHANHSAO.NULL;
            this._TinhDacHam = TINHDACHAM.NULL;
            this._ViTriAnSao = VITRIANSAO.NULL;

            // Khoi tao cac thong tin khac
            this._TenSao = string.Empty;
            this._YNghia = string.Empty;
        }

        /// <summary>
        /// Phuong thuc khoi tao lop SaoTuVi
        /// </summary>
        /// <param name="Sao"></param>
        /// <param name="NgayAnSao"></param>
        public SaoTuVi(SAOTUVI Sao, NGAYANSAO NgayAnSao)
        {
            // Khoi tao thong tin thoi gian
            this._NamAnSao = NAMANSAO.NULL;
            this._ThangAnSao = THANGANSAO.NULL;
            this._NgayAnSao = NgayAnSao;
            this._GioAnSao = GIOANSAO.NULL;

            // Khoi tao thong tin gioi tinh
            this._GioiTinh = GIOITINH.NULL;

            // Khoi tao thong tin sao
            this._SaoTuVi = Sao;
            this._LoaiSao = new List<LOAISAO>();
            this._PhuongViSao = PHUONGVISAO.NULL;
            this._TinhAmDuong = TINHAMDUONG.NULL;
            this._NguHanhSao = NGUHANHSAO.NULL;
            this._TinhDacHam = TINHDACHAM.NULL;
            this._ViTriAnSao = VITRIANSAO.NULL;

            // Khoi tao cac thong tin khac
            this._TenSao = string.Empty;
            this._YNghia = string.Empty;
        }

        /// <summary>
        /// Phuong thuc khoi tao lop SaoTuVi
        /// </summary>
        /// <param name="Sao"></param>
        /// <param name="GioAnSao"></param>
        public SaoTuVi(SAOTUVI Sao, GIOANSAO GioAnSao)
        {
            // Khoi tao thong tin thoi gian
            this._NamAnSao = NAMANSAO.NULL;
            this._ThangAnSao = THANGANSAO.NULL;
            this._NgayAnSao = NGAYANSAO.NULL;
            this._GioAnSao = GioAnSao;

            // Khoi tao thong tin gioi tinh
            this._GioiTinh = GIOITINH.NULL;

            // Khoi tao thong tin sao
            this._SaoTuVi = Sao;
            this._LoaiSao = new List<LOAISAO>();
            this._PhuongViSao = PHUONGVISAO.NULL;
            this._TinhAmDuong = TINHAMDUONG.NULL;
            this._NguHanhSao = NGUHANHSAO.NULL;
            this._TinhDacHam = TINHDACHAM.NULL;
            this._ViTriAnSao = VITRIANSAO.NULL;

            // Khoi tao cac thong tin khac
            this._TenSao = string.Empty;
            this._YNghia = string.Empty;
        }

        /// <summary>
        /// Phuong thuc khoi tao lop SaoTuVi
        /// </summary>
        /// <param name="Sao"></param>
        /// <param name="NamAnSao"></param>
        /// <param name="ThangAnSao"></param>
        /// <param name="NgayAnSao"></param>
        /// <param name="GioAnSao"></param>
        public SaoTuVi(SAOTUVI Sao, NAMANSAO NamAnSao, THANGANSAO ThangAnSao, NGAYANSAO NgayAnSao, GIOANSAO GioAnSao)
        {
            // Khoi tao thong tin thoi gian
            this._NamAnSao = NamAnSao;
            this._ThangAnSao = ThangAnSao;
            this._NgayAnSao = NgayAnSao;
            this._GioAnSao = GioAnSao;

            // Khoi tao thong tin gioi tinh
            this._GioiTinh = GIOITINH.NULL;

            // Khoi tao thong tin sao
            this._SaoTuVi = Sao;
            this._LoaiSao = new List<LOAISAO>();
            this._PhuongViSao = PHUONGVISAO.NULL;
            this._TinhAmDuong = TINHAMDUONG.NULL;
            this._NguHanhSao = NGUHANHSAO.NULL;
            this._TinhDacHam = TINHDACHAM.NULL;
            this._ViTriAnSao = VITRIANSAO.NULL;

            // Khoi tao cac thong tin khac
            this._TenSao = string.Empty;
            this._YNghia = string.Empty;
        }

        /// <summary>
        /// Phuong thuc khoi tao lop SaoTuVi
        /// </summary>
        /// <param name="Sao"></param>
        /// <param name="NamAnSao"></param>
        /// <param name="ThangAnSao"></param>
        /// <param name="NgayAnSao"></param>
        /// <param name="GioAnSao"></param>
        /// <param name="GioiTinh"></param>
        public SaoTuVi(SAOTUVI Sao, NAMANSAO NamAnSao, THANGANSAO ThangAnSao, NGAYANSAO NgayAnSao, GIOANSAO GioAnSao, GIOITINH GioiTinh)
        {
            // Khoi tao thong tin thoi gian
            this._NamAnSao = NamAnSao;
            this._ThangAnSao = ThangAnSao;
            this._NgayAnSao = NgayAnSao;
            this._GioAnSao = GioAnSao;

            // Khoi tao thong tin gioi tinh
            this._GioiTinh = GioiTinh;

            // Khoi tao thong tin sao
            this._SaoTuVi = Sao;
            this._LoaiSao = new List<LOAISAO>();
            this._PhuongViSao = PHUONGVISAO.NULL;
            this._TinhAmDuong = TINHAMDUONG.NULL;
            this._NguHanhSao = NGUHANHSAO.NULL;
            this._TinhDacHam = TINHDACHAM.NULL;
            this._ViTriAnSao = VITRIANSAO.NULL;

            // Khoi tao cac thong tin khac
            this._TenSao = string.Empty;
            this._YNghia = string.Empty;
        }

        /// <summary>
        /// Phuong thuc xoa thong tin Sao
        /// </summary>
        public void ResetThongTin()
        {
            // Xoa cac thong tin sao
            this._SaoTuVi = SAOTUVI.NULL;
            this._LoaiSao = new List<LOAISAO>();
            this._PhuongViSao = PHUONGVISAO.NULL;
            this._TinhAmDuong = TINHAMDUONG.NULL;
            this._NguHanhSao = NGUHANHSAO.NULL;
            this._TinhDacHam = TINHDACHAM.NULL;
            this._ViTriAnSao = VITRIANSAO.NULL;

            // Xoa cac thong tin khac
            this._TenSao = string.Empty;
            this._YNghia = string.Empty;
        }

        /// <summary>
        /// Phuong thuc lay ma Sao
        /// </summary>
        /// <returns></returns>
        public SAOTUVI GetSaoTuVi()
        {
            return this._SaoTuVi;
        }

        /// <summary>
        /// Phuong thuc thay doi ma Sao
        /// </summary>
        /// <param name="Sao"></param>
        public void SetSaoTuVi(SAOTUVI Sao)
        {
            this._SaoTuVi = Sao;
        }

        /// <summary>
        /// Phuong thuc lay thong tin nam an sao
        /// </summary>
        /// <returns></returns>
        public NAMANSAO GetNamAnSao()
        {
            return this._NamAnSao;
        }

        /// <summary>
        /// Phuong thuc thiet lap thong tin nam an sao
        /// </summary>
        /// <param name="NamAnSao"></param>
        public void SetNamAnSao(NAMANSAO NamAnSao)
        {
            this._NamAnSao = NamAnSao;
        }

        /// <summary>
        /// Phuong thuc lay thong tin thang an sao
        /// </summary>
        /// <returns></returns>
        public THANGANSAO GetThangAnSao()
        {
            return this._ThangAnSao;
        }

        /// <summary>
        /// Phuong thuc thiet lap thong tin thang an sao
        /// </summary>
        /// <param name="ThangAnSao"></param>
        public void SetThangAnSao(THANGANSAO ThangAnSao)
        {
            this._ThangAnSao = ThangAnSao;
        }

        /// <summary>
        /// Phuong thuc lay thong tin ngay an sao
        /// </summary>
        /// <returns></returns>
        public NGAYANSAO GetNgayAnSao()
        {
            return this._NgayAnSao;
        }

        /// <summary>
        /// Phuong thuc thiet lap thong tin ngay an sao
        /// </summary>
        /// <param name="NgayAnSao"></param>
        public void SetNgayAnSao(NGAYANSAO NgayAnSao)
        {
            this._NgayAnSao = NgayAnSao;
        }

        /// <summary>
        /// Phuong thuc lay thong tin gio an sao
        /// </summary>
        /// <returns></returns>
        public GIOANSAO GetGioAnSao()
        {
            return this._GioAnSao;
        }

        /// <summary>
        /// Phuong thuc thiet lap thong tin gio an sao
        /// </summary>
        /// <param name="GioAnSao"></param>
        public void SetGioAnSao(GIOANSAO GioAnSao)
        {
            this._GioAnSao = GioAnSao;
        }

        /// <summary>
        /// Phuong thuc lay thong tin gioi tinh
        /// </summary>
        /// <returns></returns>
        public GIOITINH GetGioiTinh()
        {
            return this._GioiTinh;
        }

        /// <summary>
        /// Phuong thuc thiet lap thong tin gioi tinh
        /// </summary>
        /// <param name="GioiTinh"></param>
        public void SetGioiTinh(GIOITINH GioiTinh)
        {
            this._GioiTinh = GioiTinh;
        }

        /// <summary>
        /// Xac dinh vi tri cua sao (an sao), tinh dac ham, loai sao...
        /// </summary>
        public void AnSao()
        {
            switch (this._SaoTuVi)
            {
                case SAOTUVI.TuVi:
                    if ((this._NamAnSao != NAMANSAO.NULL) && (this._ThangAnSao != THANGANSAO.NULL) && (this._NgayAnSao != NGAYANSAO.NULL) && (this._GioAnSao != GIOANSAO.NULL))
                    {
                        // Ma tran so Cuc
                        int[,] SoCuc = new int[6, 5] { { 2, 6, 5, 3, 4 }, { 6, 5, 3, 4, 2 }, { 3, 4, 2, 6, 5 }, { 5, 3, 4, 2, 6 }, { 4, 2, 6, 5, 3 }, { 6, 5, 3, 4, 2 } };
                        // Vi tri cung Menh
                        int x = (14 + (int)this._ThangAnSao - (int)this._GioAnSao) % 12;
                        // Can nam an sao
                        int y = ((int)this._NamAnSao - 1) % 10;
                        // Xac dinh so Cuc
                        int i = ((x + 1) % 2 + x - 1) / 2;
                        int j = y % 5;

                        // Xac dinh vi tri sao Tu vi
                        int k = ((int)this._NgayAnSao % SoCuc[i, j] == 0) ? (int)this._NgayAnSao / SoCuc[i, j] : ((int)this._NgayAnSao - (int)this._NgayAnSao % SoCuc[i, j]) / SoCuc[i, j] + 1;
                        int l = ((int)this._NgayAnSao % SoCuc[i, j] == 0) ? 0 : SoCuc[i, j] - (int)this._NgayAnSao % SoCuc[i, j];
                        int m = (k + 13 + (int)Math.Pow(-1, l) * l) % 12; // m chinh la vi tri cua sao Tu vi

                        // Vi tri Dac - Ham cua sao Tu vi
                        TINHDACHAM[] ViTriDacHam = new TINHDACHAM[12] { TINHDACHAM.BinhHoa, TINHDACHAM.DacDia, TINHDACHAM.MieuDia, TINHDACHAM.BinhHoa, TINHDACHAM.VuongDia, TINHDACHAM.VuongDia, TINHDACHAM.MieuDia, TINHDACHAM.DacDia, TINHDACHAM.MieuDia, TINHDACHAM.BinhHoa, TINHDACHAM.VuongDia, TINHDACHAM.VuongDia };

                        // Loai sao
                        this._LoaiSao.Add(LOAISAO.DeTinh);

                        // Phuong vi sao: Bac dau tinh
                        this._PhuongViSao = PHUONGVISAO.BacDauTinh;
                        // Tinh am duong: Duong
                        this._TinhAmDuong = TINHAMDUONG.Duong;
                        // Ngu hanh: Tho
                        this._NguHanhSao = NGUHANHSAO.Tho;
                        // Vi tri an sao
                        this._ViTriAnSao = (VITRIANSAO)(m + 1);
                        // Tinh Dac dia, Ham dia
                        this._TinhDacHam = ViTriDacHam[m];
                    }
                    break;
                case SAOTUVI.LiemTrinh:
                    break;
                case SAOTUVI.ThienDong:
                    break;
                case SAOTUVI.VuKhuc:
                    break;
                case SAOTUVI.ThaiDuong:
                    break;
                case SAOTUVI.ThienCo:
                    break;
                default:
                    return;
            }
        }
    }
}
Về mặt ý tưởng, Hoàng triển khai như sau:

Đối tượng SaoTuVi có phương thức khởi dựng đại ý như sau:

- SaoTuVi = new ThienDong(SAOTUVI.ThienDong) // khởi tạo đối tượng sao Thiên Đồng

Hoặc sử dụng các phương thức khởi dựng khác có kèm thêm ngày tháng năm an sao..., Nếu không thì sử dụng các phương thức Set ngày, tháng an sao, ví dụ:

- ThienDong.SetNamAnSao(NAMANSAO.BinhDan) // set cho năm bính dần

Sau khi khởi tạo xong, gọi đến phương thức:

ThienDong.AnSao() // phương thức thực hiện định vị và tính chất sao.

Kết quả chúng ta sẽ thu đc: vị trí sao, tính đắc hãm, quan hệ sao, loại tính và lời giải đại cương.

Đây là đối tượng cơ sở để hình thành lên đối tượng Cung số tử vi (đề cập sau).
Được cảm ơn bởi: LamduongSathietBut
Đầu trang

LamduongSathietBut
Mới gia nhập
Mới gia nhập
Bài viết: 22
Tham gia: 13:35, 23/08/09

TL: Lập trình Lý số

Gửi bài gửi bởi LamduongSathietBut »

Góp vui với anh em chút, phần mềm làm xong hi vong public cho 1 phần(càng nhiều càng tốt) cái source để cộng đồng mạng ai thích & có thời gian cùng đóng góp thì hay quá.
Cộng đồng mang việt nam chúng ta hiện nay tinh thần đóng góp phần mềm mở cũng tương đối khá hơn nên rất vui nếu sau này các bạn cũng sẽ open source.
Vài dòng lảm nhãm nếu anh em thấy thế là đòi hỏi nhiều thì xem như chưa góp ý gì nha.
Được cảm ơn bởi: HoangHa
Đầu trang

phamthaihoa
Thượng khách
Thượng khách
Bài viết: 243
Tham gia: 13:42, 03/09/08

TL: Lập trình Lý số

Gửi bài gửi bởi phamthaihoa »

Tôi giải quyết vấn đề này bằng cách có phần an sao duy nhất cho tất cả các sao, phần này chỉ thao tác mảng sao được mã hóa thành các phần tử byte.

Sau khi hoàn thành an sao, hoặc khi tìm được điều kiện mong muốn tôi mới gửi vi trí của sao tới các đối tượng sao tương ứng để chuẩn bị cho phần phân tích như thế đỡ phải tạo một lượng lớn class trong quá trình thực thi.

//Phan An Sao

//Phan phan tich
clsSao ThienDong = new clsSao(clsDiaBan.GetViTriSao(DataSao.ThienDong));

Còn dữ liệu về tính chất của sao thì nên để ra một mảng để có thể config động được, ví dụ vị trí miếu hãm của sao còn cãi nhau, hay an tứ hóa... còn tranh cãi thì nên để tự người dùng cấu hình được :)
Đầu trang

Hình đại diện của thành viên
HoangHa
Ngũ đẳng
Ngũ đẳng
Bài viết: 1002
Tham gia: 21:40, 02/01/09
Đến từ: Hải Phòng

TL: Lập trình Lý số

Gửi bài gửi bởi HoangHa »

Uh, về tư tưởng cho lời giải thì tôi làm thế này:

Vì chúng ta đã có enum của dãy sao:

public enum SAOTUVI { NULL, TuVi, LiemTrinh, ThienDong, VuKhuc, ThaiDuong, ThienCo, ThienPhu, ThaiAm, ThamLang, CuMon, ThienTuong, ThienLuong, ThatSat, PhaQuan, LocTon, BacSi, LucSi, ThanhLong, TieuHao, TuongQuan, TauThu, PhiLiem, HiThan, BenhPhu, DaiHao, PhucBinh, QuanPhuLT, ThaiTue, ThieuDuong, TangMon, ThieuAm, QuanPhuTT, TuPhu, TuePha, LongDuc, BachHo, PhucDuc, DieuKhach, TrucPhu, TruongSinh, MocDuc, QuanDoi, LamQuan, DeVuong, Suy, Benh, Tu, Mo, Tuyet, Thai, Duong };

Nên mỗi sao trong enum như 1 số.

- Khi đối tượng lá số tử vi hoạt động, đầu tiên nó sẽ liệt kê toàn bộ các bộ sao hiện tồn tại trong lá số tử vi. Tiếp đó, nó sẽ mã hóa bộ sao này để lấy ID tương ứng của lời giải. Lời giải sẽ có dạng Template, xin minh họa như sau:

"Người này Mệnh {Cách_Chính_Tinh}, {Bộ_Sao_Khác} ngộ {Không_Vong_Tinh}, {Cát_Tinh}... nên {Lowig_Giải}

Sau đó dùng template engineer để chèn các lời giải.

=> Có thể tùy biến hệ lời giải, miễn sao cứ đúng ID bộ sao trộn vào là có lời giải :D

Tất nhiên để đạt độ hoàn hảo thì người biên soạn lời giải tương ứng cho bộ sao phải thông thạo và biên soạn hay :D

-> trong bộ trên, tôi để toàn bộ tính chất sao trong tệp XML, có thể thay đổi được dễ dàng.
-> những thứ như: loại sao... thì nó cố định nên để trong danh sách cho nhanh.
Đầu trang

phamthaihoa
Thượng khách
Thượng khách
Bài viết: 243
Tham gia: 13:42, 03/09/08

TL: Lập trình Lý số

Gửi bài gửi bởi phamthaihoa »

Tử Vi phiên bản 2.0
Technical Review screen shot :D, theo kế hoạch sẽ release bản beta trong năm Kỷ Sửu :)

http://img38.imageshack.us/img38/5835/t ... review.png
Đầu trang

Hình đại diện của thành viên
nncuong
Sáng lập
Sáng lập
Bài viết: 2500
Tham gia: 12:44, 03/09/08

TL: Lập trình Lý số

Gửi bài gửi bởi nncuong »

phamthaihoa đã viết:Tử Vi phiên bản 2.0
Technical Review screen shot :D, theo kế hoạch sẽ release bản beta trong năm Kỷ Sửu :)

http://img38.imageshack.us/img38/5835/t ... review.png
Sao lai nửa nọ nửa kia thế. Đã tính là Thủy Lục Cục thì năm Kỷ Sửu mệnh đâu là Tích Lịch Hỏa nữa ;)). Khổ thân, cứ phải chiều lòng cả 2 thì dễ bị tẩu hỏa nhập ma lắm :D
Đầu trang

phamthaihoa
Thượng khách
Thượng khách
Bài viết: 243
Tham gia: 13:42, 03/09/08

TL: Lập trình Lý số

Gửi bài gửi bởi phamthaihoa »

Em cho custom được mà, ông thích cấu hình kiểu gì cũng chơi, nhạc gì cũng nhảy :D
Đầu trang

Hình đại diện của thành viên
nncuong
Sáng lập
Sáng lập
Bài viết: 2500
Tham gia: 12:44, 03/09/08

TL: Lập trình Lý số

Gửi bài gửi bởi nncuong »

phamthaihoa đã viết:Em cho custom được mà, ông thích cấu hình kiểu gì cũng chơi, nhạc gì cũng nhảy :D
Quan trọng là làm theo thực đơn, chọn Lạc Việt phát là đổi Thủy - Hỏa hết, chứ ai lại đổi cục mà không đổi mệnh thế. TranNhatThanh cũng làm nhiều tùy chọn nhưng rất khó cho người dùng. Túm các thay đổi vào cùng một nhóm rồi lấy tên của trưởng bối nghĩ ra nó mà đặt tên. Ví dụ: An theo Thiên Sứ Lạc Việt, An theo Thái Thứ Lang, An theo Trần Đoàn, v.v... Chứ để theo định nghĩa của các nhóm sao thì không ai hiểu nổi.
Đầu trang

phamthaihoa
Thượng khách
Thượng khách
Bài viết: 243
Tham gia: 13:42, 03/09/08

TL: Lập trình Lý số

Gửi bài gửi bởi phamthaihoa »

Em làm theo kiểu có thể tuỳ chọn từng sao một, nhưng làm thêm một profile có sẵn.
Ví dụ: an theo tử vi việt thì tất cả thông số cấu hình theo tử vi việt hết, từ thuỷ hoả, cục số an sao, tương tự với tử vi tàu.

Việc an sao gây tranh cãi như trường sinh, khôi việt, lưu hà, hoả linh, tứ hoá cũng làm tương tự :D
Đầu trang

Trả lời bài viết

Quay về “Cuộc sống muôn màu”