Skip to content

pondahai/train_sim

Repository files navigation

train_sim

簡易 3D 電車模擬器

image image

這是一個使用 Python 開發的簡易 3D 電車模擬器,包含兩個主要程式:

  1. 電車模擬器 (main.py)
  2. 場景編輯器 (scene_editor.py)

全程用gemini-2.5-pro vibe coding完成

功能特點

電車模擬器

  • 3D 電車模擬系統
  • 可自定義軌道和場景
  • 支援直線和曲線軌道段
  • 場景中可添加建築物、圓柱體和樹木
  • 即時場景編輯和重新載入
  • 小地圖顯示功能
  • 坐標顯示系統
  • 電車物理模擬(加速、減速、摩擦力等)

場景編輯器

  • 圖形化介面(使用 PyQt5)
  • 表格式場景指令編輯
  • 即時場景預覽
  • 支援拖放編輯
  • 自動指令提示
  • 場景語法檢查
  • 即時小地圖預覽

系統需求

電車模擬器

  • Python 3.x
  • PyGame
  • OpenGL
  • NumPy

場景編輯器

  • Python 3.x
  • PyQt5
  • OpenGL
  • NumPy

使用方式

電車模擬器 (main.py)

控制方式

  • W/↑: 加速
  • S/↓: 煞車
  • 滑鼠滾輪: 調整速度
  • ESC: 切換滑鼠鎖定/解鎖,再次按下退出
  • TAB: 切換滑鼠鎖定狀態
  • G: 切換地面顯示
  • L: 切換循環模式
  • M: 切換小地圖顯示
  • I: 切換坐標顯示
  • PageUp/PageDown: 縮放小地圖
  • R: 手動重新載入場景
  • 滑鼠左鍵: 在解鎖狀態下點擊以重新鎖定視角

場景編輯器 (scene_editor.py)

功能說明

  • 使用表格界面編輯場景指令
  • 左側顯示場景指令列表
  • 右側顯示即時小地圖預覽
  • 自動顯示當前指令的參數提示
  • 支援場景文件的載入和保存
  • 提供即時語法檢查和錯誤提示

操作方式

  • 直接在表格中編輯場景指令
  • 使用 Enter 鍵新增行
  • 可拖動調整表格和預覽區域大小
  • 檔案選單提供存檔和重新載入功能
  • 自動保存修改內容

場景配置

場景使用 scene.txt 文件進行配置,支援以下指令:

  • map: 設定地圖紋理和比例
  • start: 設定起始位置和角度
  • straight: 新增直線軌道段
  • curve: 新增曲線軌道段
  • building: 新增建築物
  • cylinder: 新增圓柱體
  • tree: 新增樹木

專案結構

共用模組

  • scene_parser.py: 場景檔案解析器
  • texture_loader.py: 紋理載入器
  • renderer.py: 3D 渲染器
  • track.py: 軌道系統

電車模擬器模組

  • main.py: 主程式入口
  • camera.py: 相機控制系統
  • tram.py: 電車物理模擬

場景編輯器模組

  • scene_editor.py: 圖形化場景編輯器
    • 使用 PyQt5 構建使用者介面
    • 整合 OpenGL 預覽功能
    • 提供場景編輯和驗證功能

運作原理

1. 場景管理系統

  • 使用 scene.txt 定義場景配置
  • scene_parser.py 負責解析場景文件,將文本指令轉換為場景物件
  • 支援場景熱重載:系統會定期檢查場景文件的修改時間,自動重新載入更新後的場景

2. 軌道系統

  • 軌道由直線段(StraightTrack)和曲線段(CurveTrack)組成
  • 每個軌道段都包含:
    • 起點位置和方向
    • 長度或曲率半徑
    • 坡度資訊
  • 軌道系統支援連續軌道段的平滑連接

3. 電車物理模擬

  • 電車運動模型包含:
    • 位置和方向向量
    • 速度和加速度
    • 摩擦力和煞車力
  • 使用時間步進(delta time)更新物理狀態
  • 支援最大速度限制和平滑的加速/減速過程

4. 渲染系統

  • 使用 OpenGL 進行 3D 渲染
  • 實現功能:
    • 3D 模型渲染(建築物、圓柱體、樹木)
    • 紋理映射和 UV 坐標管理
    • 小地圖系統
    • HUD(平視顯示器)顯示速度和坐標信息
  • 支援動態視角切換和相機跟隨

5. 輸入處理

  • 使用 PyGame 事件系統處理輸入
  • 支援同時處理:
    • 鍵盤控制(加速、減速、功能切換)
    • 滑鼠控制(視角調整)
    • 滾輪控制(速度微調)

6. 資源管理

  • 紋理資源動態載入和緩存
  • 支援多種紋理格式和 UV 映射模式
  • 記憶體資源管理和效能優化

7. 座標系統

  • 使用右手座標系
  • 世界座標系:
    • X 軸:左右方向
    • Y 軸:上下方向
    • Z 軸:前後方向
  • 支援相對和絕對座標轉換
  • 物件位置使用相對於軌道的偏移量定位

開發者說明

本模擬器採用模組化設計,各個組件職責明確:

  • 場景解析系統支援動態重新載入
  • 電車物理模型包含加速度、摩擦力等參數
  • 支援自定義紋理和 UV 映射
  • 提供完整的相機控制系統
  • 支援場景物件的相對和絕對坐標定位

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages