Skip to content

[Pygame] 下載並執行 Hello World 程式

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 執行!

如果有任何問題,歡迎留言在下方詢問。雖然不保證能夠即時,但只要我有看到的時間都會回覆。


References


Read More

Leave a Reply