📄 liuren.pas
字号:
SAK[I].Zhun:=True;
Inc(P);
end
else
SAK[I].Zhun:=False;
end;
if P=1 then //只有一个仲神,察微课
begin
for I:=1 to 4 do//找出来定三传
begin
if SAK[I].Zhun then
begin//定三传
vSanChuan.ChuChuan.DiZhi:=SAK[I].Shen;
ZhongMoChuan;//经典中、末传
Exit;
end;
end;
end
else
begin
GanZhiFaYong;//干支发用,复等课
ZhongMoChuan;//经典中、末传
Exit;
end;
end;//if P=1 then 还好,只有一个老大
end;//procedure
procedure YaoKeDiSi;//遥克第四
var
GW:TWuXingShunXu;
I:Integer;
xk,xz:integer;//斜克、斜贼
begin
GW:=TianGanWuXing(vSiKe.RiKe1.XiaShen);
xk:=0; xz:=0;
for I:=2 to 4 do//整理关系
begin
SAK[I].GuanXi:=WuXingGuanXi(DiZhiWuXing(SAK[I].Shen),GW);
if SAK[I].GuanXi=Ke then Inc(xk);
if SAK[I].GuanXi=Zei then Inc(xz);
end;
if (xk=0) and (xz=0) then//没有遥克、贼
begin
Processed:=False;//昂星第五
Exit;
end;
if xk>0 then
KL:=Ke//有斜克,蒿矢课
else
KL:=Zei;//有斜贼,弹射课
P:=0;
for I:=2 to 4 do//准备发用
begin
SAK[I].Zhun:=(SAK[I].GuanXi=KL);
if SAK[I].Zhun then Inc(P);
end;
for I:=2 to 4 do//确实发用
begin
if SAK[I].Zhun then
if (TianGanYinYang(vSiKe.RiKe1.XiaShen)=DiZhiYinYang(SAK[I].Shen)) or (P=1) then
begin
vSanChuan.ChuChuan.DiZhi:=SAK[I].Shen;
ZhongMoChuan;//经典中、末传
Exit;
end;
end;//for
end;//procedure
procedure AngXingDiWu;//昂星第五
var
dzI:TDiZhiShunXu;
begin
if TianGanYinYang(SiKe.RiKe1.XiaShen)=yyYang then //阳日,虎视课
begin
vSanChuan.ChuChuan.DiZhi:=vTianPan.Items[dzYou];
vSanChuan.ZhongChuan.DiZhi:=SAK[3].Shen;//辰上神
vSanChuan.MoChuan.DiZhi:=SAK[1].Shen;//日上神
end
else//阴日,冬蛇掩目
begin
for dzI:=dzZi to dzHai do//天盘酉在哪里?
if vTianPan.Items[dzI]=dzYou then Break;
vSanChuan.ChuChuan.DiZhi:=vDiPan.Items[dzI];
vSanChuan.ZhongChuan.DiZhi:=SAK[1].Shen;//日上神
vSanChuan.MoChuan.DiZhi:=SAK[3].Shen;//辰上神
end;
end;//procedure
procedure FuYinDiLiu;//伏吟第六
var
I:Integer;
begin
if (K>0) or (Z>0) then//有贼、克
begin
for I:=1 to 4 do if (SAK[I].GuanXi=Ke) or (SAK[I].GuanXi=Zei) then Break;//发用课
vSanChuan.ChuChuan.DiZhi:=SAK[I].Shen;
if ZhiXing[vSanChuan.ChuChuan.DiZhi]=vSanChuan.ChuChuan.DiZhi then//初传自刑
vSanChuan.ZhongChuan.DiZhi:=SAK[3].Shen//支上神为中传
else
vSanChuan.ZhongChuan.DiZhi:=ZhiXing[vSanChuan.ChuChuan.DiZhi];//初传所型为中传
end
else//没有贼、克
begin
if TianGanYinYang(vSiKe.RiKe1.XiaShen)=yyYang then//阳日取干上神为初传
vSanChuan.ChuChuan.DiZhi:=SAK[1].Shen
else//阴日取支上神为初传
vSanChuan.ChuChuan.DiZhi:=SAK[3].Shen;
if ZhiXing[vSanChuan.ChuChuan.DiZhi]=vSanChuan.ChuChuan.DiZhi then//初传自刑
begin
if TianGanYinYang(SiKe.RiKe1.XiaShen)=yyYang then//阳日取支上神为中传
vSanChuan.ZhongChuan.DiZhi:=SAK[3].Shen
else//阴日取干上神为中传
vSanChuan.ZhongChuan.DiZhi:=SAK[1].Shen;
end
else//初传所刑为中传
vSanChuan.ZhongChuan.DiZhi:=ZhiXing[vSanChuan.ChuChuan.DiZhi];
end;
//取末传
if ZhiXing[vSanChuan.ZhongChuan.DiZhi]=vSanChuan.ZhongChuan.DiZhi then//中传自刑,中传所冲为末传
begin
vDiPan.Finger:=vSanChuan.ZhongChuan.DiZhi;
vDiPan.Step(6);
vSanChuan.MoChuan.DiZhi:=vDiPan.Finger;
end
else
vSanChuan.MoChuan.DiZhi:=ZhiXing[vSanChuan.ZhongChuan.DiZhi];//中传所型为末传
end;//procedure
procedure FanYinDiQi;//反吟第七
begin
vSanChuan.ChuChuan.DiZhi:=ZhiMa[SAK[3].Shen];//日支驿马为初传 无依格
GanShangShenLiangChuan;//干上神两传
end;
procedure BieZeDiBa;//别责第八
begin
_TGL.Finger:=vSiKe.RiKe1.XiaShen;
if TianGanYinYang(_TGL.CurrItem.Order)=yyYang then//日干为阳
begin
_TGL.Step(5);//与日干相合
vSanChuan.ChuChuan.DiZhi:=vTianPan.Items[_TGL.CurrItem.DiGong];//所寄地盘的上神为初传
end
else
begin
vDiPan.Finger:=vSiKe.ChenKe1.XiaShen;
vDiPan.Step(4);//顺时取三合的下一元素
end;
GanShangShenLiangChuan;//干上神两传
end;//procedure
procedure BaZhuanDiJiu;//八专第九
begin
if TianGanYinYang(vSiKe.RiKe1.XiaShen)=yyYang then
begin//阳日,第一课上神进两宫发用
vDiPan.Finger:=SAK[1].Shen;
vDiPan.Step(2);
end
else
begin//阴日,第四课上神退两宫发用
vDiPan.Finger:=SAK[4].Shen;
vDiPan.Step(-2);
end;
vSanChuan.ChuChuan.DiZhi:=vDiPan.Finger;
GanShangShenLiangChuan;//干上神两传
end;//procedure
begin//san chuan main
for I:=1 to 4 do
begin
SAK[I]:=TAnKe.Create;
end;
//判定四课的上下关系
SAK[1].GuanXi:=WuXingGuanXi(DiZhiWuXing(vSiKe.RiKe1.ShangShen), TianGanWuXing(vSiKe.RiKe1.XiaShen));
SAK[2].GuanXi:=WuXingGuanXi(DiZhiWuXing(vSiKe.RiKe2.ShangShen), DiZhiWuXing(vSiKe.RiKe2.XiaShen));
SAK[3].GuanXi:=WuXingGuanXi(DiZhiWuXing(vSiKe.ChenKe1.ShangShen), DiZhiWuXing(vSiKe.ChenKe1.XiaShen));
SAK[4].GuanXi:=WuXingGuanXi(DiZhiWuXing(vSiKe.ChenKe2.ShangShen), DiZhiWuXing(vSiKe.ChenKe2.XiaShen));
//上神
SAK[1].Shen:=vSiKe.RiKe1.ShangShen;
SAK[2].Shen:=vSiKe.RiKe2.ShangShen;
SAK[3].Shen:=vSiKe.ChenKe1.ShangShen;
SAK[4].Shen:=vSiKe.ChenKe2.ShangShen;
K:=0; Z:=0;//初始化贼、克的变量
for I:=1 to 4 do//贼克关系数量
begin
if SAK[1].GuanXi=Zei then Inc(Z);//贼
if SAK[1].GuanXi=Ke then Inc(K);//克
end;
Processed:=false;//还末定三传
if vTianPan.Items[dzZi]=dzZi then
begin
FuYinDiLiu;//伏吟第六
goto ZhaoDunGan;
end;
if (K=1) or (Z=1) then
begin
KeZeiDiYi;//克贼第一
goto ZhaoDunGan;
end;
if ((K>1) and (Z=0){比用课}) or (Z>1{知一课}) then
begin
BiYongDiEr;//比用第二
if Not(Processed) then SheHaiDiSan;//涉害第三
goto ZhaoDunGan;
end;
if (K=0) and (Z=0) then
begin
if vTianPan.Items[dzZi]=dzWu then
begin
FanYinDiQi;//天地对冲,反吟第七
goto ZhaoDunGan;
end;
if (SAK[1].Shen=SAK[3].Shen) or (SAK[1].Shen=SAK[4].Shen) or (SAK[2].Shen=SAK[3].Shen) or (SAK[2].Shen=SAK[4].Shen) then//实有三课
begin
BieZeDiBa;//实有三课,别责第八
goto ZhaoDunGan;
end;
if _TGL.Items[vSiKe.RiKe1.XiaShen].DiGong=vSiKe.ChenKe1.XiaShen then//
begin
BaZhuanDiJiu;//干支同位,八专第九
goto ZhaoDunGan;
end;
YaoKeDiSi;//遥克第四
if Not(Processed) then AngXingDiWu;//昂星第五
goto ZhaoDunGan;
end;
ZhaoDunGan://找遁干
vDiPan.Finger:=vSiKe.ChenKe1.XiaShen;
vDiPan.Step(Integer(tgGui)-Integer(vSiKe.RiKe1.XiaShen)+1);//越过旬末,第一个空亡
vKongWang1:=vDiPan.Finger;
vDiPan.StepNext;//下一个空亡
vKongWang2:=vDiPan.Finger;
//初传
if vSanChuan.ChuChuan.DiZhi in [KongWang1,KongWang2] then
vSanChuan.ChuChuan.DunGan:=tgNull
else
begin
vDiPan.Finger:=vSiKe.ChenKe1.XiaShen;
_TGL.Finger:=vSiKe.RiKe1.XiaShen;
_TGL.Step(Integer(vSanChuan.ChuChuan.DiZhi)-Integer(vSiKe.ChenKe1.XiaShen));
vSanChuan.ChuChuan.DunGan:=_TGL.CurrItem.Order;
end;
//中传
if vSanChuan.ZhongChuan.DiZhi in [KongWang1,KongWang2] then
vSanChuan.ZhongChuan.DunGan:=tgNull
else
begin
vDiPan.Finger:=vSiKe.ChenKe1.XiaShen;
_TGL.Finger:=vSiKe.RiKe1.XiaShen;
_TGL.Step(Integer(vSanChuan.ZhongChuan.DiZhi)-Integer(vSiKe.ChenKe1.XiaShen));
vSanChuan.ZhongChuan.DunGan:=_TGL.CurrItem.Order;
end;
//末传
if vSanChuan.MoChuan.DiZhi in [KongWang1,KongWang2] then
vSanChuan.MoChuan.DunGan:=tgNull
else
begin
vDiPan.Finger:=vSiKe.ChenKe1.XiaShen;
_TGL.Finger:=vSiKe.RiKe1.XiaShen;
_TGL.Step(Integer(vSanChuan.MoChuan.DiZhi)-Integer(vSiKe.ChenKe1.XiaShen));
vSanChuan.MoChuan.DunGan:=_TGL.CurrItem.Order;
end;
//三传的天将
for dzI:=dzZi to dzHai do
if vTianPan.Items[dzI]=vSanChuan.ChuChuan.DiZhi then Break;
vSanChuan.ChuChuan.Jiang:=vJiangPan.Items[dzI];
for dzI:=dzZi to dzHai do
if vTianPan.Items[dzI]=vSanChuan.ZhongChuan.DiZhi then Break;
vSanChuan.ZhongChuan.Jiang:=vJiangPan.Items[dzI];
for dzI:=dzZi to dzHai do
if vTianPan.Items[dzI]=vSanChuan.MoChuan.DiZhi then Break;
vSanChuan.MoChuan.Jiang:=vJiangPan.Items[dzI];
//三传和日干的六亲关系
RGWX:=TianGanWuXing(vSiKe.RiKe1.XiaShen);
vSanChuan.ChuChuan.GuanXi:=WuXingGuanXi(DiZhiWuXing(vSanChuan.ChuChuan.DiZhi),RGWX);
vSanChuan.ZhongChuan.GuanXi:=WuXingGuanXi(DiZhiWuXing(vSanChuan.ZhongChuan.DiZhi),RGWX);
vSanChuan.MoChuan.GuanXi:=WuXingGuanXi(DiZhiWuXing(vSanChuan.MoChuan.DiZhi),RGWX);
for I:=1 to 4 do
begin
SAK[I].Free;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -