我們可以直接通過 pip 來安裝
pip install setuptools requests -U
python -m buildconfig
python setup.py install
pip 就是 python 內建的 "套件安裝跟管理的工具"
想要使用這個工具 我們只要在 "小黑"(命令提示字元) 打上 pip 就可以了
因為我們今天是要 安裝套件
所以我們可以打
pip install pygame
以此類推 假如我們今天 要裝其他 python 的套件
打上 pip install XXX
就可以了
遊戲的畫面是由 "渲染" 來的
所謂的 渲染 就是將圖片經由電腦計算 再呈現給我們看的這個過程 至於他要計算能計算什麼 有很多~ 例如光影/透明度和再移動時的呈現 亦或是我們常接觸到的 文字轉圖片 都是需要計算的喔!
遊戲的畫面是由 一張一張圖片 快速串連起來的
你可以把她想成是動畫這樣 動畫也可以想成很多張照片快速撥放形成
在這邊我們介紹一個常用專有名詞
< 幀數 FPS(Frame per second) >
表示每秒有幾張圖片串起來 舉個例子 假如是10幀 就代表說每秒
有10張照片 以此可知 越高的幀數會讓畫面看起來越流暢 但相對的需要付出更多的時間計算
也回到我們跟剛剛所說的 需要花更多時間 "渲染"
遊戲的畫面是由 一層一層疊上去的
遊戲的渲染跟畫畫不一樣 通常我們在畫畫 會把我們要的主角先畫出來 在把旁邊的地方填上背景 這代表什麼!? 主角後面是沒有背景ㄉ 但是不管事在影片還是遊戲的畫面設計上 我們都是把東西 一層一層疊上去的 先有背景 在把人物疊上去 可以把他想成 Photoshop 的圖層 遊戲中每個元件都是獨立 而且有自己的圖層
思考遊戲規則 > 主畫面設計 > 每個元件的功能設計 > 各個元件的互動 > 遊戲整體優化
我們都知道 pygame 就是拿來寫遊戲的
因此在我們開始寫所謂的 "遊戲內容" 時 當然要先知道怎麼設定一些初始化的東西 像是
首先 透過下面語法啟動套件
pygame.init()
接下來 要設定遊戲視窗的大小和視窗標題
screen = pygame.display.set_mode(800*600)
pygame.display.set_caption("這是視窗標題")
pygame.display
有關主視窗的 也可以說是最基本ㄉ 遊戲沒有主視窗怎麼跑
常用功能:
pygame.Surface
就是我們前面說的 "圖層" 的概念 這裡面有很多跟圖層有關的方法
pygame.rect
用來偵測碰撞的
pygame.draw
用來在 Surface 上畫畫的
pygame.image
用來管理圖片 例如 圖片ㄉ載入等等
pygame.font
跟字體有關的
常用功能:
pygame.time / pygame.mixer / pygame.sound / pygame.transform
Surface 物件
其實就是圖層 很多功能都是在圖層上操作 或是會返回一個圖層給你
例如 pygame.display.set_mode() 這個設定主視窗的功能 就會 return 一個 Surface
常用功能:
pygame.sprite.Sprite
這是pygame裡面幫腳色寫好的一個類別 如果要建立腳色 都會需要繼承這個類別
如果不知道什麼是 "類別" 和 "繼承" 的 你可以想成下面這樣
有一個樣板 裡面寫好了很多東西 如果你想要你的創建的物件也使用裡面的東西
就可以透過 "繼承"
因此 pygame.sprite.Sprite 這個類別裡 就幫我們寫好了像是 腳色圖片
腳色碰撞,顯示,群組等等 我們要使用的時候 只要把我們準備好的東西 "代入進去" 就好了
import sys
import pygame
from pygame.locals import QUIT
# 初始化
pygame.init()
# 建立 window 視窗畫布,大小為 800x600
window_surface = pygame.display.set_mode((800, 600))
# 設置視窗標題為 Hello World:)
pygame.display.set_caption('Hello World:)')
# 清除畫面並填滿背景色
window_surface.fill((255, 255, 255))
# 宣告 font 文字物件
head_font = pygame.font.SysFont(None, 60)
# 渲染方法會回傳 surface 物件
text_surface = head_font.render('Hello World!', True, (0, 0, 0))
# blit 用來把其他元素渲染到另外一個 surface 上,這邊是 window 視窗
window_surface.blit(text_surface, (10, 10))
# 更新畫面,等所有操作完成後一次更新(若沒更新,則元素不會出現)
pygame.display.update()
# 事件迴圈監聽事件,進行事件處理
while True:
# 迭代整個事件迴圈,若有符合事件則對應處理
for event in pygame.event.get():
# 當使用者結束視窗,程式也結束
if event.type == QUIT:
pygame.quit()
sys.exit()