Advertisement
Guest User

Untitled

a guest
May 26th, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.00 KB | None | 0 0
  1. local direction = 0 -- direction
  2. local drapeauBedrock = false -- indicateur pour savoir si on est arrivé à la bedrock
  3. local profondeur = 0 -- indique de combien on a creusé
  4. local longueur = 9 -- indique la longueur (x) de la zone à miner
  5. local largeur = 9 -- indique la largeur (y) de la zone à miner
  6. local xPosition = 0 -- indique la position courante en x
  7. local zPosition = 0 -- indique la position courante en z
  8. local niveauFuelMini = 50 -- niveau de déplacements auquel on doit refaire le plein de fuel
  9.  
  10. local premierSlot = 4 -- premier slot où se trouve le minerai ramassé
  11. local dernierSlot = 16 -- dernier slot à surveiller pour enclencher le vidage de l'inventaire
  12.  
  13.  
  14. local plan = {} -- tableau pour stocker les coordonnées relatives des puits de minage.
  15.  
  16.  
  17. function compare_mine() -- fonction qui compare et mine, tourne à droite et direction++
  18.  
  19. local slot = 0
  20. local resultat = false
  21.  
  22. for slot=1,3 do
  23. turtle.select(slot)
  24. if turtle.compare() or resultat then
  25. resultat = true
  26. end
  27. end
  28.  
  29. if resultat == false then
  30. turtle.dig()
  31. if turtle.getItemCount(dernierSlot) > 0 then -- on vérifie si on doit vider l'inventaire de la tortue
  32. print("vidage inventaire comp_mine; prof "..profondeur.." ; nbitem ds slot "..dernierSlot.." : "..turtle.getItemCount(dernierSlot).." ; ")
  33. videInventaire()
  34. end
  35. end
  36.  
  37. turtle.turnRight()
  38. direction=direction+1
  39.  
  40. end
  41.  
  42. function verifFuel() -- vérifie si on a assez de fuel (déplacements) en réserve.
  43.  
  44. local niveauFuel = turtle.getFuelLevel()
  45. if (niveauFuel ~= "unlimited") then
  46. if (niveauFuel < niveauFuelMini) then
  47. -- On a besoin de faire le plein
  48. goBack()
  49.  
  50. end
  51.  
  52. end
  53.  
  54. end
  55. fuction goBack()
  56. deplacement(0,0)
  57. end
  58. function videInventaire()
  59.  
  60. local slot
  61.  
  62. for slot=premierSlot,dernierSlot do
  63. turtle.select(slot)
  64. while turtle.getItemCount(slot) > 0 do
  65. turtle.drop(turtle.getItemCount(slot))
  66. if turtle.getItemCount(slot) > 0 then
  67. sleep(0.5)
  68. end
  69. end
  70. end
  71.  
  72.  
  73. end
  74. function calcPlan() -- calcule les emplacements des puits de minage
  75.  
  76. local x, z, temp, xTemp
  77. temp = 1
  78. -- pour forcer à miner le point de départ
  79. plan[temp] = {}
  80. plan[temp][1] = 0
  81. plan[temp][2] = 0
  82. temp = temp + 1
  83.  
  84. -- on boucle sur les colonnes
  85. for z=0,largeur do
  86. x = 0
  87. print("z : "..z)
  88.  
  89. --on calcule le x du 1er premier puit de minage pour la colonne z
  90. x = 5 - (z*2) +x
  91. while x < 0 do
  92. x = x + 5
  93. end
  94. plan[temp] = {}
  95. plan[temp][1] = x
  96. plan[temp][2] = z
  97. temp = temp + 1
  98. print("x : "..x)
  99.  
  100. -- et ensuite on trouve automatiquement les autres emplacements de la colonne z
  101. while x <= longueur do
  102. x = x + 5
  103. if x <= longueur then
  104. plan[temp] = {}
  105. plan[temp][1] = x
  106. plan[temp][2] = z
  107. temp = temp + 1
  108. print("x : "..x)
  109. end
  110. end
  111. z = z + 1
  112. end
  113. end
  114.  
  115. function deplacement(r,s) -- pour aller à des coordonnées précises
  116.  
  117. local nbX
  118. local nbZ
  119.  
  120. -- On commence par se déplacer en x
  121. print("r : "..r.." ; s : "..s)
  122. print("xPosition : "..xPosition.." ; zPosition : "..zPosition)
  123.  
  124. r = tonumber(r)
  125. s = tonumber(s)
  126.  
  127. if r > xPosition then
  128. nbX = r - xPosition
  129. print("dans r>= xposition")
  130. while direction ~= 0 do -- ici on se met dans la bonne direction
  131. turtle.turnRight()
  132. direction=direction+1
  133. if direction == 4 then direction = 0 end
  134. end
  135. elseif r < xPosition then
  136. nbX = xPosition - r
  137. print("dans xposition > r")
  138. while direction ~= 2 do -- ici on se met dans la bonne direction
  139. turtle.turnRight()
  140. direction=direction+1
  141. if direction == 4 then direction = 0 end
  142. end
  143. end
  144.  
  145. if r ~= xPosition then
  146. print("nbX : "..nbX)
  147. while nbX > 0 do
  148. if not turtle.forward() then
  149. turtle.dig() -- ici, on n'a pas réussi à avancer, donc on creuse devant soit pour dégager le passage
  150. if turtle.getItemCount(dernierSlot) > 0 then -- on vérifie si on doit vider l'inventaire de la tortue
  151. print("vidage inventaire comp_mine; prof "..profondeur.." ; nbitem ds slot "..dernierSlot.." : "..turtle.getItemCount(dernierSlot).." ; ")
  152. videInventaire()
  153. end
  154. turtle.forward()
  155. end
  156. if direction == 0 then xPosition = xPosition + 1 else xPosition = xPosition - 1 end
  157. verifFuel()
  158. nbX = nbX - 1
  159. end
  160. end
  161.  
  162. -- Ensuite on fait le déplacement en z
  163.  
  164. if s > zPosition then
  165. nbZ = s - zPosition
  166.  
  167. while direction ~= 1 do -- ici on se met dans la bonne direction
  168. turtle.turnRight()
  169. direction=direction+1
  170. if direction == 4 then direction = 0 end
  171. end
  172. elseif s < zPosition then
  173. nbZ = zPosition - s
  174.  
  175. while direction ~= 3 do -- ici on se met dans la bonne direction
  176. turtle.turnRight()
  177. direction=direction+1
  178. if direction == 4 then direction = 0 end
  179. end
  180. end
  181.  
  182. if s ~= zPosition then
  183. while nbZ > 0 do
  184. if not turtle.forward() then
  185. turtle.dig() -- ici, on n'a pas réussi à avancer, donc on creuse devant soit pour dégager le passage
  186. if turtle.getItemCount(dernierSlot) > 0 then -- on vérifie si on doit vider l'inventaire de la tortue
  187. print("vidage inventaire comp_mine; prof "..profondeur.." ; nbitem ds slot "..dernierSlot.." : "..turtle.getItemCount(dernierSlot).." ; ")
  188. videInventaire()
  189. end
  190. turtle.forward()
  191. end
  192. if direction == 1 then zPosition = zPosition + 1 else zPosition = zPosition - 1 end
  193. verifFuel()
  194. nbZ = nbZ - 1
  195. end
  196. end
  197.  
  198. --on se remet en direction "zéro"
  199. while direction ~= 0 do
  200. turtle.turnRight()
  201. direction=direction+1
  202. if direction == 4 then direction = 0 end
  203. end
  204.  
  205. end
  206.  
  207. --********************************************--
  208. --********** Programme principal *************--
  209. --********************************************--
  210.  
  211. calcPlan() -- on calcule les emplacements des puits de forage
  212.  
  213. --for k,v in pairs(plan) do print(k.." "..v[1].." "..v[2]) end
  214.  
  215. local p, pmax = 1, #plan
  216.  
  217. while p <= pmax do
  218.  
  219. drapeauBedrock = false --avant tout, on reset ce flag
  220. deplacement(plan[p][1],plan[p][2]) -- puis on se déplace sur le 1er puit à forer
  221. turtle.digDown() --creuse le bloc dessous
  222. sleep(0.2)
  223. turtle.down() --descend d'un cran
  224. profondeur = profondeur+1
  225. verifFuel()
  226.  
  227. while drapeauBedrock == false do
  228.  
  229. -- ici, direction = 0
  230. while direction~=4 do
  231. --compare et mine, tourne à droite et direction++
  232. compare_mine()
  233. end
  234. direction=0
  235.  
  236. if turtle.detectDown() == true then -- on vérifie si il y a un bloc en dessous
  237. if turtle.digDown() == false then -- si on n'arrive pas à creuser en dessous, alors c'est la bedrock
  238. drapeauBedrock = true -- donc je met le drapeau à true pour sortir de la boucle
  239. print("bedrock !")
  240. else
  241. if turtle.getItemCount(dernierSlot) > 0 then -- on vérifie si on doit vider l'inventaire de la tortue
  242. print("vidage inventaire princ1; prof "..profondeur.." ; nbitem ds slot "..dernierSlot.." : "..turtle.getItemCount(dernierSlot).." ; ")
  243. goBack()
  244. videInventaire()
  245. end
  246. turtle.down()
  247. profondeur = profondeur+1
  248. verifFuel()
  249. end
  250. else -- si il n'y a pas de bloc alors c'est de l'air, de l'eau ou de la lave
  251. turtle.down() -- alors on descend simplement (la tortue ne craint pas la lave ou l'eau) et on continue à miner
  252. profondeur = profondeur+1
  253. verifFuel()
  254. end
  255.  
  256. end
  257.  
  258. print("fin de la boucle "..profondeur)
  259. -- ici je remonte à la surface
  260. while profondeur ~= 0 do
  261. turtle.up()
  262. profondeur = profondeur-1
  263. verifFuel()
  264. end
  265.  
  266. p = p + 1
  267. end
  268.  
  269. goBack() -- retour au point de départ
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement