iT邦幫忙

2021 iThome 鐵人賽

DAY 12
0
Software Development

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

Day12 安裝外接磁碟機與磁碟片 - 取得 Lua shell script 的參數列

前幾天我將 CC: Tweaked 電腦的開機和程式執行流程大致摸熟後,今天我想來看看新的「硬體」
在 CC: Tweaked 的工具箱裡面,有一排道具五顏六色,一直很吸引我的注意
而且外型是早已絕種的 1.44MB 軟碟片 XD
那些繽紛的顏色真的還原度超高!請看圖
CC: Tweaked Tools

新道具 Floppy Disk 與 Disk Drive

基於好奇心,我想來搞懂,到底要怎麼把這些 Floppy Disk 插入電腦中?
我一度拿著這些軟碟片對著草叢上的電腦狂按右鍵,甚至把軟碟片丟出去XD,但就是沒任何反應
於是我再回到工具箱中東翻西找
找到了 ****!
CC: Tweaked Disk Drive
雖然還不知道怎麼用,但直覺告訴我就是它了!

繼續東拼西湊的嘗試後,我得出一些規則,直接分享給大家
軟碟片要插入磁碟機才能使用(我承認自己講了一句廢話)
使用磁碟機並將軟碟片放上去即可
CC: Tweaked Computer and Disk Drive Insert
但這時候電腦仍然是無法讀取磁片的
你必須將磁碟機「外接」到電腦上才行
外接的方式經過測試,你可以將磁碟機放在電腦的上、下、左、右、前、後 6 個位置
然後外接的磁碟機不能再繼續串連
所以理論上一台電腦最多外接 6 台磁碟機
但你不能真的把整台電腦完全包圍,否則無法操作
實際上一台電腦最多外接 5 台磁碟機
下圖是一台電腦外接 4 台磁碟機 ...
CC: Tweaked Computer and 4 Disk Drives

然後一台磁碟機最多插入一張磁片,大小只有 125KB
所以外接 4 台磁碟機的電腦,總共可用的容量是原本硬碟 1MB + 125KB * 4
CC: Tweaked Computer and 4 Disk Drives

磁碟機的相關指令

如上圖,你可以先用 ls, dirlist 查看目前有多少個 drive,然後用 drive 指令查看磁碟大小
我因為在 disk2 已有新增一個小檔案,所以不滿 125KB
而如果要將磁碟片「退出」
則可以用 eject,後面接磁碟機的方向,例如說要將外接在電腦正下方的磁碟機退出磁片可以用

eject bottom

如果要寫 Lua 來退出磁片,可以這樣做

disk.eject('bottom')

或是

peripheral.call('bottom', "ejectDisk")

磁片退出後會自動返回自己的物品欄
而這些磁片如果之前有寫檔案,也會跟著磁片走
你可以把它插入新的磁碟機、外接到新的電腦上,這部分的設計很擬真!
對應到本機的儲存位置是
{minecraft主目錄}/saves/{世界名稱}/computercraft/disk/{diskId}/

取得 Lua shell script 的參數列

關於以上的應用,我打開這兩個 script 來看看
programs/drive.lua
progrmas/eject.lua
都有著類似這樣的語法

local tArgs = { ... }
if #tArgs == 0 then
    -- 略
end

local sDrive = tArgs[1]

這跟之前談到的函數不定量參數很像
{ ... } 可以取得所有參數值
#tArgs 可以取得參數量
以上述 script 為例

eject bottom

tArgs = { 'bottom' }
#tArgs = 1

以上是磁碟機與磁碟片的使用方式 ...
下次,我們用磁碟機和唱片來播放音樂吧!


上一篇
Day11 為什麼電腦能自動完成指令 - Lua 的多值回傳
下一篇
Day13 用磁碟機播放唱片
系列文
在麥塊的農場裡寫 Lua30

尚未有邦友留言

立即登入留言