⌨️ Typing Trainer 打字練習夥伴
讓打字練習不再無聊的 VS Code 擴充功能:計時、經驗值、升級、點數商店與各種特效。
功能
- 計時:開始 / 暫停 / 結束打字練習時間
- 可拖曳面板:面板預設出現在右下角,拖曳標題列可自由移動位置(位置會記住)
- 經驗值系統:每打一個字元就會獲得經驗值(可在設定調整每字元經驗值)
- 升級與點數:經驗值滿了會升級,升級時會獲得點數
- 點數商店:
- 經驗加速 I / II / III:加快升級速度(需依序購買)
- 打字跳字特效:打字時飄出 +XP 文字
- 彩色粒子特效:打字時噴出彩色粒子
- 升級彩帶慶祝:升級時灑滿彩帶動畫
- 打字震動特效:打字時面板輕微震動
- 黃金主題:面板換成金色配色
- 成就系統:升級、累積打字量、買齊道具、長時間練習、登上排行榜等都有對應成就,解鎖時會彈出提示並額外獎勵點數
- 世界排行榜:把成績(等級、累積打字量)上傳到公開示範用的雲端資料庫,跟其他人比拼名次
世界排行榜是怎麼運作的(重要,請先讀)
VS Code 擴充功能本身沒有伺服器,「全世界玩家共用」的排行榜需要一個外部的雲端資料庫。
這個專案預設接的是 kvdb.io 這個免註冊、公開可讀寫的 key-value 服務,方便馬上就能用。
這代表:
- 任何知道 bucket ID 的人都可以讀取、甚至竄改排行榜資料
- 免費方案的資料可能會在一段時間不更新後過期消失
- 請不要在暱稱或任何欄位放入真實姓名、帳號密碼等機密資訊
如果你想要一個真正安全、只給你和朋友用的排行榜,把設定 typingTrainer.leaderboardBucketId
換成你自己的 bucket(可以自己去 kvdb.io 建立,或請 Claude 幫你),或者接你自己寫的後端 API。
首次使用「世界排行榜」時,如果沒有設定 typingTrainer.leaderboardBucketId,
擴充功能會自動在 kvdb.io 建立一個屬於這台機器的 demo bucket
(此時排行榜只有你自己看得到自己)。若要跟朋友共用同一份排行榜,
你們的 typingTrainer.leaderboardBucketId 設定要填同一組 ID
——可以其中一人執行 node scripts/init-leaderboard.js 建立一個共用 bucket,
再把印出來的 ID 分享給大家填入設定即可。
使用方式
- 按下
Ctrl+Shift+P(Mac: Cmd+Shift+P)開啟命令面板
- 輸入「打字練習」,選擇:
- 打字練習:開啟面板 — 只開啟面板不計時
- 打字練習:開始計時 — 開啟面板並開始計時與計算經驗值
- 打字練習:暫停
- 打字練習:停止
- 打字練習:上傳成績到世界排行榜
- 面板出現後,在任何檔案中打字即可累積經驗值
- 點擊「🛒 商店」用點數購買加速道具或特效
- 點擊「🏆 成就」查看目前解鎖進度
- 點擊「🌍 世界排行榜」上傳成績、查看名次
安裝方式(本機測試)
npm install
npm run compile
然後在 VS Code 按下 F5(Run Extension)即可在新視窗中測試,
或執行 vsce package 打包成 .vsix 檔案後在 VS Code 中「從 VSIX 安裝」。
設定
| 設定項 |
說明 |
預設值 |
typingTrainer.xpPerChar |
每打一個字元獲得的基礎經驗值 |
1 |
typingTrainer.countDeletions |
是否連刪除字元也計算經驗值 |
false |
typingTrainer.playerName |
世界排行榜顯示的暱稱(留空上傳時會詢問) |
"" |
typingTrainer.leaderboardBucketId |
世界排行榜使用的 kvdb.io bucket ID(留空則自動建立本機專屬 demo bucket) |
"" |
已知限制
VS Code 擴充功能的 Webview API 目前不支援做出「真正浮在整個編輯器最上層、不受視窗邊界限制」的浮動視窗
(這是作業系統層級的能力,VS Code 沒有開放對應 API)。本擴充功能是以獨立的 Webview 面板實作,
面板內容本身完全可拖曳移動、記住位置,但面板本身會佔用一個編輯器分頁位置。
| |