---
# System prepended metadata

title: 第一章：遊戲初始設定

---

# 第一章：遊戲初始設定

## 遊戲程式流程圖：
![截圖 2025-05-06 00.43.48](https://hackmd.io/_uploads/HJtEao8lgx.jpg)


## 初始程式
* ### 介紹
    1. 設定螢幕大小
    2. 遊戲迴圈，當按下關閉鍵，退出迴圈並結束遊戲
    3. 設定標題
    4. 設定每秒鐘迴圈最多執行次數
* ### 程式碼：
    ```python=
    import pygame

    FPS = 60
    WIDTH, HEIGHT = 800, 700

    pygame.init()
    screen = pygame.display.set_mode((WIDTH, HEIGHT))
    pygame.display.set_caption("打磚塊遊戲")
    clock = pygame.time.Clock()

    running = True

    while running:
        clock.tick(FPS)
        # 輸入處理
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False

    pygame.quit()
    ```
* ### 語法說明
    * `pygame.init()`：pygame初始化。
    * `pygame.display.set_mode(size)`：
    設定一個視窗並回傳。`size`是一個 *tuple* 包含`(width, height)`。
    * `display.set_caption(title)`：設定視窗標題。
    * `pygame.time.Clock`：一個 *class* 用來做時間的管理。
    * `clock.tick(FPS)`：讓迴圈每秒最多只能跑 PFS 次。
    * `pygame.event.get()`：
    用來取得目前所有 **事件** 的 *list*，事件的`type`如果為`pygame.QUIT`表示關閉視窗。
    * `pygame.quit()`：退出遊戲。


## 畫面顯示
* ### 介紹
    畫面填滿白色，並更新畫面
* ### 程式碼：
    ```python=
    WHITE = (255, 255, 255)

    while running:
        ...
        
        # 畫面顯示
        screen.fill(WHITE)
        pygame.display.update()
    ```
* ### 語法說明
    * `surface.fill(color)`：將某個平面填滿指定顏色，`color`是一個 *tuple* 包含`(R, G, B)`。
    * `pygame.display.update()`：更新畫面。

---
:::spoiler 完整程式碼
```python=
import pygame

FPS = 60
WIDTH, HEIGHT = 800, 700
WHITE = (255, 255, 255)

pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("打磚塊遊戲")
clock = pygame.time.Clock()

running = True

while running:
    clock.tick(FPS)
    # 輸入處理
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # 畫面顯示
    screen.fill(WHITE)
    pygame.display.update()

pygame.quit()
```
:::