Aranyalma2

Búra építő v11.44

Apr 11th, 2018
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.76 KB | None | 0 0
  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.  
  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.  
  175. function placeBlock()
  176.  
  177.   blocks = blocks + 1
  178.   if bool_1 then
  179.     return
  180.   end
  181.   turtle.placeDown()
  182. end
  183.  
  184. -- Térbeli építés számítás
  185.  
  186. --matek elmélet:
  187.  
  188. szelesseg = sugar * 2 + 1
  189. sqrt3 = 3 ^ 0.5
  190. hatar_sugar = sugar + 1.0
  191. hatar_2 = hatar_sugar ^ 2
  192.  
  193. --érték bekérés
  194.  
  195. if type == "kupola" then
  196.   zkezd = sugar
  197.   vegszam=1
  198. elseif type == "gomb" then
  199.   zkezd = 0
  200.   vegszam = 0
  201. else
  202.   print("Hasznalat: <program_neve> <alakzat> <sugar> [-c]")
  203.   os.exit(1)
  204. end
  205. zveg = szelesseg - 1
  206.  
  207. -- Vertikális réteg építés számítás
  208.  
  209. for z = zkezd,zveg do
  210.   if not bool_1 then
  211.     safeUp()
  212.   end
  213.  
  214.     if vegszam==1 then
  215.         reteg=z-sugar+1
  216.         print("Eppen epulo reteg " .. reteg ..".")
  217.         else
  218.              print("Eppen epulo reteg " .. z+1 ..".")
  219.     end
  220.    
  221.     --cz
  222.    
  223.   cz2 = (sugar - z) ^ 2
  224.  
  225.   limit_offset_y = (hatar_2 - cz2) ^ 0.5
  226.   max_offset_y = math.ceil(limit_offset_y)
  227.  
  228.   for side = 0,1 do
  229.    
  230.     if (side == 0) then
  231.       ykezd = sugar - max_offset_y
  232.       yveg = sugar + max_offset_y
  233.       ylepes = 1
  234.     else
  235.       ykezd = sugar + max_offset_y
  236.       yveg = sugar - max_offset_y
  237.       ylepes = -1
  238.     end
  239.    
  240.     --cy
  241.    
  242.     for y = ykezd,yveg,ylepes do
  243.       cy2 = (sugar - y) ^ 2
  244.      
  245.       offset_maradek = (hatar_2 - cz2 - cy2)
  246.  
  247.      
  248.       if offset_maradek >= 0 then
  249.        
  250.         max_offset_x = math.ceil((hatar_2 - cz2 - cy2) ^ 0.5)
  251.    
  252.        
  253.         if (side == 0) then
  254.  
  255.           xkezd = sugar
  256.           xveg = sugar + max_offset_x
  257.         else
  258.  
  259.           xkezd = sugar - max_offset_x
  260.           xveg = sugar - 1
  261.         end
  262.        
  263.  
  264.         if y > sugar then
  265.           temp = xkezd
  266.           xkezd = xveg
  267.           xveg = temp
  268.           xlepes = -1
  269.         else
  270.           xlepes = 1
  271.         end
  272.        
  273.         --cx
  274.        
  275.         for x = xkezd,xveg,xlepes do
  276.           cx2 = (sugar - x) ^ 2
  277.           kozepontol_valo_tav = (cx2 + cy2 + cz2) ^ 0.5
  278.          
  279.           if kozepontol_valo_tav < hatar_sugar and kozepontol_valo_tav + sqrt3 >= hatar_sugar then
  280.             offsets = {{0, 1, 0}, {0, -1, 0}, {1, 0, 0}, {-1, 0, 0}, {0, 0, 1}, {0, 0, -1}}
  281.             for i=1,6 do
  282.               offset = offsets[i]
  283.               dx = offset[1]
  284.               dy = offset[2]
  285.               dz = offset[3]
  286.               if ((sugar - (x + dx)) ^ 2 + (sugar - (y + dy)) ^ 2 + (sugar - (z + dz)) ^ 2) ^ 0.5 >= hatar_sugar then
  287.                
  288.                 navigateTo(x, y)
  289.                 placeBlock()
  290.                 break
  291.               end
  292.             end
  293.           end
  294.         end
  295.       end
  296.     end
  297.   end
  298. end
  299.  
  300. --ha vegez, vissza megy oda ahov indul, csak a kész épület tetején
  301.  
  302. navigateTo(sugar, sugar)
  303. while (fordul > 0) do
  304.   turnLeftTrack()
  305. end
  306. io.write "\n"
  307. print("Felhasznalt block: " .. blocks)
  308. print("Teljes szelesseg: " .. sugar*2+1)
  309. if vegszam==1 then
  310.         print("Teljes magassag: " .. sugar+1)
  311.        
  312.     else
  313.         print("Teljes magassag " .. sugar*2+1)
  314. end
  315.  
  316. io.write("Az epuletet keszitette:\nGomb epito v11.44\n")
Add Comment
Please, Sign In to add comment