作業
作業5 分秒必爭 (期限 12/7(四) 18:00)
  • 成績比重:
    未設定
  • 期限:
    2016-12-07 18:00 (不允許遲交)
  • 屬性:
    個人作業, 不開放觀摩, 開放成績查詢
  • 描述:

    (只需繳交至 Programming101 平台 ) 繳交至此 moocs 平台不算繳交。

    作業下載連結:
     
    作業要求  (與老師投影片有些微差異,請務必以此為主)
    http://programming101.cs.nccu.edu.tw/dashboard.html  點擊下方第 5 個機台
     
    #1 ★     加入時鐘道具,生成的位置條件與蔬菜相同,但不可與蔬菜共用一格;參考 void initCabbages() 做法,實作 void initClocks() 並在 void initGame() 中呼叫使用。
     
    #2 ★     設計一個 void addTime(float seconds) 功能,當土撥鼠碰到時鐘時,時鐘消失並呼叫此功能增加 15 秒的剩餘時間。
     
    #3 ★     參考Axis-Aligned Bounding Box(AABB)碰撞偵測方式設計一個boolean isHit(float ax, float ay, float aw, float ah, float bx, float by, float bw, float bh) 函式,並利用此功能來判斷『土撥鼠是否吃到蔬菜/時鐘』與『敵人是否撞到土撥鼠』。
     
    #4 ★★     修改 void drawTimerUI() 文字顯示內容,設計一個 String convertFramesToTimeString(int frames)將畫格數轉為 mm:ss 字串。e.g. 剩餘 3906 frames = 65.1s = "01:05" (採無條件捨去至秒數位)
     
    #5 ★★     修改 void drawTimerUI() 文字顯示顏色,設計 color getTimeTextColor(int frames),並利用此功能在不同剩餘時間取得對應的顏色:
    • 大於等於兩分鐘:天藍色(#00ffff)
    • 小於兩分鐘、大於等於一分鐘:白色(#ffffff)
    • 小於一分鐘、大於等於三十秒:黃色(#ffcc00)
    • 小於三十秒、大於十秒:橘色(#ff6600)
    • 小於十秒:紅色(#ff0000)
    #6 ★★★     實作判斷任一層士兵位置的函式 int getEnemyIndexByRow(int row),如該層有士兵則傳回該士兵在士兵陣列中的索引值(i),並實作 void drawCaution() 在該士兵上方顯示警示圖片;如該層無士兵則傳回-1,不需顯示圖片。