Advertisement
Aranyalma2

Gömb Építő v12.0

Feb 4th, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --Ez a program rohadt sok időm elvette az éltből!!!!!!!!!
  2. --Te ilyet ne írj soha, nem éri meg
  3. --De akkor is én győzök.......Nyertem......
  4.  
  5. local arg = { ... }
  6.  
  7. type = arg[1]
  8. sugar= tonumber(arg[2])
  9.  
  10.  
  11. bool_1 = false
  12. blocks = 0
  13. if arg[3] == "-c" then
  14.   bool_1 = true
  15. end
  16.  
  17.  
  18. positionx = sugar
  19. positiony = sugar
  20. fordul = 0
  21. fordul_epit=0
  22. nem_tudok_tobb_valtozo_nevet = 0
  23.  
  24.  
  25. function turnRightTrack()
  26.   turtle.turnRight()
  27.   fordul = fordul + 1
  28.   if fordul >= 4 then
  29.     fordul = 0
  30.   end
  31. end
  32.  
  33. function turnLeftTrack()
  34.   turtle.turnLeft()
  35.   fordul = fordul - 1
  36.   if fordul < 0 then
  37.     fordul = 3
  38.   end
  39. end
  40.  
  41. function safeForward()
  42.   elzarva = false
  43.   while not elzarva do
  44.     elzarva = turtle.forward()
  45.     if not elzarva then
  46.       print("Nem tudok elore menni.")
  47.       print("Javitsd, majd uss Enter-t.")
  48.       io.read()
  49.     end
  50.   end
  51. end
  52.  
  53. function safeBack()
  54.   elzarva = false
  55.   while not elzarva do
  56.     elzarva = turtle.back()
  57.     if not elzarva then
  58.       print("Nem tudok hatra menni.")
  59.       print("Javitsd, majd uss Enter-t.")
  60.       io.read()
  61.     end
  62.   end
  63. end
  64.  
  65. function safeUp()
  66.   elzarva = false
  67.   while not elzarva do
  68.     elzarva = turtle.up()
  69.     if not elzarva then
  70.       print("Nem tudok felfele menni.")
  71.       print("Javitsd, majd uss Enter-t.")
  72.       io.read()
  73.     end
  74.   end
  75. end
  76.  
  77. function safeDown()
  78.   elzarva = false
  79.   while not elzarva do
  80.     elzarva = turtle.down()
  81.     if not elzarva then
  82.       print("Nem tudok lelfele menni.")
  83.       print("Javitsd, majd uss Enter-t.")
  84.       io.read()
  85.     end
  86.   end
  87. end
  88.  
  89.     -- Y tengelyen való mozgás
  90.  
  91. function moveY(targety)
  92.   if targety == positiony then
  93.     return
  94.   end
  95.  
  96.   if (fordul ~= 0 and fordul ~= 2) then
  97.     turnRightTrack()
  98.   end
  99.  
  100.   while targety > positiony do
  101.     if fordul == 0 then
  102.       safeForward()
  103.     else
  104.       safeBack()
  105.     end
  106.     positiony = positiony + 1
  107.   end
  108.  
  109.   while targety < positiony do
  110.     if fordul == 2 then
  111.       safeForward()
  112.     else
  113.       safeBack()
  114.     end
  115.     positiony = positiony - 1
  116.   end
  117. end
  118.  
  119.     -- X tengelyen való mozgás
  120.  
  121. function moveX(targetx)
  122.   if targetx == positionx then
  123.     return
  124.   end
  125.  
  126.   if (fordul ~= 1 and fordul ~= 3) then
  127.     turnRightTrack()
  128.   end
  129.  
  130.   while targetx > positionx do
  131.     if fordul == 1 then
  132.       safeForward()
  133.     else
  134.       safeBack()
  135.     end
  136.     positionx = positionx + 1
  137.   end
  138.  
  139.   while targetx < positionx do
  140.     if fordul == 3 then
  141.       safeForward()
  142.     else
  143.       safeBack()
  144.     end
  145.     positionx = positionx - 1
  146.   end
  147. end
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154. function navigateTo(targetx, targety)
  155.  
  156.  
  157.   -- mozgás
  158.  
  159.   if bool_1 then
  160.     return
  161.   end
  162.  
  163.   if fordul == 0 or fordul == 2 then
  164.     moveY(targety)
  165.     moveX(targetx)
  166.   else
  167.     moveX(targetx)
  168.     moveY(targety)
  169.   end
  170. end
  171.  
  172.  
  173.  
  174. alap_slot = 1
  175.  
  176. function placeBlock()
  177.  
  178.   blocks = blocks + 1
  179.   if bool_1 then
  180.     return
  181.   end
  182.  
  183.   if turtle.getItemCount(alap_slot) == 0 then
  184.     Slot = false
  185.     while not Slot do
  186.       for i = 1,16 do
  187.         if turtle.getItemCount(i) > 1 then
  188.           Slot = i
  189.           nem_tudok_tobb_valtozo_nevet=0
  190.           break
  191.         end
  192.       end
  193.       if not Slot then
  194.         turtle.placeDown() 
  195.         fordul_epit=0
  196.         fordul_epit=fordul
  197.         navigateTo(sugar, sugar)
  198.             t=0
  199.         while (reteg-1>t) do
  200.             t=t+1
  201.             turtle.down()
  202.         end
  203.             turtle.suckDown(64)
  204.             t=0
  205.         while (reteg>t) do
  206.             t=t+1
  207.             turtle.up()
  208.         end
  209.     nem_tudok_tobb_valtozo_nevet=1
  210.       end
  211.     end
  212.     alap_slot = Slot
  213.     turtle.select(Slot)
  214.   end
  215.   if nem_tudok_tobb_valtozo_nevet>0 then      
  216.     nem_tudok_tobb_valtozo_nevet=0
  217.     break
  218.   else
  219.   turtle.placeDown()
  220.   end
  221. end
  222.  
  223. -- Térbeli építés számítás
  224.  
  225. --matek elmélet:
  226.  
  227. szelesseg = sugar * 2 + 1
  228. sqrt3 = 3 ^ 0.5
  229. hatar_sugar = sugar + 1.0
  230. hatar_2 = hatar_sugar ^ 2
  231.  
  232. --érték bekérés
  233.  
  234. if type == "kupola" then
  235.   zkezd = sugar
  236.   vegszam=1
  237. elseif type == "gomb" then
  238.   zkezd = 0
  239.   vegszam = 0
  240. else
  241.   print("Hasznalat: <program_neve> <alakzat> <sugar> [-c]")
  242.   os.exit(1)
  243. end
  244. zveg = szelesseg - 1
  245.  
  246. -- Vertikális réteg építés számítás
  247.  
  248. for z = zkezd,zveg do
  249.   if not bool_1 then
  250.     safeUp()
  251.   end
  252.  
  253.     if vegszam==1 then
  254.         reteg=z-sugar+1
  255.         print("Eppen epulo reteg " .. reteg ..".")
  256.         else
  257.              print("Eppen epulo reteg " .. z+1 ..".")
  258.     end
  259.    
  260.     --cz
  261.    
  262.   cz2 = (sugar - z) ^ 2
  263.  
  264.   limit_offset_y = (hatar_2 - cz2) ^ 0.5
  265.   max_offset_y = math.ceil(limit_offset_y)
  266.  
  267.   for side = 0,1 do
  268.    
  269.     if (side == 0) then
  270.       ykezd = sugar - max_offset_y
  271.       yveg = sugar + max_offset_y
  272.       ylepes = 1
  273.     else
  274.       ykezd = sugar + max_offset_y
  275.       yveg = sugar - max_offset_y
  276.       ylepes = -1
  277.     end
  278.    
  279.     --cy
  280.    
  281.     for y = ykezd,yveg,ylepes do
  282.       cy2 = (sugar - y) ^ 2
  283.      
  284.       offset_maradek = (hatar_2 - cz2 - cy2)
  285.  
  286.      
  287.       if offset_maradek >= 0 then
  288.        
  289.         max_offset_x = math.ceil((hatar_2 - cz2 - cy2) ^ 0.5)
  290.    
  291.        
  292.         if (side == 0) then
  293.  
  294.           xkezd = sugar
  295.           xveg = sugar + max_offset_x
  296.         else
  297.  
  298.           xkezd = sugar - max_offset_x
  299.           xveg = sugar - 1
  300.         end
  301.        
  302.  
  303.         if y > sugar then
  304.           temp = xkezd
  305.           xkezd = xveg
  306.           xveg = temp
  307.           xlepes = -1
  308.         else
  309.           xlepes = 1
  310.         end
  311.        
  312.         --cx
  313.        
  314.         for x = xkezd,xveg,xlepes do
  315.           cx2 = (sugar - x) ^ 2
  316.           kozepontol_valo_tav = (cx2 + cy2 + cz2) ^ 0.5
  317.          
  318.           if kozepontol_valo_tav < hatar_sugar and kozepontol_valo_tav + sqrt3 >= hatar_sugar then
  319.             offsets = {{0, 1, 0}, {0, -1, 0}, {1, 0, 0}, {-1, 0, 0}, {0, 0, 1}, {0, 0, -1}}
  320.             for i=1,6 do
  321.               offset = offsets[i]
  322.               dx = offset[1]
  323.               dy = offset[2]
  324.               dz = offset[3]
  325.               if ((sugar - (x + dx)) ^ 2 + (sugar - (y + dy)) ^ 2 + (sugar - (z + dz)) ^ 2) ^ 0.5 >= hatar_sugar then
  326.                
  327.                 navigateTo(x, y)
  328.                 placeBlock()
  329.                 break
  330.               end
  331.             end
  332.           end
  333.         end
  334.       end
  335.     end
  336.   end
  337. end
  338.  
  339. --ha vegez, vissza megy oda ahov indul, csak a kész épület tetején
  340.  
  341. navigateTo(sugar, sugar)
  342. while (fordul > 0) do
  343.   turnLeftTrack()
  344. end
  345. io.write "\n"
  346. print("Felhasznalt block: " .. blocks)
  347. print("Teljes szelesseg: " .. sugar*2+1)
  348. if vegszam==1 then
  349.         print("Teljes magassag: " .. sugar+1)
  350.        
  351.     else
  352.         print("Teljes magassag " .. sugar*2+1)
  353. end
  354.  
  355. io.write("Az epuletet keszitette:\nGomb epito v12.0\n")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement