2012年2月24日

LotR: LCG for PC

A program for playing Fantasy Flight Games' The Lord of the Rings: The Card Game.

Screenshot:


Setup dialog:


Deck manipulation:


Deck Builder:

2011年1月30日

X11 Selection Translator

Windows 下的字典軟體都異常強大,有著螢幕取詞、即時發音等大量功能 ( 像是我現在用的有道词典 )。希望在 Linux 下也有類似螢幕取詞這樣的方便功能,於是寫了這玩意兒

......不過螢幕取詞貌似相當地有難度啊 (||。3。) 翻了一下 Xlib,好像沒有相關 API 可以摳...... 所以改成實現自動翻譯滑鼠選取的文字,並在游標下顯示翻譯結果


2011年1月5日

OpenCV face detection with Alcapas

OpenCV (Open Source Computer Vision) is a library of programming functions for real time computer vision.
我沒背景知識,只會摳摳 API =.=
HaarDetectObjects 可以偵測物體,丟 haarcascade_frontalface_default.xml 進去就是偵測臉部。

藍框標出程式有反應的區域。

2011年1月4日

PyQt + PyBox2D is easy!

Qt Labs 的文章 Qt + Box2D is easy! 給了一個物體碰撞的小範例。

Box2D 是一個開源的 C++ 2D 剛體物理引擎,包括了連續碰撞偵測、支點限制、摩擦力、齒輪等功能,可以模擬物體互動...... 的數值。它的核心本身不管畫面渲染,所以只會更新物體們的狀態;欲呈現出來,請自行調用任意繪圖函式庫,抓物件狀態數值出來畫......

所以那篇文章就用 Qt 繪圖框架結合 Box2D,弄了個漂亮的彩色小三角形下落模擬。由於我個人一看到 C++ 語法就開始覺得陣陣髮指兼蛋疼,所以把原文給的程式碼用 Python 改寫了。結果在這裡 ( 備份 )。

測試通過的環境:
ArchLinux
Python2.7.1
Box2D2.1.2
PyBox2Dsvn
PyQt4.8.2


描述一下寫簡單 Box2D 2.0 程式的觀念,希望沒有錯誤:
  • 物體由 b2Body 儲存其位置、線性速度、角度、角速度、阻尼等數值。
  • 另由 b2PolygonShape / b2CircleShape 儲存實際碰撞面積、密度、摩擦力等數值。
  • Body 可和 ( 多個 ) Shape 綁在一起,例如搞成個啞鈴,這樣它就又有物理狀態又能碰撞了,可以和其它物體們互動啦~
  • 一組一組地綁好之後用 b2World.CreateBody(b2BodyDef) 塞進世界中。這個函式用來簡化記憶體管理:讓 b2World 接手物體,在它該升仙的時候能自動拖子孫十八代下水。Python 自己有垃圾車到處開,不過對於沒有 Garbage Collector 的 C++ 框架來說,記憶體管理需要額外關注......
  • 每次呼叫 b2World.Step(timeStep, velocityIterations, positionIterations) 時讓整個世界往前模擬一小步。後兩個玩意兒影響模擬精度,官方建議一般場合直接塞 10 和 8。
  • 要具體呈現的話,就是在每次呼叫 Step(timeStep, 10, 8) 後讓繪圖函式重抓物件數值,更新畫面位置囉......。QGraphicsItem 之類東東的 API 還請自行查閱 Qt 文檔 =3=a
  • Box2D 2.1 引進了 fixture 這玩意兒。Python binding 目前還沒更新,所以我不太瞭解是啥回事...... 貌似讓 Shape 單獨管理碰撞範圍了吧。

就這樣,更多的範例程式可以看 PyBox2D 的 testbed。

Makefile 什麼的最討厭了 (>ω<)♪♪

2009年10月27日

ArchLinux + LXDE 安裝筆記 ( 2009.08 )

去年有寫過一篇相同主題的。過時瞭,所以再生篇新的。


什麼樣的人適合用 Linux 呢?我覺得這個問題還挺重要的。畢竟意志不夠堅強、人品又剛好低落的話,很容易會被 Linux 折騰個火冒三丈。

參考答案:有工作 or 學習上的需求,或者信念使然。

以上皆非卻又想摸摸 Linux 世界的話,等後天出的 Ubuntu 9.10 吧!那發行版的社群龐大無比,遇到問題隨便股溝隨便有解,穩穩坐定最適合入門者的第一把交椅。

至於 ArchLinux,比較適合已經對 Linux 有些基本瞭解的人用。特色是可以從基礎系統打造,量身訂做整個使用環境,並且有 AUR 這樣的龐大套件源可供使用。Rolling update 的升級方式可保持套件嶄新程度,適合網路環境不錯的用戶。ArchWiki 是個強大的寶箱,實用性高,遇到問題都可以去查查。若對這些沒有特色都沒有興趣的話,其它發行版可能會比較適合。

確定要灌 ArchLinux 了,那麼我們繼續下去吧......

ArchLinux 下編寫 LaTeX 文檔

關於 TeX,CTAN大家來學 LaTeX 有很詳細的介紹。簡單講,強大的排版工具 ( 語言?),尤其是在數學式子的排版上,因此廣泛用於數學、資訊科學、物理書籍的編排。

古老 TeX 的主要變種有較現代化、易用的 LaTeX 和 Unicode 支援較完善的 XeTeX。使用 LaTeX 排版的知名書籍滿地都是,包括《The Pragmatic Programmer》、《C++ Primer 4/e》、《Introduction to Algorithms》等,族激繁,不及備載。


想搞個 TeX 編寫環境的話,Windows 下可以用 MikTex,Linux 下可以用 TeX Live
# pacman -S poppler texlive-bin texlive-most texlive-langcjk
包頗大 ( 700 MB!! ),灌起來久到有點髮指,忍著點。

另有 TeXworks 這個 Qt4 寫成的圖形介面,幫助編寫和輸出:
# yaourt -S texworks-svn


目前為止個人感覺寫起來有點像 HTML + CSS。雖然要另外花費時間學習,但是排起版來效果也是相當好的。有機會的話可以嘗試看看~

2009年4月23日

[PyQt 教學] Part 7: 聚砂成塔

[PyQt 教學] Part 6: 物件導向的寫法

一路走來,盡係寫些拉雞程式。沒關係,打好基礎後就可以準備擺脫這坨窩囊鳥氣啦 =3=

這次寫個線上字典查閱程式。是的,它會跑去讀取 Yahoo! 奇摩字典 並顯示查詢的單字結果...... 用一種異常偷吃步的方法 =.=

( code )