易語言模擬真人鼠標軌跡算法 - 非貝塞爾曲線

?一.簡介

鼠標軌跡算法是一種模擬人類鼠標操作的程序,它能夠模擬出自然而真實的鼠標移動路徑。

鼠標軌跡算法的底層實現采用C/C++語言,原因在于C/C++提供了高性能的執行能力和直接訪問操作系統底層資源的能力。

鼠標軌跡算法具有以下優勢:

  • 模擬人工軌跡:算法能夠模擬出非貝塞爾曲線的自然鼠標移動,避免了機械式的直線移動。
  • 適當的停頓/加速/減速:算法能夠根據需要模擬出鼠標的停頓、加速和減速,使得軌跡更加真實。
  • 隨機軌跡:在固定兩點間,算法能夠生成不同的隨機軌跡,增加了軌跡的不可預測性。

二.應用場景

  • 游戲鼠標軌跡檢測(檢測能過無畏fps類型、傳奇、夢幻等游戲,已經在游戲中驗證)
  • 滑塊拖動驗證
  • 部分網頁鼠標軌跡檢測

三.支持多種編程語言

1.C++頭文件

/******************************************************************************************/@SDK功能描述:C++鼠標軌跡/******************************************************************************************//******************************************************************************************/@SDK功能描述:C++鼠標軌跡/******************************************************************************************/#ifndef _SN_SDK_H__
#define _SN_SDK_H__#include <windows.h>enum SN_TRACK_MOVE_TYPE
{TRACK_MOVE_TYPE_NORMAL=0,		// 用于常規軌跡 - 普通游戲鼠標軌跡TRACK_MOVE_TYPE_SLIDER,			// 用于滑塊軌跡,比常規常規軌跡密度更大 - 滑塊驗證軌跡
};enum SN_TRACK_POINT_TYPE
{TRACK_POINT_TYPE_NORMAL=0,		// 默認絕對坐標TRACK_POINT_TYPE_RELATIVE,		// 相對坐標
};//返回參數
typedef struct SN_RESULT {int code;			//錯誤碼,如果為 0 表示成功,否則表示錯誤號char message[4096];	//錯誤信息,如果為 "OK" 表示成功,否則返回錯誤信息}SN_RESULT;//坐標參數
typedef struct SN_POINT
{int x;				//屏幕坐標,左上角(0,0),右下角(1920,1080 - 以實際屏幕為準)int y;				//屏幕坐標,左上角(0,0),右下角(1920,1080 - 以實際屏幕為準)}SN_POINT;//軌跡參數
typedef struct SN_POINT_PARAMS
{struct SN_POINT point;//屏幕坐標,左上角(0,0),右下角(1920,1080 - 以實際屏幕為準)int delayTime;		  //延時時間(單位:毫秒),僅供參考}SN_POINT_PARAMS;/*創建句柄
*
* 參數:
*	[in] szKey:		卡密(購買卡密:https://shop.4yuns.com/links/7C9F16B7)
* 	[in] pOnnxFilePath:設置 onnx 模型文件路徑,如果設置為 NULL,默認和 DLL文件同級目錄
* 	[out] pResult:		返回錯誤信息,參數pResult.code(錯誤碼)如果為 0 表示成功,否則表示錯誤號;
*
* 返回值:成功返回句柄,失敗返回NULL
*
*/
HANDLE WINAPI apiSNCreateHandle(char* szKey, char* pOnnxFilePath, SN_RESULT* pResult);/*設置鼠標移動軌跡參數,調節軌跡密度/速度/軌跡類型,目前可以支持滑塊軌跡/普通軌跡
*
* 參數:
*	[in] handle:		句柄(通過調用apiSNCreateHandle得到)
*  	[in] density:		軌跡密度調節 ,必須大于或者等于 1,默認 5,舉個例子:假如軌跡有 100 個點,累計耗時 1000 毫秒,設置 density 如下:
*								-  density = 1  時,軌跡有 100/1=100 個點,整個軌跡累計耗時 1000/1=1000 毫秒 (默認 1  倍速度)
*								-  density = 2  時,軌跡有 100/2=50  個點,整個軌跡累計耗時 1000/2=500  豪秒 (等價 2  倍速度)
*								-  density = 3  時,軌跡有 100/3=33  個點,整個軌跡累計耗時 1000/3=333  豪秒 (等價 3  倍速度)
*								-  density = 5  時,軌跡有 100/5=20  個點,整個軌跡累計耗時 1000/5=200  豪秒 (等價 5  倍速度)
*								-  density = 20 時,軌跡有 100/20=5  個點,整個軌跡累計耗時 1000/20=50  豪秒 (等價 20 倍速度)
*								
*  	[in] type:			軌跡類型(0代表絕對普通軌跡,1代表滑塊軌跡(獲得的軌跡點數比普通軌跡點數更多),具體參考enum SN_TRACK_MOVE_TYPE)
*
* 返回值:返回參數SN_RESULT.code(錯誤碼)如果為 0 表示成功,否則表示錯誤號;
*
*/
int WINAPI apiSNSetTrackParams(HANDLE handle, int density=5, int type=0);/*獲取鼠標移動軌跡
*
* 參數:
*	[in] handle:		句柄(通過調用apiSNCreateHandle得到)
* 	[in] startPoint:	開始坐標,左上角(0,0),右下角(1920,1080 - 以實際屏幕為準)
* 	[in] endPoint:		結束坐標,左上角(0,0),右下角(1920,1080 - 以實際屏幕為準)
*  	[in] type:			軌跡坐標類型(0代表絕對坐標,1代表相對坐標,具體參考enum SN_TRACK_POINT_TYPE)
* 	[out] points:		軌跡數組,如果數組中元素 point 出現(10000,10000),表示鼠標軌跡結束
*
* 返回值:返回參數SN_RESULT.code(錯誤碼)如果為 0 表示成功,否則表示錯誤號;
*
*/
int WINAPI apiSNMouseMove(HANDLE handle, SN_POINT *startPoint, SN_POINT *endPoint, int type, SN_POINT_PARAMS* points);/*獲取版本號
*
* 參數:
*	[in] handle:		句柄(通過調用apiSNCreateHandle得到)
* 	[out] szVersion:	版本號
*
* 返回值:返回參數SN_RESULT.code(錯誤碼)如果為 0 表示成功,否則表示錯誤號;
*
*/
int WINAPI apiSNGetVersion(HANDLE handle, char* szVersion);/*獲取卡密到期時間
*
* 參數:
*	[in]  handle:		句柄(通過調用apiSNCreateHandle得到)
* 	[out] pResult:		返回錯誤信息,參數pResult->code(錯誤碼)如果為 0 表示成功,否則表示錯誤號;
*
* 返回值:返回卡密到期時間,失敗返回NULL,錯誤信息請查看參數 pResult->message
*
*/
char* WINAPI apiSNGetKeyExpiresTime(HANDLE handle, SN_RESULT* pResult);/*獲取錯誤信息
*
* 參數:
*	[in] handle:		句柄(通過調用apiSNCreateHandle得到)
*
* 返回值:返回參數SN_RESULT.code(錯誤碼)如果為 0 表示成功,否則表示錯誤號;
*
*/
int WINAPI apiSNGetError(HANDLE handle);/*釋放句柄(內存)
*
* 參數:
*	[in] handle:		句柄(通過調用apiSNCreateHandle得到)
*
* 返回值:返回參數SN_RESULT.code(錯誤碼)如果為 0 表示成功,否則表示錯誤號;
*
*/
int WINAPI apiSNDestroyHandle(HANDLE handle);#endif // !_SN_SDK_H__

2.其他編程語言

為了易于集成和使用,我們將鼠標軌跡算法封裝為DLL(動態鏈接庫)。這種封裝方式不僅保留了算法的性能優勢,還提供了跨平臺和跨語言的兼容性,目前支持編程語言如下:

  • C++
  • Python
  • 易語言

推算軌跡算法耗時均為毫秒級,<= 5ms ,速度超快,fps類型游戲完全無壓力!

3.鼠標軌跡API調用流程圖

注意:如果是多線程,每個線程都需要通過apiSNCreateHandle創建HANDLE句柄,這樣才能多個線程互不影響

4.易語言鼠標軌跡dll接口

/****************************************************************************************/@SDK功能描述:鼠標軌跡
/****************************************************************************************.版本 2
.支持庫 spec.程序集 窗口程序集_啟動窗口.子程序 _啟動子程序, 整數型_臨時子程序 ()
返回 (0).子程序 _臨時子程序
.局部變量 handle, 整數型
.局部變量 pResult, SN_RESULT, 靜態, , 返回錯誤信息,參數pResult.code(錯誤碼)如果為 0 表示成功,否則表示錯誤號;
.局部變量 startPoint, SN_POINT, , , 開始坐標,左上角(0,0),右下角(1920,1080 - 以實際屏幕為準)
.局部變量 endPoint, SN_POINT, , , 結束坐標,左上角(0,0),右下角(1920,1080 - 以實際屏幕為準)
.局部變量 type, 整數型, , , 軌跡類型,0 為絕對坐標 ,1為相對坐標
.局部變量 points, SN_POINT_PARAMS, , "3000", 軌跡數組,如果數組中元素 point 出現(10000,10000),表示鼠標軌跡結束
.局部變量 szTime, 文本型, , , 卡密結束時間;
.局部變量 index, 整數型
.局部變量 density, 整數型, , , 設置軌跡類型/速度/密度 - 默認是5倍速度/密度,可以不設置,具體根據自身要求設置' ---------------------------------------------------------------
' 1.創建句柄
' 其中卡密 SNKJ86RYDBY1YxafpLG3ep1R6NHFYLjz2UFFcE8Lx9Tq 僅用于測試,需要找開發人員重新購買,購買卡密連接:https://shop.4yuns.com/links/7C9F16B7
' ---------------------------------------------------------------
handle = apiSNCreateHandle (“SNKJ86RYDBY1YxafpLG3ep1R6NHFYLjz2UFFcE8Lx9Tq”, “SNTrack.onnx”, pResult)
調試輸出 (pResult.code, 到文本 (pResult.message))
調試輸出 (“句柄”, handle)
.如果真 (pResult.code < 0)調試輸出 (“-----------程序結束-----------”)返回 ().如果真結束' 獲取卡密到期時間
szTime = apiSNGetKeyExpiresTime (handle, pResult)
調試輸出 (到文本 (szTime))' 設置軌跡類型/速度/密度 - 默認是5倍速度/密度,可以不設置,具體根據自身要求設置, 設舉個例子:假如軌跡有 100 個點,累計耗時 1000 毫秒,設置 density 如下:
' density = 1  時,軌跡有 100/1=100 個點,整個軌跡累計耗時 1000/1=1000 毫秒 (默認 1  倍速度)
' density = 2  時,軌跡有 100/2=50  個點,整個軌跡累計耗時 1000/2=500  豪秒 (等價 2  倍速度)
' density = 3  時,軌跡有 100/3=33  個點,整個軌跡累計耗時 1000/3=333  豪秒 (等價 3  倍速度)
' density = 5  時,軌跡有 100/5=20  個點,整個軌跡累計耗時 1000/5=200  豪秒 (等價 5  倍速度)
' density = 20 時,軌跡有 100/20=5  個點,整個軌跡累計耗時 1000/20=50  豪秒 (等價 20 倍速度)
density = 5
apiSNSetTrackParams (handle, density, 0)' 開始坐標
startPoint.x = 100
startPoint.y = 100
' 結束坐標
endPoint.x = 800
endPoint.y = 800
' 軌跡類型,0 為絕對坐標 ,1為相對坐標
type = 0調試輸出 (“預備定義數組數量”, 取數組成員數 (points))
' ---------------------------------------------------------------
' 2.獲取鼠標軌跡
' ---------------------------------------------------------------
apiSNMouseMove (handle, startPoint, endPoint, type, points)調試輸出 (取變量地址 (startPoint.x), 取變量地址 (startPoint.y))
.計次循環首 (取數組成員數 (points), index).如果真 (points [index].point.x = 10000 且 points [index].point.y = 10000)刪除成員 (points, index + 1, 10000 - index)跳出循環 ().如果真結束' 調試輸出 (index, “坐標”, points [index].point.x, points [index].point.y, points [index].delayTime)
.計次循環尾 ()
調試輸出 (取數組成員數 (points)).計次循環首 (取數組成員數 (points), index)調試輸出 (“坐標”, points [index].point.x, points [index].point.y, points [index].delayTime)
.計次循環尾 ()' ---------------------------------------------------------------
' 3.釋放內存
' ---------------------------------------------------------------
apiSNDestroyHandle (handle)
調試輸出 (“-----------程序結束-----------”)

5.云盤源碼下載

  • 百度云盤
  • 夸克云盤
  • 123云盤

云盤目錄介紹:

demo - 包含各種編程語言的demo

dll - 分別是x86和x64平臺所需要的dll/lib/h文件

windows 鼠標軌跡測試工具 - exe測試鼠標軌跡效果( demo 中的 c++ 工程編譯后的exe可執行文件)

四.效果演示

1.開始坐標為(100,100),結束坐標為(800,800),通過調用接口獲得 4 條鼠標軌跡

2.開始坐標為(1000,100),結束坐標為(800,800),通過調用接口獲得 2 條鼠標軌跡

?

五.常見問題

1.是否支持多線程

支持

2.如何使用多線程

參考前面的《2.鼠標軌跡API調用流程圖》,多線程和單線程類似;如果是多線程,那么每個線程都需要通過apiSNCreateHandle創建HANDLE句柄,這樣才能多個線程互不影響

3.如何判斷軌跡結束

可以通過循環判斷得到的軌跡坐標,如果當前坐標的X值和Y值都是1000的情況下,默認軌跡結束

(之前的判斷是(-1,-1)作為軌跡結束的標記,現在修改為(10000,10000)作為軌跡結束標記,目的是為了兼容相對坐標)

4.鼠標軌跡設置相對坐標

在函數 apiSNMouseMove 中 type 參數,0 為 絕對坐標 ; 1 為相對坐標

5.如何調節點的密集程度

在(2024.12.22)SDK2.0版本中新增接口 apiSNSetTrackParams 中的 density 參數可以用來調節軌跡密度,舉個例子:

  • density = 1 時,默認軌跡有 100 個點,整個軌跡累計耗時 1000 毫秒 (默認 1 倍速度)
  • density = 2 時,軌跡有 100/2=50 個點,整個軌跡累計耗時 500?毫秒 (等價 2 倍速度)
  • density = 3 時,軌跡有 100/3=33 個點,整個軌跡累計耗時 333 毫秒 (等價 3 倍速度)
  • density = 5 時,軌跡有 100/5=20 個點,整個軌跡累計耗時 200 毫秒 (等價 5 倍速度)

不同的游戲需要的軌跡密度不一樣,類似 fps 游戲,鼠標滑動軌跡比較快,density 可以設置為 5 或者更高 ; 類似魔獸世界或者夢幻,density 可以調節為 2 或者 3或者5

6.滑塊驗證軌跡

在函數 apiSNSetTrackParams 中 type 參數,0 為普通鼠標軌跡 ; 1 為滑塊軌跡

普通鼠標貴和滑塊軌跡區別:滑塊軌跡比普通鼠標軌跡坐標點更多(相同的開始/結束坐標),點與點之間更加密集,軌跡的開始和結束暫停/加速更加明顯

六.更新日志

  • 2024.02.06 c++ 模擬人工鼠標軌跡demo
  • 2024.06.06 python 模擬人工鼠標軌跡demo
  • 2024.06.25 新增錯誤日志信息
  • 2024.07.15 優化水平/垂直軌跡
  • 2024.08.20 優化部分軌跡可能出現負數的問題
  • 2024.09.19 優化部分軌跡延遲時間為0的情況(可能會造成鼠標瞬移)
  • 2024.09.21 修復部分水平/垂直軌跡出現負數的情況
  • 2024.09.28 新增易語言demo
  • 2024.11.01 修改接口,兼容易語言代碼
  • 2024.11.17 支持移動軌跡為相對坐標(默認是軌跡是絕對坐標)
  • 2024.12.15 新增文字識別OCR,支持編程語言如下:
    • Python
    • 易語言
    • C語言
    • C++
  • 2024.12.22 優化鼠標軌跡
    • 新增滑塊軌跡
    • 優化鼠標軌跡 - 支持密度調節
  • 2024.12.29
    • 修復鼠標軌跡可能會崩潰的問題
    • 修復OCR文字識別失敗問題(帶有中文路徑的圖片)
  • 2025.06.08?
    • 1.優化鼠標軌跡數據
    • 2.優化卡密驗證耗時問題
    • 3.優化OCR文字識別耗時問題

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/93294.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/93294.shtml
英文地址,請注明出處:http://en.pswp.cn/web/93294.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring Boot 3 數據源連接信息存儲方法

在Spring Boot 3中&#xff0c;數據源連接信息的存儲方式主要有以下幾種&#xff0c;根據安全性和環境需求選擇合適的方式&#xff1a; 1. 配置文件&#xff08;推薦基礎方式&#xff09; 位置&#xff1a;src/main/resources/application.properties 或 application.yml 示例…

按鍵序列常用示例

按鍵序列常用示例 按鍵編碼 基礎按鍵對應編碼 A-Z 原字符即可 KeyCodeSHIFTCTRL^ALT% 其他按鍵 KeyCodeBACKSPACE{BACKSPACE}, {BS}, or {BKSP}BREAK{BREAK}CAPS LOCK{CAPSLOCK}DEL or DELETE{DELETE} or {DEL}DOWN ARROW{DOWN}END{END}ENTER{ENTER} or ~ESC{ESC}HELP{HEL…

【LeetCode Solutions】LeetCode 熱題 100 題解(36 ~ 40)

CONTENTS二叉樹 - LeetCode 94. 二叉樹的中序遍歷&#xff08;簡單&#xff09;二叉樹 - LeetCode 104. 二叉樹的最大深度&#xff08;簡單&#xff09;二叉樹 - LeetCode 226. 翻轉二叉樹&#xff08;簡單&#xff09;二叉樹 - LeetCode 101. 對稱二叉樹&#xff08;簡單&…

數據處理分析環境搭建+Numpy使用教程

環境搭建 數據分析常用開源庫 Numpy NumPy(Numerical Python) 是 Python 語言的一個擴展程序庫。是一個運行速度非常快的數學庫&#xff0c;主要用于數組計算包含&#xff1a; 一個強大的N維數組對象 ndarray廣播功能函數整合 C/C/Fortran 代碼的工具線性代數、傅里葉變換、隨機…

實戰多屏Wallpaper壁紙顯示及出現黑屏問題bug分析-學員作業

背景&#xff1a; 在大家看了上一篇google官方對于多屏壁紙這塊的介紹后 安卓Wallpaper壁紙部分對多屏的支持-Google官方文檔介紹 可能還是對于壁紙支持多屏這塊沒有相關的實戰性的認知&#xff0c;所以本文就開始帶大家來進行部分解讀和實戰。 壁紙多屏顯示原理文檔解讀&a…

Vue插槽---slot詳解

1、什么是 Vue 插槽&#xff1f;Vue 插槽&#xff08;Slot&#xff09;?? 是 Vue 提供的一種非常強大且靈活的機制&#xff0c;用于實現&#xff1a;父組件向子組件傳遞一段模板內容&#xff08;HTML / 組件等&#xff09;&#xff0c;讓子組件在指定位置動態渲染這些內容。可…

STM32 - Embedded IDE - GCC - 顯著減少固件的體積

導言如上圖所示&#xff0c;在編譯器附加選項&#xff08;全局&#xff09;里添加--specsnano.specs&#xff0c;告訴編譯器使用newlib-nano替代newlib去編譯代碼。 newlib vs. newlib-nano newlib 是 GNU ARM 工具鏈默認的 C 標準庫&#xff0c;功能完整&#xff0c;但體積較大…

python的美食交流社區系統

前端開發框架:vue.js 數據庫 mysql 版本不限 后端語言框架支持&#xff1a; 1 java(SSM/springboot)-idea/eclipse 2.NodejsVue.js -vscode 3.python(flask/django)–pycharm/vscode 4.php(thinkphp/laravel)-hbuilderx 數據庫工具&#xff1a;Navicat/SQLyog等都可以 摘要&…

《Redis持久化機制對比與RDB/AOF調優方案》

&#x1f4da; Redis持久化機制對比與RDB/AOF調優方案 &#x1f9e0;前言 在生產環境中&#xff0c;Redis 常常被用作緩存&#xff0c;但在更多場景下&#xff0c;它還存儲著核心業務數據&#xff08;如會話、訂單、隊列任務等&#xff09;。一旦 Redis 宕機、數據丟失&#…

eXtremeDB 醫療設備開發實戰:從合規到實時,構建 EN62304 級數據管理系統

在醫療設備開發領域&#xff0c;數據管理的 “可靠性” 與 “合規性” 是不可逾越的紅線 —— 監護儀心率數據的丟失可能延誤診斷時機&#xff0c;胰島素泵劑量記錄的錯誤則直接威脅患者生命安全。eXtremeDB 憑借對 EN62304 標準的深度合規支持、硬實時數據處理能力及多層次安全…

linux 設備驅動的分層思想

一、 概述像這樣的分層設計在linux的input、RTC、MTD、I2c、SPI、tty、USB等諸多類型設備驅動中屢見不鮮,下面對這些驅動進行詳細的分析。二、 輸入設備驅動輸入設備&#xff08;如按鍵、鍵盤、觸摸屏、鼠標等&#xff09;是典型的字符設備&#xff0c;其一般的工…

【嵌入式硬件實例】-555定時器驅動直流無刷電機

555定時器驅動直流無刷電機 文章目錄 555定時器驅動直流無刷電機 1、555定時器介紹 2、BLDC,無刷直流電機 3、DRV10866 驅動器 4、硬件準備與接線 5、電路工作原理 在這個項目中,我們將使用 555 定時器 IC 和 DRV10866 驅動器 IC 制作 BLDC、無刷直流電機驅動電路。無刷電機可…

Helm 常用命令 + Bitnami 中間件部署速查表

文章目錄一、Helm 常用命令速查表1.1. 倉庫管理1.2. Chart 搜索1.3. 應用部署1.4. 應用管理二、Bitnami 常用中間件部署示例三、常用自定義參數&#xff08;values.yaml 配置項&#xff09;四、安裝后的訪問方式五、一鍵安裝腳本 install-middleware.sh5.1. 完整腳本5.2. 使用方…

Ansible 自動化運維實戰系列(六):Valut詳解

Ansible 自動化運維實戰系列&#xff08;六&#xff09;&#xff1a;Valut詳解&#x1f4da; 系列導航一&#xff1a;概述二&#xff1a;命令1&#xff09;創建加密文件2&#xff09;加密已有文件3&#xff09;查看加密文件4&#xff09;編輯加密文件5&#xff09;解密文件6&am…

《探秘瀏覽器Web Bluetooth API設備發現流程》

網頁若需與藍牙設備通信,往往需依賴本地客戶端或專用驅動程序作為中介,不僅增加了用戶操作成本,也限制了Web應用在跨設備場景中的拓展。而Web Bluetooth API的出現,直接賦予了網頁與低功耗藍牙(BLE)設備對話的能力,從智能手環的健康數據同步,到智能家居設備的遠程控制,…

Jenkins+Python自動化持續集成詳細教程

Python接口自動化測試零基礎入門到精通&#xff08;2025最新版&#xff09;Jenkins安裝 ? Jenkins是一個開源的軟件項目&#xff0c;是基于java開發的一種持續集成工具&#xff0c;用于監控持續重復的工作&#xff0c;旨在提供一個開放易用的軟件平臺&#xff0c;使軟件的持續…

C++面試——內存

一、簡述堆和棧的區別維度棧&#xff08;Stack&#xff09;堆&#xff08;Heap&#xff09;生命周期隨函數調用自動創建/銷毀由程序員或垃圾回收器控制分配速度極快&#xff08;僅移動指針&#xff09;慢&#xff08;需查找空閑塊、維護元數據&#xff09;空間大小較小&#xf…

UVM驗證(三)—UVM機制(1)

目錄 &#xff08;一&#xff09;Factory工廠機制 1. 工廠機制核心邏輯&#xff1a;“注冊 - 創建 - 覆蓋” 2. 代碼映射&#xff1a;從概念到實現 3. 實驗目標&#xff1a;用 dadd_fixen_driver 固定 data_en1 4. 工廠機制的價值&#xff1a;“靈活驗證的基石” 5. 常見…

前往中世紀 送修改器(Going Medieval)免安裝中文版

網盤鏈接&#xff1a; 前往中世紀 免安裝中文版 名稱&#xff1a;前往中世紀 送修改器&#xff08;Going Medieval&#xff09;免安裝中文版 描述&#xff1a; 在Going Medieval的世界中&#xff0c;黑暗時代的社會已瀕臨崩潰。14世紀末瘟疫肆虐&#xff0c;全球95%的人口因…

Font Awesome 參考手冊

Font Awesome 參考手冊 引言 Font Awesome 是一個功能強大的圖標庫,它允許開發者通過簡單的 CSS 類來添加圖標到網頁中。本手冊旨在為開發者提供全面的 Font Awesome 使用指南,包括圖標選擇、樣式定制以及常見問題解答。 圖標選擇 圖標分類 Font Awesome 提供了多種類別…