Make Game with Python & Pygame (3)

接着來介紹Pygame一些基礎的東西。python

Drawing Images with pygame.image.load() and blit()函數

不少遊戲都不僅是用簡單的畫圖函數就能夠完成的,還須要各類各樣的圖片(也被稱做精靈)pygame能夠加載到surface對象上的圖片格式有PNG, JPG, GIF和BMP。關於格式的不一樣地方能夠上網搜索。字體

接着對上篇最後的一段代碼裏面的東西作些介紹。ui

pygame.image.load()函數返回一個surface對象用於顯示圖片。這個surface對象和顯示窗口對象是分離的,因此咱們必須把圖片顯示對象複製到顯示窗口對象經過blit()方法。spa

方法使用以下:code

DISPLAYSURF.blit(catImg, (catx, caty))對象

第一個參數是要加載的圖片對象,第二個參數是有兩個整數的元組分別表示圖片將要顯示的左上角X和Y的座標值。遊戲

字體圖片

遊戲都須要顯示文字,pygame爲字體和建立文本提供了一些簡單的函數。下面就是一個使用pygame字體的程序。字符串

import pygame, sys
from 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()

執行後的效果如圖:


將字體顯示在屏幕上有六個步驟:

  1. 建立一個pygame.font.Font對象
  2. 建立一個surface對象用於存放字體顯示,這須要經過調用字體對象的render()方法
  3. 建立一個矩形對象經過調用surface對象的get_rect()方法。這個矩形對象將擁有字體的寬度與高度。可是top和left屬性值爲0
  4. 設置矩形對象的位置經過改變它的一個屬性值。在這裏咱們設置了矩形對象的中心在200,150
  5. 將存放字體的顯示對象複製到顯示窗口對象(來自pygame.display.set_mode()方法返回的對象)
  6. 調用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 time
time.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的介紹,並且註釋解釋說明寫的都很詳細,實在是本好書啊。
相關文章
相關標籤/搜索