執行遊戲 - LanKuDot/MLGame GitHub Wiki
建立好場景後,接著建立遊戲,讓蛇動起來。
建立遊戲
在遊戲中需要設置 pygame
套件,讓遊戲可以執行。先在資料夾中新增一個檔案 snake.py
作為執行遊戲的主檔案。
先匯入 pygame
套件還有 Scene
類別供待會使用:
import pygame
from .gamecore import Scene
接著初始化 pygame.display
模組,將視窗標題設為 "Snake",並取得用來繪製場景的畫布,畫布的大小就跟場景的大小一樣。使用 clock
(pygame.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 迴圈中,有幾個步驟:
- 先更新場景;
- 在遊戲視窗畫布填上黑色背景,以覆蓋掉上一次在畫布上畫的內容,再傳入給場景繪製遊戲物件,最後用
pygame.display.flip()
將畫布內容反映到視窗上; - 用
clock.tick()
來控制遊戲更新頻率為每秒 10 影格(10 frame,即每秒最多更新 10 次); - 如果偵測到 ESC 鍵或是視窗上的 "X" 鍵被按下,則把
is_running
設為False
,這樣就會跳出迴圈,遊戲就會停止執行。
執行遊戲
到這邊就準備好可以啟動遊戲了,利用下列指令執行貪食蛇遊戲:
python snake.py
就會看到蛇一直往下衝到視窗外。