iT邦幫忙

2021 iThome 鐵人賽

DAY 26
0
Software Development

在麥塊的農場裡寫 Lua系列 第 26

Day26 小烏龜登場,麥塊的強大幫手

之前已介紹過 Computer, Advanced Computer, Pocket Computer
各式各樣的電腦
今天開始,主題就是小烏龜 Turtle 囉!
先來看看小烏龜的組合公式
CC: Tweaked Turtle Crafy Rule
從組合公式來解讀,可以理解小烏龜也是電腦,只是多了額外的儲物箱
同樣的,程式碼也都一樣,差別在於有些程式可以執行,有些不行,以及預設的 PATH 路徑不同
小烏龜就是多了
/rom/apis/turtle/ 以及 /rom/programs/turtle/

那麼同樣的程式碼,電腦如何判斷?如果是小烏龜的話,會預設有一個全域的 turtle 變數,值是 empty table
以下是在 bios.lua 判斷是否要載入 turtle API

if turtle and fs.isDir("rom/apis/turtle") then
    -- Load turtle APIs
    local tApis = fs.list("rom/apis/turtle")
    for _, sFile in ipairs(tApis) do
        if string.sub(sFile, 1, 1) ~= "." then
            local sPath = fs.combine("rom/apis/turtle", sFile)
            if not fs.isDir(sPath) then
                if not os.loadAPI(sPath) then
                    bAPIError = true
                end
            end
        end
    end
end

startup.lua 判斷要設定的 PATH 路徑

if turtle then
    sPath = sPath .. ":/rom/programs/turtle"
else
    sPath = sPath .. ":/rom/programs/rednet:/rom/programs/fun"
    if term.isColor() then
        sPath = sPath .. ":/rom/programs/fun/advanced"
    end
end

從小烏龜的 PATH 設定可以發現,預設是不能執行 run 以及 advanced 資料夾的程式
這包括 paint, redirection, 魔術方塊 falling, dj, rednet
也就是官方不推薦你用小烏龜來跑這些程式,因為不是小烏龜的主要用途
那實際上能跑嗎?大部分還是可以的,輸入完整路徑即可喔

小烏龜有幾種?

來看看這一長排都是小烏龜,是不是很興奮呢!
其實,這只是一小部分喔,根據實驗,小烏龜的種類非常多 ...
CC: Tweaked Turtles

但基本組合公式是不變的

  • Turtle + Wireless Modem = Wireless Turtle
  • Turtle + Ender Modem = Ender Turtle
  • Turtle + Speaker = Noisy Turtle
  • Turtle + 鑽石鎬 = Mining Turtle
  • Turtle + 鑽石斧 = Felling Turtle
  • Turtle + 鑽石劍 = Melee Turtle
  • Turtle + 鑽石鏟 = Digging Turtle
  • Turtle + 鑽石鋤 = Farming Turtle
  • Turtle + 工作台 = Crafty Turtle

以上公式在 Advanced Turtle 也一樣
Advanced Turtle + Wireless Modem = Advanced Wireless Turtle
依此類推

只有這樣嗎?可不只喔!
小烏龜的組合公式非常靈活
一隻小烏龜可以加上兩個週邊設備
所以還可以繼續組裝如下

  • Wireless Turtle + Ender Modem = Wireless Ender Turtle
    這個組裝我覺得是無意義,有 Ender 就不需要 Wireless
  • Advanced Ender Turtle + Ender Modem = Advanced Ender Ender Turtle
    這個組裝我同樣覺得沒幫助,應該一個 Ender Modem 就夠用了
  • Mining Turtle + Ender Modem = Mining Ender Turtle
    這隻小烏龜我覺得就很有幫助,在挖礦的過程,可以隨時傳達自己的 GPS 座標,以及目前取得的資源和剩下的能源等
  • Advanced Crafty Turtle + Speaker = Advanced Crafty Noisy Turtle
    ....
    看起來還可以列出很多公式,就請大家自行組合測試了~

那小烏龜可以安裝 Wired Modem 和 Networking Cable 嗎?
抱歉不行!你只能透過工作台組裝小烏龜,不能直接在小烏龜身上放任何週邊設備

小烏龜的主要用途

從小烏龜的組合公式可以看出,它主要是代替我們去挖礦、砍樹、鏟沙土、砍怪、種植、組合
利用程式碼,自動化操作小烏龜照我們的設計來作業
下一回就讓它們一一動工起來吧!


上一篇
Day25 在麥塊用手持式電腦玩魔術方塊
下一篇
Day27 小烏龜動工的基本指令集
系列文
在麥塊的農場裡寫 Lua30

尚未有邦友留言

立即登入留言