Advertisement
vacnoa

Cavar 2

May 1st, 2025 (edited)
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.91 KB | None | 0 0
  1. -- Pide datos al usuario
  2. local function pedirParametros()
  3.     print("Largo:")
  4.     local largo = tonumber(read())
  5.     print("Ancho:")
  6.     local ancho = tonumber(read())
  7.     print("Alto:")
  8.     local alto = tonumber(read())
  9.     print("Excavar hacia arriba? (s/n):")
  10.     local dirAltura = read()
  11.     local haciaArriba = (dirAltura == "s")
  12.     print("Excavar hacia la derecha? (d/i):")
  13.     local dirGiro = read()
  14.     local giroDerecha = (dirGiro == "d")
  15.     return largo, ancho, alto, haciaArriba, giroDerecha
  16. end
  17.  
  18. local function avanzar()
  19.     while turtle.detect() do turtle.dig() sleep(0.1) end
  20.     while not turtle.forward() do sleep(0.1) end
  21. end
  22.  
  23. local function subir()
  24.     while turtle.detectUp() do turtle.digUp() sleep(0.1) end
  25.     while not turtle.up() do sleep(0.1) end
  26. end
  27.  
  28. local function bajar()
  29.     while turtle.detectDown() do turtle.digDown() sleep(0.1) end
  30.     while not turtle.down() do sleep(0.1) end
  31. end
  32.  
  33. local function girar(derecha)
  34.     if derecha then
  35.         turtle.turnRight()
  36.     else
  37.         turtle.turnLeft()
  38.     end
  39. end
  40.  
  41. -- Excava una capa y regresa al punto inicial de la capa
  42. local function excavarCapa(largo, ancho, giroDerecha)
  43.     for fila = 1, ancho do
  44.         for paso = 1, largo - 1 do
  45.             turtle.dig()
  46.             avanzar()
  47.         end
  48.         if fila < ancho then
  49.             if (fila % 2 == 1 and giroDerecha) or (fila % 2 == 0 and not giroDerecha) then
  50.                 girar(true)
  51.                 turtle.dig()
  52.                 avanzar()
  53.                 girar(true)
  54.             else
  55.                 girar(false)
  56.                 turtle.dig()
  57.                 avanzar()
  58.                 girar(false)
  59.             end
  60.         end
  61.     end
  62.  
  63.     -- Regreso al inicio de la capa
  64.     if ancho % 2 == 1 then
  65.         girar(true)
  66.         girar(true)
  67.         for i = 1, largo - 1 do avanzar() end
  68.         girar(true)
  69.         for i = 1, ancho - 1 do avanzar() end
  70.         girar(true)
  71.     else
  72.         if giroDerecha then
  73.             girar(true)
  74.             for i = 1, ancho - 1 do avanzar() end
  75.             girar(true)
  76.         else
  77.             girar(false)
  78.             for i = 1, ancho - 1 do avanzar() end
  79.             girar(false)
  80.         end
  81.     end
  82. end
  83.  
  84. -- Regresa al punto de inicio completo (capa 1, esquina)
  85. local function volverAlInicio(alto, haciaArriba)
  86.     if haciaArriba then
  87.         for i = 1, alto - 1 do bajar() end
  88.     else
  89.         for i = 1, alto - 1 do subir() end
  90.     end
  91.     turtle.turnLeft()
  92.     turtle.turnLeft()
  93. end
  94.  
  95. -- Programa principal
  96. local function main()
  97.     local largo, ancho, alto, haciaArriba, giroDerecha = pedirParametros()
  98.     for capa = 1, alto do
  99.         excavarCapa(largo, ancho, giroDerecha)
  100.         if capa < alto then
  101.             if haciaArriba then subir() else bajar() end
  102.         end
  103.     end
  104.     volverAlInicio(alto, haciaArriba)
  105.     print("Excavacion terminada. Regresando al inicio.")
  106. end
  107.  
  108. main()
  109.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement