Advertisement
fzed51

[CC] Turtle - digRoom

Aug 28th, 2013
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.40 KB | None | 0 0
  1. --[[
  2. +----------------------------------------------------------------------------+
  3. | digRoom
  4. | version : 1.2
  5. | Auteur : fzed51
  6. | git : https://github.com/fzed51/CC_Script/blob/master/disk/digRoom.lua
  7. | pastebin : http://pastebin.com/nDpbk312
  8. +----------------------------------------------------------------------------+
  9. | tag : [lua] [MC] [MineCraft] [CC] [ComputerCraft] [Turtle]
  10. | Description :
  11. | script permetant de creuser une pièce dans un sous-sol
  12. | les differante pièce sons stockées dans un plan ( room, couloir, bigRoom )
  13. +----------------------------------------------------------------------------+
  14. ]]--
  15.  
  16. dofile('advTurtle') -- http://pastebin.com/7mLzefhQ
  17.  
  18. local arg = {...}
  19. local room = arg[1]
  20.  
  21. item.add('coal', 1, 64)
  22. item.add('cobblestone', 2, 64)
  23.  
  24. function section(largeur, hauteur)
  25.    
  26.     -- Control des paramètres --
  27.     if largeur < 1 or hauteur < 1 then
  28.         error('La largeur et la hauteur de la section doivent être superieur à 1.')
  29.     end
  30.     if (largeur % 2) == 0 then
  31.         error('La largeur doit être impaire.')
  32.     end
  33.    
  34.     -- Préparation des variables --
  35.     local demi = math.floor(largeur/2) + 1
  36.     local tX, tY = demi, 1
  37.     local function etanche()
  38.         if tX == 1 or tX == largeur then
  39.             if tX == demi then
  40.                 turnLeft()
  41.                 tryPlace(item.cobblestone)
  42.                 turnBack()
  43.                 tryPlace(item.cobblestone)
  44.                 turnLeft()
  45.             else
  46.                 tryPlace(item.cobblestone)
  47.             end
  48.         end
  49.         if tY == 1 then
  50.             tryPlaceDown(item.cobblestone)
  51.         end
  52.         if tY == hauteur then
  53.             tryPlaceUp(item.cobblestone)
  54.         end
  55.     end
  56.     local function calcDest (val, maxi)
  57.         if val == 1 then
  58.             return maxi, 1
  59.         else
  60.             return 1, -1
  61.         end
  62.     end
  63.    
  64.     -- Construction
  65.     tryForward()
  66.     etanche()
  67.    
  68.     -- centre
  69.     while tY < hauteur do
  70.         tryUp()
  71.         tY = tY + 1
  72.         etanche()
  73.     end
  74.     myDebug('----------> x: '.. tX ..', y: '.. tY)
  75.    
  76.     if largeur > 1 then
  77.         -- gauche
  78.         turnLeft()
  79.         while tX > 1 do
  80.             tryForward()
  81.             tX = tX - 1
  82.             myDebug('----------> x: '.. tX ..', y: '.. tY)
  83.             etanche()
  84.             local dest, step = calcDest(tY, hauteur)
  85.             while tY ~= dest do
  86.                 if step > 0 then
  87.                     tryUp()
  88.                 else
  89.                     tryDown()
  90.                 end
  91.                 tY = tY + step
  92.                 etanche()
  93.             end
  94.         end
  95.         -- retour au milieu
  96.         turnBack()
  97.         while tX < demi do
  98.             tryForward()
  99.             tX = tX + 1
  100.         end
  101.         -- droite
  102.         while tX < largeur do
  103.             tryForward()
  104.             tX = tX + 1
  105.             myDebug('----------> x: '.. tX ..', y: '.. tY)
  106.             etanche()
  107.             local dest, step = calcDest(tY, hauteur)
  108.             while tY ~= dest do
  109.                 if step > 0 then
  110.                     tryUp()
  111.                 else
  112.                     tryDown()
  113.                 end
  114.                 tY = tY + step
  115.                 etanche()
  116.             end
  117.         end
  118.         -- retour au milieu
  119.         turnBack()
  120.         while tX > demi do
  121.             tryForward()
  122.             tX = tX - 1
  123.         end
  124.         turnRight()
  125.        
  126.     end
  127.     while tY > 1 do
  128.         tryDown()
  129.         tY = tY - 1
  130.     end
  131. end
  132.  
  133. local patern = {}
  134. patern.room = {
  135. {l = 3, h = 3, p = 1},
  136. {l = 1, h = 2, p = 1},
  137. {l = 3, h = 3, p = 1},
  138. {l = 7, h = 4, p = 7}}
  139. patern.bigroom = {
  140. {l = 3, h = 3,  p = 1},
  141. {l = 1, h = 2,  p = 1},
  142. {l = 3, h = 3,  p = 1},
  143. {l = 7, h = 11, p = 7}}
  144. patern.couloir = {
  145. {l = 3, h = 3, p = 1},
  146. {l = 1, h = 2, p = 1},
  147. {l = 3, h = 3, p = 8}}
  148.  
  149. -- control du paramètre et usage
  150. if patern[room] == nil then
  151.     local str, v = "Usage :\n digRoom [", ''
  152.     for k in pairs(patern) do
  153.         str = str .. v .. k
  154.         v = '|'
  155.     end
  156.     str = str .. ']'
  157.     print(str)
  158.     os.exit(1)
  159. end
  160.  
  161. for _,v in pairs(patern[room]) do
  162.     for __ = 1, v.p do
  163.         section(v.l, v.h)
  164.     end
  165. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement