Aaron Liu的部落格,紀錄我的生活點點滴滴

Bubble Breaker小遊戲

| 2009年2月24日 星期二
家中女王迷上了小弟手機上Windows Mobile內建的Bubble Breaker小遊戲,為了將手機從女王手中解放出來,只好寫一個PC版的給他玩。



因為沒有bubble的圖,所以bubble都長成方塊的樣子。

基本上遊戲的計分方法是:
消去n個方塊,得n*(n-1)分
若n>10則分數x3
最後消去所有方塊,得額外的1000分
最後消去剩下不到5個方塊,得額外的500分
最後消去剩下不到10個方塊,得額外的100分


為何女王的紀錄可以那麼高分!告訴我秘訣吧!

最後,請享用:
http://www.badongo.com/file/13537956


PS. 如果出現「應用程式正常初始失敗」訊息,請安裝.Net 2.0環境


繼續閱讀...

Qt初心者之路::Hello World篇

| 2009年2月11日 星期三
這篇將以一個.Net慣用者的身份來探索Qt的世界。

不免俗地,從Hello World開始吧!



從Eclipse的File選單可以開啟一個Qt Gui Project,我將專案命名為「FirstQt」,選擇存放目錄以後,就可以開始開發了。如上圖,Eclipse和Visual Studio看起來不大像,但其實功能大同小異,左側欄的「C/C++ Projects」相當於Visual Studio的方案總管,「Qt C++ Widget Box」則相當於工具箱,在Qt的世界,Widget就相當於.Net講的Control。



畫面的中間一看便知是設計Windows Form的地方,可以將左邊的Widget拖到Form裡面放。對於Form的編輯,Eclipse能夠過雙擊Widget自動新增事件處理method,換句話說,它不像Visual Studio可以再拖好的Button上面點兩下,就自動跳到Button_Click的程式馬編輯器。如果要將事件處理交由系統預設好的一些事件處理函數處理(例如hide, repaint等),可以使用下方的Qt C++ Signal Slot Editor,如果要自己寫處理函數,則只要宣告為slot並按照特定的規則命名即可,後面會進一步說明。



至於Widget的屬性設定,可以在右側的Qt C++欄找到,Eclipes還會用顏色分類,就甘心ㄟ!



接下來開始建立一個Hello World程式,首先在Form裡面拖進一個Lable和一個Button,分將objectName改為「labTest」和「butTest」,並編輯一下text屬性,就成了下面的樣子。



接著我們要新增butTest按鈕的click事件。Qt將Event稱為Signal,Event Handler則稱為Slot,要新增一個signal和slot的對應,最簡單的方法就是將一個函數宣告為slot並且用特定的方式去命名。

首先,在宣告檔firstqt.h裡面,新增一段slot的宣告:

private slots:
void on_butTest_clicked();


此處必須要注意,slot函數的名稱,必須要遵照「on_發出事件的Widget名稱_signal名稱」來命名,Qt才會自動將此函數對應到該事件處理。

接著在FirstQt.cpp裡面實做剛剛宣告的on_butTest_clicked函數:

void FirstQt::on_butTest_clicked()
{
ui.labTest->setText(" Hello World!");
return;
}


這裡值得注意的是,Widget並不是像.net一樣直接宣告在Form(FirstQtClass物件)裡面,而是在ui物件裡面,我們可以透過ui物件去存取到其他的Widget。

如此,大功告成!按下Run即可執行程式了!




繼續閱讀...

Qt初心者之路::IDE環境安裝篇

| 2009年2月10日 星期二
心血來潮,想說用微軟的工具寫程式已經七八年了,也該換換跑道接觸一下其他的平台。

但是,要玩什麼好呢?

我的想法是:
1. 不想碰一個完全不熟悉的語言,太累了, 於是Ruby、Python被打槍
2. 最近也想碰Embeeded System,非微軟又有潛力在Embeeded環境跑的,不外乎GTK+和Qt了
3. 要有能在XP上跑的IED,這樣一來學習曲線不會太痛苦,二來我也沒空弄一台Linux來玩,於是乎Qt出線了




基本上Qt的開發要安裝MinGW(Compiler)、Qt(Library)和IDE環境,而IDE環境一般來說是Eclipse + Qt Eclipse Integration套件,不過Qt官方最近新出了一套Qt Creator,雖然目前只出了rc版,但是有「一次安裝包」(Package includes a complete Windows developer environment with MinGW and Qt 4.4.3 built with MinGW. No other download required.)。為了圖方便就選擇了他。


Qt Creator 0.9.2 (RC1)可以在這裡取得

不過,不知道是Qt Creator和我的NB犯衝還是rc版真的還有許多缺陷,這個開發環境在我的電腦上一直當,動不動就耍自閉不理人,不然就是視窗突然消失,實在是沒耐心跟它耗,於是轉而投向Eclipse。

Eclipse可以選擇「Eclipse IDE for C/C++ Developers」版本,此版會預設裝好Eclipse C/C++ Development Tooling - CDT,如果用沒裝CDT的Java開發版本,是不會work的。

基本上Eclipse如果下載的是的C/C++ Developers版,那麼安裝手續只要解壓縮就好。接著必須安裝Qt Eclipse Integration for C++,安裝過程中會詢問Qt和MinGW的bin路徑在哪裡,以我的例子來說,由於這兩個東西都是在裝Qt Creator時順便裝的,因此得選擇「D:\Qt\QtCreator\qt\bin」和「D:\Qt\QtCreator\mingw\bin」。



至此,Qt基本的開發環境就安裝完成了!下次再來寫Hello World...

繼續閱讀...

小飛油耗的新紀錄 13.9KM

| 2009年2月8日 星期日
小飛昨天晚上又創下油耗的新紀錄了,這桶油跑了614.2KM,在中油加了44.13L才加滿,油耗表現13.9KM/L!
這應該是這禮拜一直出差,猛跑二高的關係~~



繼續閱讀...

小飛的新眼鏡 - Sunmark NU-K300前檔隔熱紙

| 2009年2月7日 星期六
拜消費券之賜,許久之前就想裝的前檔隔熱紙終於在今天付出行動了!

我對於前檔隔熱紙的要求只有兩個:
  1. 絕對不能遮GPS訊號,否則我的小Garmin就沒用了!
  2. 2. 顏色不要太深,夜間安全還是比隱私重要!
於是在網路上做功課的時候,就把目標鎖定在Deno V65、V-Kool J60、Sunmark NU-K300、3M M70等幾款淺色的非金屬隔熱紙上。這幾款雖然Survey到的價格差異頗大,但我決定把選擇留到看到實物之後再說。

下午直接把車開去「景文汽車玻璃」,這家的施工品質在網路上還算有口碑,離我家也頗近的。



店裡面的隔熱紙選擇有Sunmark、3M、FSK、Deno、Ralon、AMA還有景文自己的出的隔熱紙,不過品項還是以Sunmark、景文為主,3M、FSK為輔,其餘屬於點綴性質,不過加起來可以選的數量也真是不少。
在不擋GPS的前提下,開始挑隔熱紙,老闆介紹了:Sunmark NU-K300、FSK II 900、Deno CL-65、3M 8700等幾款,8700和CL-65因為太黑就先出局了,剩下$8000的NU-K300和$7000的FSK II 900,經過燈箱測試之後,K300隔熱效果樂勝!衝動之下就敗下去了!

隔熱紙的施工過程其實滿有趣的,就之前自己貼PDA和NB保護貼的經驗,要把一片薄薄的塑膠紙黏的服服貼貼其實是滿困難的,為了弄清楚店家怎麼做,我就一直在旁邊看。

1. 首先師傅會把玻璃的內外都用清潔劑、刮刀、小刀等工具清潔過。
2. 裁一塊差不多大小的隔熱紙,先鋪在玻璃的「外側」,再以熱風槍塑型,把隔熱紙烤成玻璃的弧度。


(我漏拍我的車子此步驟的施工照,補拍師傅貼新玻璃的照片)

3.撕去玻璃內側原有的隔熱紙(上面10cm),然後用白博士和美工刀去除殘膠。



4. 移除A柱的殼還有避光墊,再於中控台上鋪一層毛巾。



5. 在隔熱紙上噴水,溶解紙上面的膠,然後將隔熱紙貼到玻璃上,再以刮刀將多餘水分排出。這就是為何貼隔熱紙不會有氣泡的原因了,因為隔熱紙和玻璃中間是水,排出水比空氣容易,不過為了避免象皮刮刀在排水的時候刮傷隔熱紙,師傅會噴上沙拉脫水潤滑。


(同樣漏拍此步驟,用別台車的代替)

6. 最後,因為我的玻璃邊緣部分有網點,所以必須再以熱風槍將網點的部分弄服貼。



弄完之後已經六點多了,無緣即時體驗K300的隔熱威力,明天再來測試一下這8000花的值不值得吧!

繼續閱讀...