看見這本書頗有意思,利用Python和Pygame模塊進行遊戲開發,邊學習邊翻譯邊寫心得。python
http://download.csdn.net/detail/abclixu123/4582805 這是真本書的下載地址。函數
第二章介紹Pygame的一些基礎知識。開始也是以經典的Hello World開始。所用的開發環境就是安裝Python後自帶的IDLE。學習
HelloWorld程序以下:ui
import pygame, sys from pygame.locals import * pygame.init() DISPLAYSURF = pygame.display.set_mode((400,300)) pygame.display.set_caption('Hello World') while True: for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() pygame.display.update()
這個程序運行後就是一個簡單的黑色窗口。
spa
對這個程序有幾點說明.net
其實這個循環就很能說明一個遊戲的處理機制了,在這個循環裏要作三件事情翻譯
文章接着簡單介紹了像素座標系,這個比較簡單。(略)code
接着提醒了下函數,方法,構造函數和模塊中的函數的區別,牽涉到語言了(略)對象
Surface對象和窗口遊戲
Surface對象其實就表明了矩形的2D圖像,Surface對象的像素能夠經過調用Pygame的畫圖函數改變。窗口邊框,標題欄,按鈕這些都不是Surface對象的一部分。Surface對象是經過pygame.display.set_mode()函數返回的,被稱做顯示窗口。任何在這個對象裏面畫的東西都會被顯示在窗口中當調用pygame.display.update()函數。
幀:一般遊戲跑1秒30幀就足夠了。
Colors
任何顏色均可以由顏色有紅,綠,藍三原色組合構成。在Pygame中,用含有三個整數的元組來表明顏色。如(R,G,B),好比這個元組的第一個值表明紅色。0表示一點也沒有紅色,255表示這個顏色裏面紅色有最大值。一般稱這個元組爲RGB值。
能夠這樣定義一個顏色:
BLACK = (0,0,0)
下表是常見顏色值:
透明顏色
在每一個顏色的最後能夠跟一個值,被稱作a值。它表明這個顏色的不透明程度。通常當你啊把一個像素點畫進surface對象中,新的顏色會徹底的替代先前的顏色。可是若是顏色有a值的話,你就是把這個顏色添加到先前的那個顏色值。好比綠色(0,255,0)如今若是咱們添加了第四個整數a值,咱們可讓其綠色看起來一半透明(0,255,0,128)。a值爲255時表示徹底不透明。也就是(0,255,0)與(0,255,0,255)看起來是同樣的。a值爲0說明顏色徹底透明,此時是沒有意義的,由於這個顏色徹底透明而不可見。
爲了做畫時能用到透明顏色你必須建立一個surface對象經過convert_alpha()方法。下面的例子代碼就是建立了一個surface對象使其透明色能夠被顯示
anotherSurface = DISPLAYSURFconvert_alpha()
anotherSurface這個對象能夠被複制到DISPLAYSURF。重要的一點是不能使用透明顏色到不是經過調用convert_apha方法返回的Surface對象上,包括來自pygame.display.set_mode()返回的顯示窗口對象。
pygame.Color對象
表示顏色有兩種方法,一個使用三個整數或四個整數的元組,另一個就是使用pygame.Color對象。能夠經過調用pygame.Color()構造函數和傳遞3個或4個整數值來建立一個Color對象,而後用一個變量儲存這個對象。就像下面這樣。
myColor = pygame.Color(255,0,255,128)
在pygame裏面任何畫圖函數都會讓傳遞一個顏色參數值,能夠經過元組或者Color對象來傳遞。因此咱們有兩種方法來建立一個顏色。
Rect對象
Pygame有兩種方法表示矩形,就像表示顏色同樣。第一種方法是使用4個整數值的元組。
這四個整數分別是:
左上角X座標值
左上角Y座標值
矩形的寬度(以像素點爲單位)
矩形的高度(以像素點爲單位)
第二種方法就是使用pygame.Rect對象。下面就是建立一個Rect對象的例子
myRect = pygame.Rect(10,20,200,300)
很方便的是,當咱們建立好Rect對象後,關於這個矩形的其它一些參數就自動被計算好了。好比咱們如今一個矩形X左上角座標爲10,並且有200像素寬度,那麼咱們能夠經過Rect對象的right屬性來獲取X右上角座標值,如myRect.right
下圖是pygame.Rect對象提供的全部屬性,這裏假如Rect對象由myRect變量儲存。