Advertisement
sinkir

lua turtle my clever farm beta0

Apr 1st, 2013
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 10.76 KB | None | 0 0
  1. --   _____
  2. --  |  ___|   _ _ __   ___
  3. --  | |_ | | | | '_ \ / __|
  4. --  |  _|| |_| | | | | (__
  5. --  |_|   \__,_|_| |_|\___|
  6. --
  7.  
  8. left = function()
  9.     return turtle.turnLeft()
  10. end
  11.  
  12. right = function()
  13.     return turtle.turnRight()
  14. end
  15.  
  16. up = function()
  17.     return turtle.up()
  18. end
  19.  
  20. down = function()
  21.     return turtle.down()
  22. end
  23.  
  24. back = function()
  25.     return turtle.back()
  26. end
  27.  
  28. go = function()
  29.     return turtle.forward()
  30. end
  31.  
  32. fuel = function()
  33.     return turtle.getFuelLevel()
  34. end
  35.  
  36. select = function(id)
  37.     return turtle.select(id)
  38. end
  39.  
  40. count = function(id)
  41.     return turtle.getItemCount(id)
  42. end
  43.  
  44. move = function(id, nb)
  45.     return turtle.transferTo(id, nb)
  46. end
  47.  
  48. function testFuel()
  49.     if(fuel() < 16)then
  50.         print('Plus de coco, test de refuel')
  51.         if(count(15) == 0)then
  52.             return false
  53.         end
  54.         select(15)
  55.         turtle.refuel(1)
  56.     end
  57.     if(count(15) == 0)then
  58.         return false
  59.     end
  60.     return true
  61. end
  62.  
  63.  
  64. function videInv(move)
  65.     if(count(1)>1)then
  66.         turtle.select(1)
  67.         if(turtle.dropDown(count(1)-1)==false)then
  68.             return false
  69.         end
  70.     end
  71.     for m = 2,14 do
  72.         if(count(m)>0)then
  73.             turtle.select(m)
  74.             if(turtle.dropDown()==false)then
  75.                 return false
  76.             end
  77.         end
  78.     end
  79.     select(1)
  80.     return true
  81. end
  82.  
  83.  
  84. function init()
  85.     if(count(1) == 0)then
  86.         print("Pas de seed en slot 1 ? ^^' exit.")
  87.         return false
  88.     end
  89.     if(count(15) == 0)then
  90.         print("Pas de fuel en reserve en slot 15 ? :/ ok..")
  91.     end
  92.     if(count(16) == 0)then
  93.         print("Besoin du bloc sur l'eau en slot 16(lilipad ? autre ?) exit.")
  94.         return false
  95.     end
  96.     if(turtle.detectDown()==false)then
  97.         print("Besoin d'un coffre en dessou. exit.")
  98.         return false
  99.     end
  100.  
  101.     return true
  102. end
  103.  
  104. function CheckMyTable(x, y)
  105.     if(Cpt == 0)then
  106.         return false
  107.     end
  108.     l=0
  109.     local checkstop = false
  110.     while(checkstop == false)do
  111.  
  112.         if(""..MyTable0[l] == ""..x and ""..MyTable1[l] == ""..y)then
  113.             --print('return true')
  114.             return true
  115.         end
  116.         if(l > Cpt-2)then
  117.             checkstop = true
  118.         else
  119.             l=l+1
  120.         end
  121.     end
  122.     --print('return false')
  123.     return false
  124. end
  125.  
  126.  
  127.  
  128. function test()
  129.     if(turtle.detectDown()==true)then
  130.         select(16)
  131.         if(turtle.compareDown()==false)then
  132.             select(1)
  133.             turtle.digDown()
  134.             if(count(1)==0)then
  135.                 print("J'ai pas u de graine, je peux pas replenté , je rentre.")
  136.                 goHome()
  137.                 return false
  138.             end
  139.             turtle.placeDown()
  140.         end
  141.         return true
  142.     else
  143.         return false
  144.     end
  145. end
  146.  
  147. function whaitGo(k)
  148.     if(k> 60)then
  149.         return false
  150.     end
  151.     if(go()==false)then
  152.         sleep(2)
  153.         return whaitGo(k+1)
  154.     end
  155.     return true
  156. end
  157. function whaitBack(j)
  158.     if(j> 60)then
  159.         return false
  160.     end
  161.     if(back()==false)then
  162.         sleep(2)
  163.         return whaitBack(j+1)
  164.     end
  165.     return true
  166. end
  167.  
  168.  
  169. function testLeft(testLeftFlag)
  170.     if(testLeftFlag ~= 1)then -- Si = 1 ne pas prendre en compte si la case est visitée
  171.         testLeftFlag = 0
  172.     end
  173.     if(testLeftFlag == 0)then
  174.         if(Dir == "+y")then
  175.             FlagLeft = CheckMyTable(NowPos[0]-1, NowPos[1])
  176.         elseif(Dir == "+x")then
  177.             FlagLeft = CheckMyTable(NowPos[0], NowPos[1]+1)
  178.         elseif(Dir == "-y")then
  179.             FlagLeft = CheckMyTable(NowPos[0]+1, NowPos[1])
  180.         elseif(Dir == "-x")then
  181.             FlagLeft = CheckMyTable(NowPos[0], NowPos[1]-1)
  182.         end
  183.     else
  184.         FlagLeft = false
  185.     end
  186.    
  187.     if(FlagLeft==true)then -- si elle est visite
  188.         return false
  189.     else
  190.         left()
  191.         if(whaitGo(0)==false)then
  192.             print('Pas pus avance , exit')
  193.             stop=true
  194.             return false
  195.         end
  196.         if(turtle.detectDown()==true)then
  197.             if(Dir == "+y")then
  198.                 newDir = "-x"
  199.                 NowPos[0] = NowPos[0]-1
  200.                
  201.             elseif(Dir == "+x")then
  202.                 newDir = "+y"
  203.                 NowPos[1] = NowPos[1]+1
  204.                
  205.             elseif(Dir == "-y")then
  206.                 newDir = "+x"
  207.                 NowPos[0] = NowPos[0]+1
  208.                
  209.             elseif(Dir == "-x")then
  210.                 newDir = "-y"
  211.                 NowPos[1] = NowPos[1]-1        
  212.             end
  213.             Dir = newDir
  214.             print("end left x"..NowPos[0].." y"..NowPos[1].." dir:"..Dir)
  215.             return true
  216.         else
  217.             print("end left (false) x"..NowPos[0].." y"..NowPos[1].." dir:"..Dir)
  218.  
  219.             if(whaitBack(0)==false)then
  220.                 print('Pas pus recule , exit')
  221.                 stop=true
  222.                 return false
  223.             end
  224.             right()
  225.             return false
  226.         end
  227.     end
  228. end
  229.  
  230. function testRight(testRightFlag)
  231.     if(testRightFlag ~= 1)then -- Si = 1 ne pas prendre en compte si la case est visitée
  232.         testRightFlag = 0
  233.     end
  234.     if(testRightFlag == 0)then
  235.         if(Dir == "+y")then
  236.             FlagRight = CheckMyTable(NowPos[0]+1, NowPos[1])
  237.         elseif(Dir == "+x")then
  238.             FlagRight = CheckMyTable(NowPos[0], NowPos[1]-1)
  239.         elseif(Dir == "-y")then
  240.             FlagRight = CheckMyTable(NowPos[0]-1, NowPos[1])
  241.         elseif(Dir == "-x")then
  242.             FlagRight = CheckMyTable(NowPos[0], NowPos[1]+1)
  243.         end
  244.     else
  245.         FlagRight = false
  246.     end
  247.    
  248.     if(FlagRight==true)then -- si elle est visite
  249.         return false
  250.     else
  251.         right()
  252.         if(whaitGo(0)==false)then
  253.             print('Pas pus avance , exit')
  254.             stop=true
  255.             return false
  256.         end
  257.         if(turtle.detectDown()==true)then
  258.             if(Dir == "+y")then
  259.                 newDir = "+x"
  260.                 NowPos[0] = NowPos[0]+1
  261.                
  262.             elseif(Dir == "+x")then
  263.                 newDir = "-y"
  264.                 NowPos[1] = NowPos[1]-1
  265.                
  266.             elseif(Dir == "-y")then
  267.                 newDir = "-x"
  268.                 NowPos[0] = NowPos[0]-1
  269.                
  270.             elseif(Dir == "-x")then
  271.                 newDir = "+y"
  272.                 NowPos[1] = NowPos[1]+1        
  273.             end
  274.             Dir = newDir
  275.             print("end right x"..NowPos[0].." y"..NowPos[1].." dir:"..Dir)
  276.             return true
  277.         else
  278.             print("end right (false) x"..NowPos[0].." y"..NowPos[1].." dir:"..Dir)
  279.  
  280.             if(whaitBack(0)==false)then
  281.                 print('Pas pus recule , exit')
  282.                 stop=true
  283.                 return false
  284.             end
  285.             left()
  286.             return false
  287.         end
  288.     end
  289. end
  290. function testGo(testGoFlag)
  291.     if(testGoFlag ~= 1)then -- Si = 1 ne pas prendre en compte si la case est visitée
  292.         testGoFlag = 0
  293.     end
  294.     if(testGoFlag == 0)then
  295.         if(Dir == "+y")then
  296.             FlagGo = CheckMyTable(NowPos[0], NowPos[1]+1)
  297.         elseif(Dir == "+x")then
  298.             FlagGo = CheckMyTable(NowPos[0]+1, NowPos[1])
  299.         elseif(Dir == "-y")then
  300.             FlagGo = CheckMyTable(NowPos[0], NowPos[1]-1)
  301.         elseif(Dir == "-x")then
  302.             FlagGo = CheckMyTable(NowPos[0]-1, NowPos[1])
  303.         end
  304.     else
  305.         FlagGo = false
  306.     end
  307.    
  308.     if(FlagGo==true)then -- si elle est visite
  309.         return false
  310.     else
  311.         if(whaitGo(0)==false)then
  312.             print('Pas pus avance , exit')
  313.             stop=true
  314.             return false
  315.         end
  316.         if(turtle.detectDown()==true)then
  317.             if(Dir == "+y")then
  318.                 NowPos[1] = NowPos[1]+1
  319.                
  320.             elseif(Dir == "+x")then
  321.                 NowPos[0] = NowPos[0]+1
  322.                
  323.             elseif(Dir == "-y")then
  324.                 NowPos[1] = NowPos[1]-1
  325.                
  326.             elseif(Dir == "-x")then
  327.                 NowPos[0] = NowPos[0]-1        
  328.             end
  329.             print("end go x"..NowPos[0].." y"..NowPos[1].." dir:"..Dir)
  330.             return true
  331.         else
  332.             print("end go (back) x"..NowPos[0].." y"..NowPos[1].." dir:"..Dir)
  333.  
  334.             if(whaitBack(0)==false)then
  335.                 print('Pas pus recule , exit')
  336.                 stop=true
  337.                 return false
  338.             end
  339.             return false
  340.         end
  341.     end
  342. end
  343.  
  344. function demisTour()
  345.     left()
  346.     left()
  347.     if(whaitGo(0)==false)then
  348.         return false
  349.     else
  350.         if(Dir == "+y")then
  351.             newDir = "-y"
  352.             NowPos[1] = NowPos[1]-1
  353.            
  354.         elseif(Dir == "+x")then
  355.             newDir = "-x"
  356.             NowPos[0] = NowPos[0]-1
  357.            
  358.         elseif(Dir == "-y")then
  359.             newDir = "+y"
  360.             NowPos[1] = NowPos[1]+1
  361.            
  362.         elseif(Dir == "-x")then
  363.             newDir = "+x"
  364.             NowPos[0] = NowPos[0]+1        
  365.         end
  366.         Dir = newDir
  367.         print("end demi tour x"..NowPos[0].." y"..NowPos[1].." dir:"..Dir)
  368.        
  369.     end
  370. end
  371.  
  372. --  __  __       _        ____
  373. -- |  \/  | __ _(_)_ __  / /\ \
  374. -- | |\/| |/ _` | | '_ \| |  | |
  375. -- | |  | | (_| | | | | | |  | |
  376. -- |_|  |_|\__,_|_|_| |_| |  | |
  377. --                       \_\/_/
  378.  
  379.  
  380. args = { ... }
  381. if( args[1]==null)then
  382.     args[1] = 16
  383.     --print("Début de 'tree', par defaut, "..args[1].." blocks")
  384. else
  385.     --print("Début de 'tree', "..args[1].." blocks")
  386. end
  387.  
  388. stop=false
  389. if(init()==false) then
  390.     stop=true
  391. else
  392.     if(whaitGo(0)==false)then
  393.         stop=true
  394.     end
  395.     if(whaitGo(0)==false)then
  396.         stop=true
  397.     end
  398.     if(turtle.detectDown()==false)then
  399.         print('Il est ou ton champ ? x)')
  400.         back()
  401.         back()
  402.         stop=true
  403.     end
  404. end
  405.  
  406. NowPos = {}
  407. NowPos[0] = 0
  408. NowPos[1] = 0
  409.  
  410. NewPos0 = NowPos[0]
  411. NewPos1 = NowPos[1]
  412.  
  413. MyTable0 = {}
  414. MyTable1 = {}
  415. Cpt = 0
  416. Dir = "+y"
  417. FlagVisited = false
  418. LastVisited = false
  419. while(stop==false)do
  420.     for i=0, Cpt-1 do
  421.         --print("["..i.."][0]="..MyTable0[i].." [1]="..MyTable1[i])
  422.     end
  423.  
  424.  
  425.     if(CheckMyTable(NowPos[0], NowPos[1])==true)then
  426.         --si on a deja visiter cette case
  427.         ------Flagtruk : dé que tu trouve une possition nouvelle tu fait les tests (gauche , tout droit,droite)
  428.         -- si ya le flag truk, et qu'on sort du chant en allant tout droit => go home()
  429.         FlagVisited = true
  430.         print("Je connais cette case : x"..NowPos[0].." y"..NowPos[1])
  431.     else
  432.         FlagVisited = false    
  433.     end
  434.  
  435.    
  436.     if(FlagVisited == false)then -- si on connais pas la case
  437.         if(LastVisited==false)then -- si on vien d'une case qui etais nouvelle
  438.             if(test()==true)then -- si on est bien a la suite
  439.                 print("test()==true 1")
  440.                 NewPos0 = NowPos[0]
  441.                 NewPos1 = NowPos[1]
  442.  
  443.                 MyTable0[Cpt] = NewPos0
  444.                 MyTable1[Cpt] = NewPos1
  445.                
  446.                 Cpt = Cpt+1    
  447.                 if(testLeft()==false)then
  448.                     print("testLeft()==false 1")
  449.                     if(testGo()==false)then
  450.                         print("testGo()==false1")
  451.                         if(testRight()==false)then
  452.                             print("testRight()==false1")
  453.                             if(testLeft(1)==false)then
  454.                                 if(testGo(1)==false)then
  455.                                     if(testRight(1)==false)then
  456.                                         demisTour()
  457.                                     end
  458.                                 end
  459.                             end
  460.                         end
  461.                     end
  462.                 end
  463.  
  464.             else -- Si on est sortis du champs
  465.                 print("wtf?")
  466.                 if(whaitBack(0)==false)then
  467.                     print('Pas pus recule , exit')
  468.                     stop=true
  469.                 else
  470.                     if(testLeft()==false)then
  471.                         if(testRight()==false)then
  472.                             demisTour()
  473.                         end
  474.                     end
  475.                 end
  476.             end
  477.         else -- si on vien d'une case déja visité
  478.             if(test()==true)then -- si on est bien a la suite
  479.                 print("test()==true 2")
  480.                 NewPos0 = NowPos[0]
  481.                 NewPos1 = NowPos[1]
  482.  
  483.                 MyTable0[Cpt] = NewPos0
  484.                 MyTable1[Cpt] = NewPos1
  485.                 Cpt = Cpt+1    
  486.                 if(testLeft()==false)then
  487.                     print("testLeft()==false 2")
  488.                     if(testGo()==false)then
  489.                         print("testGo()==false 2")
  490.                         if(testRight()==false)then
  491.                             print("testRight()==false 2 (go home)")
  492.                            
  493.                             if(testGo(1)==false)then
  494.                                 if(testLeft(1)==false)then
  495.                                     if(testRight(1)==false)then
  496.                                         demisTour()
  497.                                     end
  498.                                 end
  499.                             end                        
  500.                            
  501.                            
  502.                         end
  503.                     end
  504.                 end            
  505.             else -- Si on est sortis du champs
  506.                 goHome()
  507.             end
  508.         end
  509.     else -- si la case est visitée
  510.    
  511.         if(testLeft()==false)then
  512.             if(testGo()==false)then
  513.                 if(testRight()==false)then
  514.                     if(testGo(1)==false)then
  515.                         if(LastVisited==false)then
  516.                             goHome()
  517.                         else
  518.                             if(testLeft(1)==false)then
  519.                                 if(testRight(1)==false)then
  520.                                     demisTour()
  521.                                 end
  522.                             end
  523.                         end
  524.                     end
  525.                 end
  526.             end
  527.         end
  528.     end
  529.     LastVisited = FlagVisited
  530. end
  531.  
  532.  
  533. print('End')
  534. if(fuel() == 0) then
  535.   print('Ya plus de coco mon coco !')
  536. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement