iT邦幫忙

2026 iThome 鐵人賽

DAY 11
0
Vibe Coding

上岸用AI,看小白如何從無到有的用Vibe Codeing開發遊戲系列 第 11

Day 11:Cocos Creator 實戰(二)—— 雪花冰配方順序比對與極速計時器寫碼實戰

  • 分享至 

  • xImage
  •  

歡迎來到第十一天!繼昨天順利完成「青花瓷豆花怪」的戰鬥與抓捕演算法後,今天我們要將戰場轉移到大廳櫃檯上的**「雪花冰機」**,展開第二款小遊戲——甜點時間挑戰的核心寫碼實戰!

這款遊戲的魅力在於高節奏的緊張感:顧客點餐後,玩家必須在有限時間內,按照正確順序組裝雪花冰食材。稍微手滑點錯或動作太慢,分數就會大打折扣!


1. 配方陣列與隊列比對演算法(Recipe Queue Matching)

在甜點製作中,「食材順序」是判定成功與否的核心。我們將每道甜點拆解為一個字串陣列(Array):

  • 顧客訂單 (Order)['ice_base', 'red_bean', 'condensed_milk', 'pudding']
  • 玩家輸入 (Player Input):動態記錄玩家每次點擊食材檯上的按鈕。

在 Cocos Creator 中,我建立了一個 RecipeManager.ts 腳本,透過 Vibe Coding 讓 Cursor 自動產生比對邏輯:

public onIngredientClick(ingredientId: string): void {
    const currentIndex = this.playerInput.length;
    
    // 比對目前點擊的食材是否符合訂單對應位置
    if (this.currentOrder[currentIndex] === ingredientId) {
        this.playerInput.push(ingredientId);
        this.playAddIngredientAnimation(ingredientId); // 播放配料掉落動畫
        
        // 檢查是否完成整份甜點
        if (this.playerInput.length === this.currentOrder.length) {
            this.completeDessert();
        }
    } else {
        // 順序點錯,觸發震動與扣分/扣時懲罰
        this.triggerWrongFeedback();
    }
}

透過 AI 產生的線性比對邏輯,當玩家點擊錯誤時會立刻觸發「錯誤紅框 Shake 動畫」與音效;點擊正確則會觸發配料層層堆疊的動畫,回饋感十足。


2. 幀率無關高精度計時器(Frame-Independent Precision Timer)

在遊戲開發中,絕對不能使用傳統 JavaScript 的 setInterval 來做遊戲計時,因為當瀏覽器分頁切換或效能波動時,setInterval 會產生嚴重漂移。

我們採用 Cocos Creator 原生的 update(dt) 生命週期函式,利用每幀傳入的微小時間差(dt, Delta Time)進行精準累積:

private elapsedTime: number = 0; // 累積消耗毫秒數
private isTimerRunning: boolean = false;

update(dt: number) {
    if (!this.isTimerRunning) return;
    
    this.elapsedTime += dt;
    const remainingTime = Math.max(0, this.timeLimit - this.elapsedTime);
    
    // 更新 UI 毫秒倒數文字 (例如:08.45s)
    this.timerLabel.string = remainingTime.toFixed(2) + "s";
    
    if (remainingTime <= 0) {
        this.onTimeUp(); // 時間到,結算遊戲
    }
}

3. 時間結算與點數公式 (Score & Points Formula)

完成甜點時,剩餘時間越多,加成係數就越高:

\[\text{最終得分} = \text{基礎完成分數} + \text{Math.floor}(\text{剩餘秒數} \times 100) \times \text{連續完美combo係數}\]

為了防止玩家在前端透過腳本修改得分,我們在按下完成時,將 elapsedTime(總耗時)、點擊步驟序列與時間戳記 打包成 JSON,準備傳給後端 Ktor 進行二驗。


小結

今天我們只花了不到兩小時,就透過 Cursor 建立了完整的「配方比對陣列 + 高精度計時器 + 倒數回饋系統」。

至此,兩款核心小遊戲的原型已經雙雙寫碼完成!明天(Day 12)將迎來階段二的收尾,我們將進行第一次遊戲實機測試與試玩對齊,看看朋友對這兩款遊戲的實際反饋!


上一篇
Day 10:Cocos Creator 實戰(一)—— 豆花怪戰鬥與抓捕演算法寫碼實戰
下一篇
Day 12:第一次對齊與實機試玩 —— 掃 Code 即玩!朋友的真實反饋與階段二總結
系列文
上岸用AI,看小白如何從無到有的用Vibe Codeing開發遊戲13
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言