Make Games with Python & Pygame (1)


看見這本書頗有意思,利用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

  • 須要包含Pygame模塊,即import  pygame
  • 在進行任何具體的Pygame的操做以前,都要進行Pygame的初始化,即pygame.init()
  • DISPLAYSURF = pygame.display.set_mode((400,300)) 這句建立pygame顯示的主窗口,400寬,300高,如上圖顯示所示。
    並且要注意的傳遞是個含有兩個整數的元組變量,不是分開的兩個整數。
  • pygame.display.set_caption('Hello World') 這句就是設置窗體的名字
  • 在一個循環中,咱們處理事件消息,pygame.event.get()獲得咱們與之交互的事件
  • 最後更新窗口(根據事件處理)

其實這個循環就很能說明一個遊戲的處理機制了,在這個循環裏要作三件事情翻譯

  • 處理事件
  • 更新遊戲狀態
  • 將更新的遊戲狀態顯示到屏幕上

文章接着簡單介紹了像素座標系,這個比較簡單。(略)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變量儲存。

相關文章
相關標籤/搜索