surface和螢幕
pygame最重要的部分就是surface。我們可以把surface看作是一張白紙。你可以對surface作很多操作,比如在surface上畫線、用某種顏色填充surface上的部分地區、把圖片拷貝到surface上去,把圖片從surface上複製下來、設定或者讀取surface上某個點的顏色。一個surface可以是任何大小,一個遊戲可以有任意多surface。其中有一個surface是特別的,就是用pygame.display.set_mode()建立的display surface。它代表了螢幕,對它的任何操作會出現在使用者的螢幕上。一個遊戲只能有一個這樣的surface,這是SDL的限制。
怎樣建立surface?剛才提到,用pygame.display.set_mode()可以建立特殊的display surface。此外,還可以用image.load()建立一個包含圖片的surface,還可以用font.render()建立一個包含文字的surface。你甚至可以用Surface()建立一個不包含任何東西的surface。
surface的大部分方法都不重要,只要學習其中的blit(), fill(), set_at()和get_at()就夠用了。
display surface的初始化操作是這樣的:
screen = pygame.display.set_mode((1024, 768))
或者 screen = pygame.display.set_mode((1024, 768), pygame.FULLSCREEN)
你可以用set_mode把原來視窗的遊戲變成全屏。其它的俄顯式模式(可以用|串連)有
- DOUBLEBUF: 對於平滑的動畫所必須
- OPENGL: 讓你可以用PyOpenGL,但是不能用pygame的繪圖函數
還有一個可選的depth參數,用來控制顏色顯示的深度。一般情況下不用指定這個參數,只要用預設值就可以了。
如果使用DOUBLEBUF,你需要用flip函數來把繪製的內容顯示到螢幕上。
>>> pygame.display.flip()