Last Updated on 2021-11-27 by Clay
Pygame 是一個使用 Python 來撰寫的多媒體遊戲引擎,不過大部分時候我們比較常使用 Coco2d、Unity 3D、Unreal ...... 等等著名的遊戲引擎來開發『正式一點的遊戲』。
這是因為大部分該類遊戲引擎的編輯器功能都相當完善,也就是說有足夠可靠的視覺化編輯界面讓我們完成許多的遊戲場景;相較之下,Pygame 就真的陽春了許多,有同時接觸過就知道其中的差別真的很大。
但是,這並不意味著 Pygame 不能用來完成遊戲。實際上 Pygame 的語法單純且相當直覺,許多時候用於測試一個遊戲的想法是否足夠可行,也就是使用 Pygame 來建立一個 prototype。
另外,由於 Python 的語法相當優雅、容易上手,所以也有很多人會選擇使用 Pygame 來製作自己的第一份遊戲。畢竟,許多學寫程式的人,心中都藏著一個遊戲夢。
那麼本篇文章,將介紹 Pygame 如何下載、以及你該如何執行第一份 Pygame 的遊戲程式。
下載 Pygame
Pygame 是 Python 中非常有名的套件,要只用的話,只需要在終端機中輸入:
pip3 install pygame
即可。若是你使用一些諸如 PyCharm 之類的 IDE,則可能需要去查查怎麼在你當前的環境安裝套件(package)了。
順帶一提,目前我用來測試的版本為 pygame 2.0.1。
執行第一份程式(Hello World)
每次學習一種新的程式語言(或圖形化界面的框架),第一件要做的事情就是印出 Hello World
。這代表著你學會了如何執行這個程式/框架,並且知道怎麼將自己想要印出的文字顯示在想要顯示的地方。
以下是一段範例程式碼:
# coding: utf-8
import pygame
def main():
# Settings
width = 600
height = 400
color_background = (30, 30, 30)
color_font = (200, 200, 200)
# Init
pygame.init()
window_size = (width, height)
screen = pygame.display.set_mode(window_size)
# Text
font = pygame.font.SysFont("Arial", 35)
text = font.render("Hello World", True, color_font)
text_rect = text.get_rect(center=(width/2, height/2))
# Run
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
# Fills
screen.fill(color_background)
screen.blit(text, text_rect)
# Updates
pygame.display.update()
if __name__ == "__main__":
main()
Output:
這個程式不長,不出 40 行。下面就從頭開始講講程式碼是怎麼運作。
匯入 pygame 套件
# coding: utf-8
import pygame
最開頭是最重要的,我們匯入(import)了 pygame
這個套件。若是沒有匯入,那麼我們就無法使用 pygame 替我們封裝好的那些功能,也就談不上製作遊戲了。
def main()
這裡是定義主函式,光是定義其實程式是不會執行的。我們還需要最底下的 if __name__ == "__main__":
來執行這個函式。
不過下面仍需講講 main()
函式裡到底執行了什麼。
設定
# Settings
width = 600
height = 400
color_background = (30, 30, 30)
color_font = (200, 200, 200)
這裡是基礎的設定,包括窗口的長(height)寬(width),以及背景顏色(color_background)和文字顏色(color_font)。顏色都是 RGB 來表示的。
初始化
# Init
pygame.init()
pygame.display.set_caption("Hello Wolrd Demo")
window_size = (width, height)
screen = pygame.display.set_mode(window_size)
這裡初始化了 pygame,讓 pygame 框架真正開始運作了。另外設定了窗口標題與窗口尺寸。
文字
# Text
font = pygame.font.SysFont("Arial", 35)
text = font.render("Hello World", True, color_font)
text_rect = text.get_rect(center=(width/2, height/2))
設定帶有 Hello Wolrd 字串的物件,並設定好字體、大小、位置(正中央)。
執行部份
# Run
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
# Fills
screen.fill(color_background)
screen.blit(text, text_rect)
# Updates
pygame.display.update()
這裡我們需要使用一個 while 迴圈,來讓畫面不斷地更新;除此之外我們也要設定 pygame 關閉視窗的事件、以及 screen.blit(text, text_rect)
來不斷印刷出文字。
最後,使用 pygame.display.update() 更新這一輪迭代的畫面 —— 然後 while 迴圈會不斷進行下一次迭代,一直刷新畫面。
之後的筆記會提到如何利用這一點來製作動畫效果(我猜),但到這裡,我們已經成功完成了第一次的 pygame 執行!
如果有任何問題,歡迎留言在下方詢問。雖然不保證能夠即時,但只要我有看到的時間都會回覆。