執行遊戲 - LanKuDot/MLGame GitHub Wiki

建立好場景後,接著建立遊戲,讓蛇動起來。

建立遊戲

在遊戲中需要設置 pygame 套件,讓遊戲可以執行。先在資料夾中新增一個檔案 snake.py 作為執行遊戲的主檔案。

先匯入 pygame 套件還有 Scene 類別供待會使用:

import pygame

from .gamecore import Scene

接著初始化 pygame.display 模組,將視窗標題設為 "Snake",並取得用來繪製場景的畫布,畫布的大小就跟場景的大小一樣。使用 clockpygame.time.Clock 物件) 來控制遊戲更新的速度。最後再建立場景物件。

if __name__ == "__main__":
    # Initialize display module
    pygame.display.init()
    pygame.display.set_caption("Snake")
    screen = pygame.display.set_mode(
        (Scene.area_rect.width, Scene.area_rect.height))

    clock = pygame.time.Clock()

    scene = Scene()

執行迴圈

接著建立一個迴圈做為執行遊戲的核心,讓遊戲可以一直被更新:

    is_running = True

    while is_running:
        # Update the scene
        scene.update()

        # Draw the scene
        screen.fill((0, 0, 0))
        scene.draw_gameobjects(screen)
        pygame.display.flip()

        # Wait FPS
        clock.tick(10)

        # If ESC key or 'X' button on the window is pressed, quit the loop.
        for event in pygame.event.get():
            if (event.type == pygame.QUIT or
                (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE)):
                is_running = False
                break

在 while 迴圈中,有幾個步驟:

  1. 先更新場景;
  2. 在遊戲視窗畫布填上黑色背景,以覆蓋掉上一次在畫布上畫的內容,再傳入給場景繪製遊戲物件,最後用 pygame.display.flip() 將畫布內容反映到視窗上;
  3. clock.tick() 來控制遊戲更新頻率為每秒 10 影格(10 frame,即每秒最多更新 10 次);
  4. 如果偵測到 ESC 鍵或是視窗上的 "X" 鍵被按下,則把 is_running 設為 False,這樣就會跳出迴圈,遊戲就會停止執行。

執行遊戲

到這邊就準備好可以啟動遊戲了,利用下列指令執行貪食蛇遊戲:

python snake.py

就會看到蛇一直往下衝到視窗外。