2008年5月30日 星期五

Pygame給新手的建議

下面內容是參考A Newbie Guide to pygame的一些重點節錄 :

1. 了解什麼是Surface, 以及一些Surface重要的functions
pygame.display.set_mode : 建立一個代表螢幕的Surface, 而且只能建立一個 (SDL的限制)
image.load : 讀取一個圖片, 並且將它建立成Surface
font.render() : 把一段文字建立成Surface
blit :
在螢幕的Surface上面, 畫上其他Surface
fill, set_at, get_at, ...

2. 當用image.load讀取圖片的時候, 利用convert將圖片進行轉換, 以加速執行.
ex : my_surface = pygame.image.load("my_pic.bmp").convert()

3. 畫完Surface記得要呼叫pygame.display.update()來更新畫面.

4. 使用pygame裡面的Rect資料型態來表示一個物件, 因為Rect裡面有很多function能幫助你處理
物件的碰撞

5. 檢查碰撞時, 可以用比原本物件小的Rect來幫助加速判斷

6. event的處理有分成兩種 :
1. state system : 利用pygame.mouse.get_pos()pygame.key.get_pressed(), 取得目 前發生的event

優點 : 檢查同時按下容易, 準確的知道目前的event為何
缺點 : 如果在呼叫function之前有event產生又結束, 則這個event會lost
2. SDL event queue : event.poll(), event.wait()
優,缺點和state system相反

至於使用時機則是看應用而定, 如果呼叫event function的delay很短, 使用state system會比較方便. 如果不在乎輸入有delay, event產生的完整性比較重要的情形 (ex : 使用者輸入字串), 則適用SDL event queue.

7. Colorkey : 設定Colorkey之後, 可以讓Surface裡面的某個顏色不被畫出.
ex : surface.set_colorkey((0,0,0)), 會把surface裡面的黑色(0,0,0)不畫出, 而呈現背景的顏色.

8. Alpha : 設定Surface的半透明程度, 數值越大代表接近背景的比例越大, 如果數值為255, 則會呈 現完全透明.


參考資料 :
http://www.pygame.org/docs/tut/newbieguide.html

沒有留言: