Day27 小乌龟动工的基本指令集

今天来看看怎麽让一个小乌龟动起来!
从最基本的 Turtle 开始,相关程序码在
/rom/programs/turtle/ 以及 /rom/apis/turtle/

小乌龟转向和移动

首先看 /rom/programs/turtle/go.lua
也就是小乌龟的基本移动指令了
可以原地左右转向,甚至指定转向次数

go left
go right
go left 3
go right 2

转向的部分也可以直接用
/rom/programs/turtle/turn.lua

turn left
turn right
turn left 3
turn right 2

或是往四个方位移动:上、下、前进、後退

go up
go down
go forward
go back

不过,你一定会发现,转向都没问题,但是要移动时,会说没燃料了!

为小乌龟补充燃料

补充燃料的指令在 /rom/programs/turtle/refuel.lua
可以作为燃料的东西是煤炭、煤炭方块、木炭、熔岩桶,这是目前试出来可以当作小乌龟燃料的来源
煤炭补充 80 能源
煤炭方块补充 800 能源
木炭补充 80 能源
熔岩桶补充 1000 能源
补充能源的指令简单如下

refuel
refuel 3
refuel all

例如说你有 64 个煤炭,那麽 refuel 就是补充一个煤炭;refuel 3 就是补充 3 个煤炭
refuel all 就是补充小乌龟储物箱里面所有可以当作燃料的东西
CC: Tweaked Turtle Refuel

补充燃料後,就可以让小乌龟自由的上下左右移动了!
而如果想要知道目前还有多少能源,可以用 turtle API

turtle.getFuelLevel()

小乌龟连续转向或移动

事实上,go 指令设计得满弹性的
可以无限串连各种移动和转向
例如
左转後,向後移动两格,再向上移动一格

go left back back top

右转两次後向前移动三格,再向下移动一格

go right 2 forward 3 down

这部分主要是 go.lua 这一段在处理使用者输入

local sDirection = tArgs[nArg]
local nDistance = 1
if nArg < #tArgs then
    local num = tonumber(tArgs[nArg + 1])
    if num then
        nDistance = num
        nArg = nArg + 1
    end
end
nArg = nArg + 1

让小乌龟跳舞

有充足的能源後,就可以开始跳舞了(?
CC: Tweaked 提供了一支给小乌龟手舞足蹈的程序,虽然我有点看不懂这乐趣 XD
程序码在 /rom/programs/turtle/dance.lua
只要对小乌龟输入 dance 指令
就可以看到它开始到处移动和转向,甚至发出声音
dance 最後的 parallel.waitForAny 模拟多执行绪
持续的在随机移动和捕捉玩家的任意键之间切换

parallel.waitForAny(
    function() os.pullEvent("key") end,
    function()
        while true do
            tMoves[math.random(1, #tMoves)]()
        end
    end
)

为小乌龟换装备

之前介绍 Pocket Computer 的时候,有 equip/unequip 指令可以快速为 Pocket Computer 换周边设备
小乌龟也是有的,相关程序码在
/rom/programs/turtle/equip.lua 和 /rom/programs/turtle/unequip.lua
从 equip.lua 程序码可以看到,每只小乌龟只能在左边或右边安装周边设备
也就是上一回说到的,小乌龟最多安装 2 个设备

local nSlot = tonumber(tArgs[1])
local sSide = tArgs[2]
if sSide == "left" then
    equip(nSlot, turtle.equipLeft)
elseif sSide == "right" then
    equip(nSlot, turtle.equipRight)
else
    printUsage()
    return
end

安装的过程就是要先把 Ender Modem / Wireless Modem / Speaker .... 等等设备先放到小乌龟的储物箱,然後直接指定储物箱位置来安装,如图
而如果在同一个位置 left / right 反覆安装,就会自动换掉之前安装的设备
CC: Tweaked Turtle Equip/Unequip
CC: Tweaked Turtle Equip/Unequip

小乌龟的基本指令介绍到这里
下一回让它开始作业吧!


<<:  Log Agent - Fluent Bit Input元件 与 Tail浅谈

>>:  Day27 用於AR的3D物件制作过程,一路凄凄惨惨惨惨凄凄

05 竞赛程序经验谈

我第一次听过程序竞赛时是在我刚进到国三的下学期。 在这之前我对於程序的相关经验除了国中科展学的 PH...

[Day 05] 开发之前,先把需求弄清楚

今天我们终於要开始进入主题了, 但是在我们写程序之前, 我们还需要先搞清楚一个东西, 那就是需求, ...

Day28 - TimePickerDialog

一般来说日期、时间几乎都同时出现 既然昨天学了Android的日期交谈视窗 今天就来学时间的交谈视窗...

Day 11 wireframe 黑白线稿设计 ( topbar + 地图)

今天在男友家写这篇,我一边写他一边趴在我背上乱摸,烦死了快写不完,给我走开RRRRRRRR 因为很多...