標籤

2011年9月18日 星期日

風水大師設計過程簡介

說起這個程式的設計源頭是這樣子的.

有一天趙老師跑來說.....
問: 手機程式你會寫嗎?
答: 理論上是 JAVA 應該可以.
問: 利用相機和指南針計算應該不難吧?
答: 聽起來比手機控制家電還簡單, 不過詳細要看過你要的功能才知道.
問: 沒問題, 這有8個PPT 你看一下.
答: 好的, 有空我看看

...... 過了幾天

趙: 你已經看過我們的機密了何時動工?
答: 啥米? 那也叫機密? 寫這個程式你準備花多少錢?
趙: XK
答: 你簡直是搶人.. 去搶銀行比較快, 更何況我連怎麼支援相機和指南針都沒開始寫.....

就這樣子我上了賊船... 而且到現在還沒收到錢 (哭) 因為他說, 當然是連九星等等. 一起寫完才算錢...... 我倒....

-----------------

開始寫這個程式時, 我連 Liner Layout 都不知道是什麼, 只好上網去買這本書. 寫的還不錯....
http://www.kingstone.com.tw/book/book_page.asp?LID=se008&kmcode=2014480826355&Actid=wise&partner=

事實上, 這本書的全部內容在網路上都有(那買來做什麼? 我是買了才發現網路上都有 >"<)

說起 JAVA, 事實上不難. 可是 ANDRID 上的 JAVA... 那還真的不太一樣.

舉個例子. 在風水判斷上共有 24 個方位, 所以得到角度後要判斷在那個方位.

這很簡單吧. 用 Switch 一次搞定就好了.

不幸的是, Switch 在 JAVA 上只能是整數, 或 CHAR. 就是不能是字串.

所以遇到 "五鬼方" 這種判斷.... 你只能用 IF.... 所以在我的程式碼上充滿了...

    int mountindex=0;
    float kkk = event.values[0];
    // 24山有二個度數夾角, 因此也不能用 SWITCH... 看!

或者....

      // 看. 嗎的全篇都是 IF 實在寫不下去了. JAVA 什麼爛規定. 字串不能 SWITCH      if(housegua.equals("乾")){
       t1 = e1[0][0];t2 = e1[1][0];t3 = e1[2][0];t4 = e1[3][0];t5 = e1[4][0];t6 = e1[5][0];t7 = e1[6][0];t8 = e1[7][0];
      }
說到陣列, 就另人更火大了.

命卦當中, 男命和女命不同, 男命的循環是
"乾坤巽震坤坎離艮兌"
而女命是
"離坎坤震巽艮乾坎艮"
以民國11年為例子. 男命是乾, 女命是離, 12 年男為坤, 女為坎.

我們總不能得到角度後再去算個加減乘除, 之後再比對 24 山吧. 就直接取回陣列值. 100%萬無一失, 也不用計算的要死.

所以我就寫了.

String[] malegua = {"乾","坤","巽","震","坤","坎","離","艮","兌"};
String[] femalegua = {"離","坎'","坤","震","巽","艮","乾","坎","艮"};
String[][] mingua = new String[93][2];

int y=0;
for (int i=0;i<=93;i++){

   mingua[i][0]=malegua[y];
   mingua[i][1]=femalegua[y];
if(y==8){
y=0;
}else{
y++;
}
}

一個簡單的迴圈. 什麼東西都沒有, ECLIPSE 也沒報錯, 傳到AVD 上執行 100% 會說

"對不起"
"XXX 異常中止, 請再試一次"

我在靠北邊走咧..... 這種小迴圈的邏輯如果還會出錯, 就不要寫程式了. 於是無論怎麼除錯. 就是100%會當.

用了2小時在這個簡單迴圈上, 最後一氣之下, 要不然我寫入資料庫. 然後從資料庫取回算了.

接著往窗外一看, 那支米格魯還在無辜的望著我說 "我今天的晚餐沒有吃"....

我笑著說, 那好吧... 不要拿別人的錯誤來懲罰自己, 更不要因為這樣連屋外的狗都沒飯吃了.

程式你賤, 我比你更賤....打開 PHP, 寫個小程式. 我 " 直 接 硬 上 " XD

 String[][] mingua= {{"乾","離"},{"坤","坎"},{"巽","坤"},{"震","震"},{"坤","巽"},{"坎","艮"},{"離","乾"},{"艮","坎"},{"兌","艮"},{"乾","離"},{"坤","坎"},{"巽","坤"},{"震","震"},{"坤","巽"},{"坎","艮"},{"離","乾"},{"艮","坎"},{"兌","艮"},{"乾","離"},{"坤","坎"},{"巽","坤"},{"震","震"},{"坤","巽"},{"坎","艮"},{"離","乾"},{"艮","坎"},{"兌","艮"},{"乾","離"},{"坤","坎"},{"巽","坤"},{"震","震"},{"坤","巽"},{"坎","艮"},{"離","乾"},{"艮","坎"},{"兌","艮"},{"乾","離"},{"坤","坎"},{"巽","坤"},{"震","震"},{"坤","巽"},{"坎","艮"},{"離","乾"},{"艮","坎"},{"兌","艮"},{"乾","離"},{"坤","坎"},{"巽","坤"},{"震","震"},{"坤","巽"},{"坎","艮"},{"離","乾"},{"艮","坎"},{"兌","艮"},{"乾","離"},{"坤","坎"},{"巽","坤"},{"震","震"},{"坤","巽"},{"坎","艮"},{"離","乾"},{"艮","坎"},{"兌","艮"},{"乾","離"},{"坤","坎"},{"巽","坤"},{"震","震"},{"坤","巽"},{"坎","艮"},{"離","乾"},{"艮","坎"},{"兌","艮"},{"乾","離"},{"坤","坎"},{"巽","坤"},{"震","震"},{"坤","巽"},{"坎","艮"},{"離","乾"},{"艮","坎"},{"兌","艮"},{"乾","離"},{"坤","坎"},{"巽","坤"},{"震","震"},{"坤","巽"},{"坎","艮"},{"離","乾"},{"艮","坎"},{"兌","艮"},{"乾","離"},{"坤","坎"},{"巽","坤"},{"震","震"}};
反正 1922 年的人沒幾個人還活著. 即使活著也不指望會用這個程式. 哈哈!

之後就依樣畫葫蘆囉.

 String[][] sitdirection ={
   {"壬","丙","坎"},
   {"子","午","坎"},
   {"癸","丁","坎"},
   {"丑","未","艮"},
   {"艮","坤","艮"},
   {"寅","申","艮"},
   {"甲","庚","震"},
   {"卯","酉","震"},
   {"乙","辛","震"},
   {"辰","戌","巽"},
   {"巽","乾","巽"},
   {"巳","亥","巽"},
   {"丙","壬","離"},
   {"午","子","離"},
   {"丁","癸","離"},
   {"未","丑","坤"},
   {"坤","艮","坤"},
   {"申","寅","坤"},
   {"庚","甲","兌"},
   {"酉","卯","兌"},
   {"辛","乙","兌"},
   {"戌","辰","乾"},
   {"乾","巽","乾"},
   {"亥","已","乾"}
 };

原本是用掌訣可以算的東西. 我也懶的寫了. 全部查表算了 哈哈!

說到這個, 我寫這個程式還真的快氣瘋了. 無論多簡單的程式邏輯都可能莫名奇妙當掉. 或者根本沒有執行. 舉 SPINNER 為例子好了. 初始後化, 肯定就會先執行一次. 為了達成使用者變更後就SHOW 出變更計算結果. 所以理論當然會將界面寫進去.

但是使用者進入畫面後, 肯定預設值不可能是使用者所要的結果.

結論當然是第一次執行時, 不要顯示. 從第2次開始才執行.

然後我們就使用 boolen 值來判斷是否第二次執行. 結果另人抓狂的是. 無論怎麼設. 結果都是 TRUE!

多年來陸陸續續從ASM, BASIC C PERL PHP JAVA JAVASCRIPT. 一路寫下來從沒遇到這種"詭異" 的"靈異"現像. 終於在我退出程式設計前遇到"" 了.

此等心境, 唯著文一篇, 以記念過去2週所死掉的腦細胞....

沒有留言:

張貼留言