Skip to content

DragonTaki/Chinese-Chess-v3

Repository files navigation

C#


💡 About This Project

This project is only for private use.
Features:


⚙️ Project Features 專案特點

本專案以 C# 編寫,包含實作《UI 系統》、《2D 物理引擎》、《中國象棋》、《動態星空背景》。
本程式具備以下主要特點:

Doing

  1. 多人連線系統
  • Golang 做為中心主機;C# 為用戶端

  • 支援封包檢測、移動合法性檢測

  • 支援聊天室

🖥️ UI 系統

  1. 架構概述

    • 採用元件樹結構作為核心基礎

    • 具備事件傳遞、畫面渲染、初始化流程、輸入管理、生命週期管理系統等

    • 所有 UI 元件皆繼承自通用基底,支援階層式關聯與狀態同步

    • 架構接近 MVVM / MVC 混合式:視圖渲染、資料綁定與控制邏輯各自分離

    • 具有 Dirty flag 機制,以減少不必要的重複運算

  2. UI 元件系統

    • UI 元件實作了大部分常見 UI、並設計了數種特化 UI

    • 虛擬元件:根節點、一般節點、覆蓋層節點

    • 一般元件:標籤、按鈕、文字方塊、對話方塊、一般容器、可拖曳容器

    • 特化元件:選單容器、UI 遮罩

    • To Do:下拉式選單、單選按鈕、複選按鈕、滑桿

  3. 輸入事件處理

    • 完整支援滑鼠交互事件:按下、放開、點擊、拖曳及滾輪事件

    • 採用中央事件路由集中處理輸入,並分派至對應的 UI 元件

    • To Do:鍵盤快捷鍵系統與焦點切換機制

  4. 畫面渲染與層級控制

    • 所有元件皆能設定 Z-Index 來控制前後層渲染順序

    • 採用分層渲染管線,確保背景、主體與覆蓋層在更新與繪製上互不干擾

    • 支援不同 UIRenderer 實作覆寫,用以因應不同主題或風格

    • To Do:局部重繪與剪裁渲染以提升效能

  5. 高度自訂性與可擴展性

    • 可自訂遊戲 FPS 上限,平衡畫面流暢度與效能

    • 具有 Config 及 Constant 檔案

      • 能自訂 UI 元件的預設大小、位置、對齊、間距等參數

      • 能被上層實作(例如象棋)覆寫,以適應不同專案要求及風格

    • To Do:外部 User-Defined Config 檔案覆寫、已實作系統的進階變化、接受玩家自訂模組或 UI 風格

  6. 輔助系統

    • 隨機系統

      • 可接受自訂種子碼,使每次執行都產生相同的隨機結果

      • 可產出 Int、Float、Double 等不同精度、位數的隨機數

      • 支援遊戲掉落系統,支援權重與掉落表設定

    • 日誌系統

      • 可在 App 內實時顯示日誌紀錄

      • 亦可儲存於外部檔案中

      • 支援時間戳記與事件等級分類/篩選顯示

    • 形狀系統

      • 實作多種風格的預設形狀
    • To Do:進階樣式系統、動態主題切換

2D 物理引擎

  1. 核心概念與架構

    • 採用模組化設計,每個物件皆由三大屬性組成:位置、速度及加速度

    • 支援時間步進模擬,可整合至 UI 或遊戲邏輯循環中

    • 可自由組合屬性、運動與阻力(阻尼)效果,用以模擬多種物理環境:

      • 無阻力

      • 線性阻力

      • 外力:重力/引力、推動、轉彎、拋物線等

      • 彈簧回彈/來回震盪

      • 指定目標點自驅動運動

  2. 向量系統

    • 自訂結構 Vector2F 為所有物理單位的基礎

    • 具有自訂顯式/隱式轉換,能自由轉換成內建函式庫中的其餘單位,例如 PointF、SizeF、RectangleF 等

    • 支援多種運算子多載,簡化運算

      • 能直接與純量做運算

      • 能與其他向量做向量運算

    • 實作了內建函式庫中沒有的數學函數,例如 Sigmoid 映射、Log 映射等

  3. 物理屬性與行為

    • 位置:分為基準位置、當前位置、目標位置。可區分靜態基準點、即時運動狀態與目標指向,用於插值與物理運算

    • 速度:分為基準速度、當前速度。支援動態變化及運動疊加,可模擬外力或慣性

    • 加速度:分為基準加速度、當前加速度。可模擬不同的物理情境,例如重力場

    • 運動邊界:可自訂物體運動範圍,是否反彈或直接停止

    • 能設定是否具阻力(阻尼)、阻尼係數、是否為彈簧、彈力係數、是否為目標驅動運動

  4. 集中式更新

    • 所有物理物件皆可註冊至引擎統一管理,確保更新循環的一致性與效能最佳化
  5. 擴展性與應用範例

    • 動態星空背景模組

    • 可拖曳(滑動)UI 容器、文字方塊能上下滑動閱讀內容

中國象棋

  1. 架構設計

    • 使用 MVVM / MVC 混合架構

    • MVC 用於遊戲主體邏輯,如棋盤、棋子、規則與狀態管理

    • MVVM 用於 UI 層的資料綁定與動態顯示,使介面狀態能自動隨模型更新

    • 混合架構優勢:邏輯模組化、高可擴充性、資料綁定便利性

    • 使用相依注入系統,避免重複建立或引用

  2. 使用者介面

    • 所有介面元素皆為自訂 UI 系統實作

    • 額外自訂 UI 元件:棋子

    • 已實作畫面

      • 選單

        • 應用程式主選單

        • 遊戲模式選擇選單

        • 遊戲內主選單

      • 棋局相關

        • 棋盤盤面(To Do:動態背景、邊框)

        • 棋子(To Do:吃棋動畫)

      • 側邊欄

        • 玩家資訊顯示、計時器、回合狀態

        • 步數及移動紀錄顯示

    • 已實作功能

      • 離開對局、離開應用程式

      • 選擇遊戲模式

      • 進入遊戲、初始化棋局、初始化側邊欄資訊、初始化紀錄日誌

      • 棋子可依照規則進行移動(例如:象走田並有象眼)、選取(例如:紅方回合不能選黑方棋子)與判定

    • To Do

      • 規則設定選單

      • 遊戲設定選單

      • 讀取存檔選單

      • 殘局闖關選單

      • 教學/幫助選單

      • 棋局控制介面(暫停、悔棋等)

  3. 棋局功能

    • 支援多種盤面:

      • 大盤(9×10):經典、揭棋

      • 小盤(8×4):明棋、暗棋

      • 小盤三國(9×5):三人模式特殊規則

    • 棋子邏輯

      • 不同棋種能依盤面、遊戲類型與規則,自動切換移動方式

      • 規則可擴充或自訂,特殊棋子、陣營或地域性特殊玩法

    • 移動預測系統

      • 可預判每個棋子的可移動範圍,未來可應用於棋局教學、AI 對局計算、移動提示等
    • 棋譜與回放系統

      • 每個回合的行為都會被記錄,可用於回放或悔棋

      • 回合紀錄:目前為 Log 模式,記錄所有行為,未來將改成標準棋譜,例如:[第10回合]俥一平三、[第17回合]卒5進1

    • 擴充性設計

      • 陣營系統:支援紅/黑、魏/蜀/吳,甚至黃、藍等陣營

      • 棋子系統:支援二人遊戲、三人遊戲、特殊棋子(例如三友棋額外棋子:旗、火)

      • 棋面字樣:可依陣營顯示不同名稱,例如:炮/包/礮、兵/卒/勇

    • 比賽計時器

      • 事件驅動架構核心:所有邏輯以非阻塞事件觸發,能與主遊戲循環並行運作

      • 分為局時與步時,並可依據遊玩模式、規則及棋手強弱分開設定

      • 支援多種模式,可設定正數計時、倒數計時,或是無限模式(時間到不終止遊戲)

🌌 動態星空背景模組

  1. 使用 2D 物理模組的實驗性動畫,可作為單獨專案

    • 使用加速度與阻尼模擬星體漂移與回彈

    • 支援慣性與邊界彈性,確保運動平滑自然

  2. 採用 MVC 架構:資料模組、控制器、渲染層完全分離

  3. 使用物件池管理物件,避免無限 Load/Unload 物件造成 GC 壓力

  4. 高度自訂性:可設定星空密度、位置、閃爍頻率、變色顏色、特效套用機率及頻率等

  5. 具有三種不同的隨機效果:

    • ✨ 閃爍:亮度周期性抖動

    • 🌈 紅移:漸變式色相偏移

    • 🌀 黑洞:區域性空間扭曲

    • 並支援單獨啟用/停用或設定數據

  6. 分層渲染:前景、背景分開

  7. 採用時間步進計算,確保幀率獨立,並可用於高幀率場景,支援動態調整更新頻率以平衡效能

  8. 可擴充成為星雲、流星、粒子等特效模組


🛡️ About Chinese Chess

Chinese chess is a strategy board game for two players.
It is the most popular board game in East Asia.


📜 Third-Party Licenses

  • 僅供個人學術研究使用,可相互探討,禁止抄襲(包含部分抄襲)
  • 禁止搬運、複製或儲存於其他儲存庫中
  • 禁止當作作業 Project
  • 禁止當作作業 Project
  • 禁止當作作業 Project

This repository does not provide any license or redistribution rights for its own code.
It is intended for private use only.


👤 About Author

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages