回應:
當初我也為本站所用的排卦程式是用邏輯方式來排卦,於是我在自己寫起卦程式
時也跟著照做,可是這樣寫出來程式反而大,其實有更好的方法可使程式變小,
那就是直接建立一個含有六十四卦的對應表,把地支、六親和世應都放到表裡,
用查表方式就能排卦了,這樣程式碼比較少,於是我就改用這個方法。我相信本
站的排卦程式也是使用直接查表的方式,並不是如你所言的用運算來產生排卦所
須的資料。
本站的排卦程式並不是利用您所說的列出六十四卦一一查表的
我的 method 如下:
這是 Java 語言,為了避免未來判讀困難,我幾乎把所有變數全以中文取名
這是我幾年前寫的,就是現在正在運作的系統的一部份
應該很簡單,不過我現在都有點看不懂了,留給各位傷腦筋吧
/** 計算本卦及變卦的世爻應爻的位置 */
public void calculate世爻應爻()
{
// 找出本卦,變卦的世應爻以及本宮
for (int i=0;i<8;i++) //宮
{
for(int j=0;j<8;j++) //位
{
if (IChing.京房八宮[j].卦序 == 本卦.卦序)
{
本卦首卦 = 首宮八純卦; //尋本宮
本卦首卦的先天卦序 = i; //本卦的宮位,在先天卦序中的編號
本卦於此宮的卦序 = j;
switch(j) //安世應
{
case 0: 本卦世爻=5; 本卦應爻=2; break;
case 1: 本卦世爻=0; 本卦應爻=3; break;
case 2: 本卦世爻=1; 本卦應爻=4; break;
case 3: 本卦世爻=2; 本卦應爻=5; break;
case 4: 本卦世爻=3; 本卦應爻=0; break;
case 5: 本卦世爻=4; 本卦應爻=1; break;
case 6: 本卦世爻=3; 本卦應爻=0; break;
case 7: 本卦世爻=2; 本卦應爻=5; break;
} // switch
} // if
if (IChing.京房八宮[j].卦序 == 變卦.卦序)
{
變卦首卦 = 首宮八純卦; //尋本宮
變卦首卦的先天卦序 = i; //變卦的宮位,在先天卦序中的編號
變卦於此宮的卦序 = j;
switch(j) //安世應
{
case 0: 變卦世爻=5; 變卦應爻=2; break;
case 1: 變卦世爻=0; 變卦應爻=3; break;
case 2: 變卦世爻=1; 變卦應爻=4; break;
case 3: 變卦世爻=2; 變卦應爻=5; break;
case 4: 變卦世爻=3; 變卦應爻=0; break;
case 5: 變卦世爻=4; 變卦應爻=1; break;
case 6: 變卦世爻=3; 變卦應爻=0; break;
case 7: 變卦世爻=2; 變卦應爻=5; break;
} // switch
} // if
} // 位
} // 宮
}// calculate世爻應爻()
}// calculate世爻應爻()