接著來介紹Pygame一些基礎的東西。
Drawing Images with pygame.image.load() and blit()
很多遊戲都不只是用簡單的畫圖函數就可以完成的,還需要各種各樣的圖片(也被稱作精靈)pygame可以載入到surface對象上的圖片格式有PNG, JPG, GIF和BMP。關于格式的不同地方可以上網搜尋。
接著對上篇最後的一段代碼裡面的東西做些介紹。
pygame.image.load()函數返回一個surface對象用於顯示圖片。這個surface對象和顯示視窗對象是分離的,所以我們必須把圖片顯示對象複製到顯示視窗對象通過blit()方法。
方法使用如下:
DISPLAYSURF.blit(catImg, (catx, caty))
第一個參數是要載入的圖片對象,第二個參數是有兩個整數的元組分別表示圖片將要顯示的左上方X和Y的座標值。
字型
遊戲都需要顯示文字,pygame為字型和建立文本提供了一些簡單的函數。下面就是一個使用pygame字型的程式。
import pygame, sysfrom pygame.locals import *pygame.init()DISPLAYSURF = pygame.display.set_mode((400,300))pygame.display.set_caption("Hello World")WHITE = (255, 255, 255)GREEN = (0, 255, 0)BLUE = (0, 0 ,128)fontObj = pygame.font.Font('freesansbold.ttf', 32)textSurfaceObj = fontObj.render('Hello World!', True, GREEN, BLUE)textRectObj = textSurfaceObj.get_rect()textRectObj.center = (200, 150)while True: DISPLAYSURF.fill(WHITE) DISPLAYSURF.blit(textSurfaceObj, textRectObj) for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() pygame.display.update()
執行後的效果
將字型顯示在螢幕上有六個步驟:
- 建立一個pygame.font.Font對象
- 建立一個surface對象用於存放字型顯示,這需要通過調用字型對象的render()方法
- 建立一個矩形對象通過調用surface對象的get_rect()方法。這個矩形對象將擁有字型的寬度與高度。但是top和left屬性值為0
- 設定矩形對象的位置通過改變它的一個屬性值。在這裡我們設定了矩形對象的中心在200,150
- 將存放字型的顯示對象複製到顯示視窗對象(來自pygame.display.set_mode()方法返回的對象)
- 調用pygame.display.update()讓顯示視窗對象顯示在螢幕上
pygame.font.Font()的建構函式的參數是一個字型檔和一個表示字型大小的整數。我們傳遞了"freesansbold.ttf"(這個字型來自pygame)和整數32.render()方法的參數是一個要顯示的字串,一個BOOL類型的值決定是否需要消除鋸齒,文字的顏色,文字的背景顏色。如果想要個透明的背景顏色,那麼只需要在調用該方法是不傳遞最後一個背景顏色參數。
消除鋸齒,這個是概念的東西。(略)
播放聲音播放聲音甚至比顯示圖片更簡單。首先,需要建立一個pygame.mixer.Sound對象通過調用pygame.mixer.Sound()建構函式。它需要一個字串參數,也就是音效檔名。pygame可以載入wav, mp3,或者oog的聲音格式檔案。播放聲音需要調用聲音對象的play()方法。如果想立即停止聲音則調用stop()方法。stop()方法沒有參數。下面一段載入聲音的簡單代碼:
soundObj = pygame.mixer.Sound('beeps.wav')soundObj.play()import timetime.sleep(1)soundObj.stop()
聲音對象可以造成很好的聲音效果當遊戲者具體做了某件事時,比如受到傷害,拾起一個硬幣等。遊戲最好也能有背景音樂無論遊戲進行到何時。Pygame只能載入一個音樂檔案用作背景音樂在一個時刻。為了載入一個背景音樂檔案,調用pygame.mixer.music.load()函數傳遞一個關於音樂檔案名稱的字串。音樂檔案格式可以是WAV,MPS,MIDI.開始播放背景音樂,需要調用pygame.mixer.music.play(-1,0.0)函數,-1這個參數使背景音樂永遠播放直到音樂檔案末尾。如果設定為0或者比0大的整數,那麼音樂就只迴圈傳遞的整數代表的那麼多次,而不是永遠迴圈。0.0表示從音樂檔案開始處播放音樂。傳遞多少值就從多少值開始播放音樂。為了停止背景音樂,需要調用pygame.mixer.music.stop()函數,此函數沒有參數。下面的代碼是關於音樂檔案處理的一些方法:
pygame.mixer.music.load('backgroundmusic.mp3')pygame.mixer.music.play(-1,0.0)#....some more of your code goes here..pygame.mixer.music.stop()
上面差不多就是pygame的一些基礎的東西了,然後作者就以每章一個遊戲來繼續pygame的介紹,而且注釋解釋說明寫的都很詳細,實在是本好書啊。