八月 30th, 2009 by victor
No comments »
夏天協奏曲DM
夏天協奏曲DM
夏天協奏曲預告片
昨天去看了在金門拍攝的電影第二場首映會 "夏日協奏曲",人多到沒地方坐,只好坐在走道上,這部電影真的非常好看,把金門拍得非常美,名為協奏曲的電影,在音樂上做得也非常好,背景的音樂都很能帶出情境來,女主角沙拉作曲和唱的曲子也都非常動聽,鋼琴也彈得非常棒,我個人對於這部片有很高的評價,很多人常常說要支持國片,在我個人看來,不是所有國片都值得支持,食之無味的爛片支持再多也沒有任何幫助,如果拍片的人沒有心,再多的支持也只是浪費而已,但這部片確實是有笑有淚的好片,可以感受到導演的用心,這樣用心的好電影值得大家的支持
八月 26th, 2009 by victor
5 comments »
最近的一個案子終於算是結束了,簡單地介紹一下這個軟體,跨平臺的幾何圖形繪圖和手繪辨識的功能
可以用各種方式填色
不同的框線
每個物件都可以自由旋轉和變形以及位移
物件可以設定透明度
當然,這軟體是跨平臺的,這是在ubuntu下執行的畫面,原本當我在windows下寫完丟到ubuntu下執行,我猜想可能會遇到一些煩人的跨平台問題要解決,不過很順利地,一切就像在windows下一樣,wxPython看來真的是跨平臺的好選擇
接著是抓圖沒辦法展示的功能,手繪辨識和無限次數復原和重做,請看影片
手繪辨識是裡面最難寫的功能,讓我把我學過的數學都搬了出來,象皮擦的部份也是很複雜的運算,這整個軟體裡用到的幾乎都是線性代數的知識,我很自豪的一點就在於大部份我學過的東西都在實際應用上用得上
八月 25th, 2009 by victor
1 comment »
最近因為接到的Case,滿腦子中都是線性代數的東西,程式中有太多東西需要計算,以前學過的東西全都從腦子裡挖了出來,不過我通常都不背公式的,我所做的都是將當時走過的思路再走過一次,把公式重新導出來,因為公式是一個點,忘記就沒了,而思路是一條線,只要抓到了就可以得到同樣的結果
我還記得有一次,在PTT站上問一個微積分的式子是怎麼來的,因為我在書上看到他經過一個很奇怪的上下乘某個三角函數,式子就莫名奇妙的跑出來了,有個台大的學生很不以為然的回答,就是上下相乘那三角函數阿,當時讓我覺得挺無言的,這我當然也知道,看書也知道,問題是在於,如果沒有書跟你講,你是怎樣能想到這神來一筆,知道要上下乘這個函數? 所以公式的結果從來都不是重點,重點在於思路,只死記公式最後都會忘光光,但是能夠思考而走到公式這一步的話,就好像走過一條路,找到片段,又能找到終點,死記公式,就好像把你丟到一個定點,要你記住那裡長什麼樣子,一個是點,一個是一條路,當然是思路記得比較好
這種想法讓我到了應用時通常都能用上我所學到的,因為我知道那些東西從哪裡來的,即使忘記了也可以再導出來,但同時有些時候也讓我吃足了苦頭,還記得有一次考物理時,前面半節課我在導公式,後面半節用導出來的公式算,下場當然很慘,其實很多時候公式寫到一個地方,剩的就只剩整理,但是這過程卻很煩人、機械化,很容易一個正負號,一個看走眼就會讓後面的過程全部跟著錯掉,所以不得不在過程中每個符號小心的重寫一次,長久以來我一直在想,即使是整理也是有規則的,為什麼不能用電腦來算呢? 雖然我知道有matlab這類的東西,畢竟沒時間學,領域也不太一樣,不合胃口,直到前陣子在PTT的Python版上看見有人推薦一款Python的library : Sympy ,他是一款Python寫的代數運算函式庫,舉個例子你寫出了一個式子,想知道它的導函數是什麼,你只要先將式子列出來,再用一個函數呼叫,他就可以把導函數算出來,這非常地合我喜好,我們現在就來介紹如何使用Sympy來幫你計算兩線在平面交一點的公式
兩線交一點
首先我們在平面上有P1和P2兩點,而從P1出發的是u向量,從P2出發的是v向量,我們想得知這兩條線在哪裡會交一點,就必須這麼算,我們設t和s為實數,我們可以找到一個等式P1 + su = P2 + tv,也就是P1以u的速度走s秒(秒只是幫助想像的假設),P2以v的速度走t秒,兩人會撞在一起,要導公式就要先找等式,這就是我們公式的等式,一開始我不知道是程式寫太多還怎樣,突然有點腦殘的想說,奇怪,這式子有兩個未知數s和t,一條式子算不出兩個未知數阿? 後來才突然想到,我忘了這是平面,所以在x分量和y分量上面我們各有一條這樣的等式,有了兩條等式,兩個未知數才可能有解
有了等式之後,嘿嘿,就是該交給電腦的時候了
from sympy import *
p1x = Symbol( 'p1x' )
p1y = Symbol( 'p1y' )
p2x = Symbol( 'p2x' )
p2y = Symbol( 'p2y' )
ux = Symbol( 'ux' )
uy = Symbol( 'uy' )
vx = Symbol( 'vx' )
vy = Symbol( 'vy' )
s = Symbol( 's' )
t = Symbol( 't' )
fx = p1x - p2x + s* ux - t* vx
fy = p1y - p2y + s* uy - t* vy
sol = solve( ( fx, fy) , s, t)
print 's:'
pprint ( sol[ s] )
print 't:'
pprint ( sol[ t] )
就是這樣簡單直覺,你可以先去吃個飯等他算完嗎? 不,連屁股都還沒挪開椅子就算完了
最後
附上一張用小畫家手導公式的惡心算式圖,高下立判,我當時算出了t,正想說要把t代回公式裡算出s時就頓時覺得頭皮發麻,好煩喔,於是就找了sympy來試用,果然一眨眼的功夫,我式子列完了,公式也算完了,就是這樣!
八月 25th, 2009 by victor
2 comments »
大家肯定都知道在Python下面寫2D遊戲有個眾所階知的選擇就是pygame,雖然它簡單好寫,對於簡單的遊戲來說已經足夠,但是他有一個致命的缺點,就是速度太慢了,在pygame的背後是SDL,用純軟體畫圖的函式庫,既然為純軟體繪圖,遇上旋轉、半透明等等需求,更顯得吃力和不切實際,所以該怎麼辦才好呢?
答案是用Haaf’s Game Engine ,它是一款用DirectX做為backend的Open source遊戲函式庫,我在先前的文章 裡已經有做簡單的介紹,就不再重覆,那這函式庫和Python又有什麼關聯呢? 他是用C++寫的,Python沒辦法用,正因為這樣,我一直一來想幫他寫一個python的binding,我一直想如果Python也能用HGE寫起來一定很開心,我試著找了一下有沒有已經存在這樣的專案,有找到一個,但是居然是在萬惡的GNU授權下的,讓我百思不得其解,那專案的作者到底在想什麼? 想讓大家寫Open source的Game嗎? 我們都知道GNU是大名頂頂的病毒授權,任何程式使用了用GNU的函式庫都會被感染,代表你的主程式一樣得變成GNU的開源授權,我個人非常討厭打著自由名義但是卻有強烈的強迫性質的GNU授權,況且HGE的授權是非常寬鬆的 zlib/libpng License ,實在想不透為什麼一個binding可以用超嚴格的GNU,不過那是那作者的自由,我也管不著,在不能接受那惡心的授權,加上我看了一下他的專案似乎好像也沒有很完整的進度,於是我還是決定自己開了一個新的專案
Python HGE
在這樣的情況下,我前些天抽空開了一個新的Open source專案: Python-HGE ,把一些最核心的程式碼都用boost.python包裝給Python使用,最核心的部份完成度很高,剩下的需要我在未來有空慢慢補上,License是MIT,如果你問我為什麼選MIT,我想答案應該是商業用途一樣也可以,不像GNU那種假腥腥的自由,還有一個重點就是,我覺得麻省理工這名字聽起來很酷,讓我想起每次在Discovery看到的東西
效能問題
我照著原本HGE的Tutorial7的程式寫了一個Python的版本,這個範例的目的就是在展示HGE的效能,純C++的版本速度當然是很快,而Python的版本FPS掉了不少,一開始讓我覺得有點失望,讓我開始懷疑如果效能掉很多的話,那用Python寫HGE還有價值嗎? 後來仔細思考了一下,對於一般的2D遊戲來說,要像這demo整畫面跑來跑去的圖片加透明效果的情況實在不多,就算有也很難到這樣上千張的圖片,再者我都還沒進行最佳化、跑profile等等,而且雖說FPS掉不少,但是那是和C++數百的FPS比起來,在60以上其實都是可以接受的,加上我測試的這台電腦已經有點年代,對現代的電腦和GUP來說情況只會更好,在如此的考量之下,Python HGE還是有搞頭的
python版的tutorial 7截圖
這個demo可以在這裡下載
目前狀況
目前雖然核心部份已經高度完成,不過我還沒有把編出來的pyd釋放的打算,如果想嘗鮮的話可以直接從那個demo裡面找pyd出來用,又或著自己check out原始碼進行編譯
參與開發
如果有興趣的話,歡迎參與專案的開發,如同我上面所提到的,我用的是boost.python,一款基於C++的python binding函式庫,如果你熟悉boost.python的話當然是最好,就算沒有也沒關系,因為其實大部份工作都是剪下貼上之類的,可以參考我已經寫好的部份,有些函數回傳例如指標之類的東西需要特別處理,除此之外都只是很簡單無腦工作
八月 15th, 2009 by victor
2 comments »
最近因為專題上的需要,需要把經緯度轉成TWD97的座標,而在更早之前我寫的電力座標轉換程式,則是需要把TWD97的座標轉換成經緯度,今天我們來談談關於這些地理座標的轉換
» Read more: 經緯度轉換TWD97
七月 30th, 2009 by victor
2 comments »
我之前寫了這篇WebFaction不止是虛擬主機 的介紹,介紹關於WebFaction 雖然是虛擬主機,但是他能做得比虛擬主機多太多了,價格實惠,功能強大,有人問WebFaction 能不能跑自己的C/C++語言寫的Server,答案是當然可以 ,這點有明確地列在他們開出來的規格裡,為了示範如何做以及證明的確可以,我把我之前修網路程式設計寫的無聊Server丟上去編譯並執行給大家看
» Read more: WebFaction能不能跑自己的C/C++語言Server?
七月 22nd, 2009 by victor
5 comments »
最近可能會接到一個需要GUI上畫不少圖表的案子,於是就來研究了一下wxPython + matplotlib,前陣子買了wxPython in action,雖然一本1500元大洋讓我心有點淌血,不過這本書真的寫得很棒,讓我對wxPython有更深入的瞭解,如果案子接下來買n本都可以,我個人認為買書來讀是一種投資,所以基本上看上眼的書買起來也不會手軟,接著因為除了畫圖形,也需要用到不少GUI,我把wxPython官方的demo抓下來,裡面每個範例都跑了一次,對於wxPython能做到什麼地步有了更深入的瞭解,越來越覺得wxPython真是酷斃了,很好玩的GUI framework
在這之後,雖然案子還在歸劃的初期,不過我不是很喜歡空等而沒有程式可以寫的感覺,其實在接洽的這段期間就能先完成一些將會用到的東西,像是widget之類的,或寫寫原形來驗證確實可行之類的都很好,所以我就寫了一個用Matplotlib畫圖表的Control : FigurePanel,因為往後在寫GUI都會用到,如果每次都要特地寫來處理這些我會發瘋,當然最好的方法就是包成Control,如此一來所有圖表都可以直接使用,加上可以有統一的行為,例如另存新檔、列印等等,相當方便
什麼是Matplotlib ? Matplotlib是一套強大的Python畫圖表用的函式庫,如果不知道他到底可以畫到什麼地步,就可以看他們官網的畫廊 ,相信看完後就知道它有多強大,幾乎你想得到的圖、想不到的圖,沒看過的圖,他都可以畫,當然,如果裡面沒有你要的圖,或著你要自創圖,當然也可以自己擴增,有了這套函式庫,原本我可能得先花個一個星期還多少時間來建構一套畫圖表的基礎,如今這些時間完全省了下來,這就是使用Open source的好處,沒有這些東西真的不知道要寫到民國幾年
切入正題,我們來看一下FigurePanel的原始碼
» Read more: wxPython自製Control : 用Matplotlib畫圖表的FigurePanel
七月 19th, 2009 by victor
15 comments »
最近因為要向客戶報價,使用的空間當然也要讓客戶知道,客戶原本案主要用的空間是貴到暴炸的國內空間,每年要價一萬多元,流量和空間更是小得可憐,拿國內和國外比當然是不能比,為了讓客戶瞭解差別在哪裡,所以就翻譯了一份WebFaction的Plans
下列資訊以原網頁 內容為主,價錢單位為美金
» Read more: WebFaction價目表中文版,再一次推薦WebFaction
七月 18th, 2009 by victor
5 comments »
因為Client需要重構要花一些時間,在這期間想說如果都沒變化還挺無趣的,但Client又還不能動,就在伺服器端加了一個無腦亂跑和亂說話的NPC: Dragon
話說這幾天下來還蠻多人進來的,大多是外國人,果然全球的市場就是不一樣,才放上去沒多久下載次數已經是之前程式的幾倍,不過安裝率反而比較低,大概是因為太揚春和有些問題,玩家大多都打英文,來自各個時區,不同年齡,目前看到最小的是一個外國小女孩13歲拿著G1在玩,真是有錢 囧
玩家的反應兩極,有人一進來就說"This is suck", "I’m out"就跑了,不然就說"This is gay!", "You look gay", "every one in this game looks gay",也有人覺得很有趣,說"This is an awsome idea", "This is interesting", "I can’t wait this game to be improved",或許因為兩極反應拿到3.5顆星
整體看起來Android上的mmorpg或是像這樣的線上聊天室還是有搞頭的,單以台灣市場可能太小,但全球的話就應該夠大足以稱起這遊戲,不過還有很長的路要走,首要的工作就是改進client
七月 15th, 2009 by victor
2 comments »
終於,第一個可運行的版本出來了,本來這種程式應該要慢慢寫才對,但是臨時決定要衝比賽,玩家端包含伺服器端寫了我三天的程式,程式寫得很髒很亂,有不少小bug,但大至上的運作都是正常的,日後維護可辛苦了,不過至少即時趕出來了
遊戲截圖
進入主畫面後點擊地圖的八個方向就可以移動
未來的目標是做成手機上的MMORPG,不過可能還要很久的時間
下載
透過下載連結 或是qrcode: