# 《数字合成》游戏脚本说明文档 (v3.8)



## 1. 如何运行游戏

1. **安装 Pygame**: 如果您尚未安装，请打开您电脑的命令行工具（在Windows上是 **CMD** 或 **PowerShell**）并输入以下命令，然后按回车：

   ```
   pip install pygame
   ```

2. **准备文件**:

   - 将我们最终确定的Python代码保存为一个文件，例如 `game.py`。
   - 在与 `game.py` **完全相同的目录**下，创建一个名为 `assets` 的文件夹。
   - 将所有的资源文件（`.mp3` 音效, `press-start-2p.ttf` 字体, `.ico` 图标）全部放入这个 `assets` 文件夹。

   您的文件结构应该如下所示，这是一个正确的示例：

   ```
   - /您的游戏文件夹/
     |- game.py
     |- /assets/
        |- press-start-2p.ttf
        |- favicon.ico
        |- click.mp3
        |- merge.mp3
        |- chain reaction.mp3
        |- game over.mp3
        |- game-music-loop.mp3
   ```

3. **运行**: 打开命令行工具，进入到 `game.py` 所在的文件夹，然后运行：

   ```
   python game.py
   ```

## 2. 如何将游戏打包成 .exe 文件

将游戏打包成一个`.exe`文件，就可以让没有安装Python的朋友也能直接在Windows电脑上玩。最常用的工具是 `pyinstaller`。

#### **第一步：安装 PyInstaller**

和安装Pygame一样，在命令行工具中输入以下命令并按回车：

```
pip install pyinstaller
```

#### **第二步：执行打包命令**

1. 打开命令行工具。

2. 使用 `cd` 命令进入到您的游戏文件夹（也就是`game.py`和`assets`文件夹所在的位置）。例如：

   ```
   cd C:\Users\WT\Videos\2046
   ```

3. 输入以下打包命令，然后按回车。请**完整复制**这一整行命令：

   ```
   pyinstaller --onefile --windowed --add-data "assets;assets" --icon="assets/favicon.ico" game.py
   ```

#### **命令解释：**

- `--onefile`: 将所有东西打包进一个单独的`.exe`文件中。
- `--windowed`: 运行`.exe`时，不会出现一个黑色的命令行窗口。
- `--add-data "assets;assets"`: **【最重要的一步】** 这会告诉打包工具，把`assets`文件夹和里面的所有内容（字体、音效）一起打包进`.exe`文件中。第一个`assets`是源文件夹，第二个`assets`是打包后在程序内部的路径。
- `--icon="assets/favicon.ico"`: 为您的`.exe`文件设置一个自定义的图标。
- `game.py`: 您要打包的主程序文件名。

#### **第三步：找到您的 .exe 文件**

打包过程需要一些时间。完成后，您的游戏文件夹里会出现几个新文件夹，其中一个是 `dist`。

**您的`.exe`文件就在 `dist` 文件夹里！** 您可以把它复制出来，发送给朋友，他们双击就可以玩了。

## 3. 如何自定义游戏外观（配置区详解）

现在，所有的配置项都集中在代码顶部的 **`UI_SETTINGS`** 字典中。您可以非常安全地修改它们。

### **主菜单界面 (Main Menu)**

- `"MENU_TITLE_POS": (X, Y)`: **主标题的中心点坐标**。修改第二个值（Y）可以整体上下移动标题。
- `"MENU_SUBTITLE_POS": (X, Y)`: **副标题的中心点坐标**。
- `"MENU_START_BUTTON_POS": (X, Y)`: **“开始游戏”按钮的中心点坐标**。

### **游戏结束菜单 (Game Over Menu)**

- `"GAMEOVER_TITLE_POS": (X, Y)`: **"Game Over"标题的中心坐标**。
- `"GAMEOVER_SCORE_TEXT_BASE_POS": (X, Y)`: 这是“最终分数”和“最高数字”这两行文字的**基准中心点**。
- `"GAMEOVER_SCORE_LINE_SPACING"`: **【重要】** 控制“最终分数”和“最高数字”之间的**行间距**。

### **游戏内方块 (In-Game Cells)**

- `"CELL_NUMBER_FONT_SIZE"`: **【重要】** 此项专门控制棋盘上**方块内部数字的字体大小**，与信息栏的字体完全独立。

### **顶部信息栏 (In-Game HUD)**

- `"HUD_LABEL_VALUE_SPACING"`: **【重要】** 这是您最关心的**行间距**。它控制着“标签”（如"Score"）与其下方“数值”（如"100"）之间的垂直距离。**增大此值会让它们的距离变远**。

#### **分数、机会、最高分模块**

您可以独立定制每一块：

- `"HUD_SCORE_LABEL_POS": (X, Y)`: “Score”**标签**的中心点坐标。
- `"HUD_SCORE_VALUE_FONT_SIZE"`: **分数数值**的字体大小。
- （`TRIES` 和 `HIGHEST` 模块的配置项与此类似）

### **游戏内顶部按钮颜色**

- `"BUTTON_..._BG"`: 控制各个按钮的背景色。
- `"BUTTON_..._HOVER"`: 控制鼠标悬停在按钮上时的颜色。

希望这份最终的文档能够帮到您。再次为之前给您带来的所有麻烦，致以最深的歉意。