SHARE
TWEET

CC: exercise7_3

hevohevo May 19th, 2016 (edited) 65 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- exercise7_3
  2. -- サイクロン型直下掘り。ただし指定したブロックは採掘しない。
  3.  
  4. -- ######### Config #########
  5. local args = {...}
  6.  
  7. local maxDepth = 10 -- 掘る深さのデフォルト値を10にする
  8.  
  9. if args[1] then -- もしパラメータが入力されていたら、
  10.   maxDepth = args[1] -- パラメータを掘る深さとして代入。
  11. end
  12.  
  13. local unnecessaryBlock = "minecraft:dirt"  -- 土ブロックは掘らない。
  14.  
  15. -- ######### Function #########
  16. function selectiveDig()
  17.   local success, data = turtle.inspect()
  18.   if success then  -- 正面にブロックが有るとき
  19.     print("find:", data["name"])
  20.     if data["name"] == unnecessaryBlock then
  21.       print(" -> I didn't dig")
  22.     else
  23.       print(" -> I dug")
  24.       turtle.dig()
  25.     end
  26.   else  -- 正面にブロックがないとき
  27.     print("not find: ",data)
  28.   end
  29. end
  30.  
  31. function kaitenChokkabori(shita)  -- shita回だけ回転直下掘り
  32.   local count = 0 -- 真下に移動した回数をカウントする変数
  33.  
  34.   for i=1,shita do
  35.     for j=1,4 do  -- 一回転しつつ正面採掘
  36.       turtle.turnLeft()
  37.       selectiveDig()
  38.     end
  39.  
  40.     turtle.digDown() -- 直下掘り
  41.  
  42.     if turtle.down() then
  43.       count = count + 1  -- 真下移動に成功したらcountの値を1増加
  44.     else
  45.       break  -- 真下移動に失敗したらforループを抜ける
  46.     end
  47.   end
  48.  
  49.   return count  -- 戻り値としてcountを返す
  50. end
  51. function backToHome(ue)  -- ue回だけ上昇する
  52.   for i=1,ue do
  53.     turtle.up()
  54.   end
  55. end
  56.  
  57. -- ######### Main #########
  58. -- 燃料補給
  59. turtle.select(1)
  60. turtle.refuel()
  61.  
  62. local depth = kaitenChokkabori(maxDepth)
  63. print("depth: ", depth)
  64. backToHome(depth)
RAW Paste Data
Top