KapitanWalnut

BuildWall v0.1.0

Mar 7th, 2014
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --BuildWall by KapitanWalnut
  2. --Version 0.1.0 3/7/2014
  3. --Will build a wall of specific size
  4.  
  5. -- Config
  6. version = "0.1.0"
  7. topY = 10
  8. botY =0
  9. leftSide = 0
  10. rightSide = 10
  11. placedValue = 0
  12. minedValue = 0
  13. heightQuestion = true
  14. widthQuestion = true
  15. stacksQuestion = true
  16.  
  17. -- Functions
  18. function getVersion() --returns version number
  19.     return version
  20. end
  21.  
  22. function regWrite(string, columnVar, rowVar) --write a string to specified coords
  23.     term.setCursorPos(columnVar, rowVar)
  24.     write(string)
  25. end
  26.  
  27. function arcWrite(number, columnVar, rowVar) --writes a number to specified coords, takes digits into account
  28.     digits = math.ceil(math.log10(number))
  29.     if 10^digits == number then
  30.         digits = digits + 1
  31.     end
  32.     term.setCursorPos(columnVar, rowVar)
  33.     while digits > 1 do
  34.         digits = digits - 1
  35.         columnVar = columnVar - 1
  36.         term.setCursorPos(columnVar, rowVar)
  37.     end
  38.     write(number)
  39. end
  40.  
  41. function clearScreen() --clears screen and prints version, author
  42.     term.clear()
  43.     regWrite("BuildWall", 12, 1)
  44.     regWrite(getVersion(), 2, 12)
  45.     regWrite("by KapitanWalnut", 17, 12)
  46.     term.setCursorPos(1, 3)
  47. end
  48.  
  49. function drawTable() --prints a table on screen display infor during run time
  50. clearScreen()
  51. print([[
  52.  +--------------------------------+
  53.  |Blocks Placed:                0 |
  54.  |Blocks Mined:                 0 |
  55.  +--------------------------------+
  56.  |             Status             |
  57.  |[                              ]|
  58.  |                0%              |
  59.  +--------------------------------+
  60. ]] )
  61. placedValue = 0
  62. minedValue = 0
  63. end
  64.  
  65. function updateTable() --updates table during runtime
  66.     --Update Blocks
  67.     arcWrite(placedValue, 33, 4)
  68.     arcWrite(minedValue, 33, 5)
  69.  
  70.     --Update Percentage
  71.     if height > 0 then
  72.         area = (height * width)
  73.     else
  74.         area = placedValue
  75.     end
  76.     percentage = math.ceil((placedValue / area) * 100)
  77.     arcWrite(percentage, 19, 9)
  78.  
  79.     --Update Percentage Bar
  80.     percentageBar = math.floor(percentage * 0.3)
  81.     columnVar = 4
  82.     while percentageBar > 0 do
  83.         regWrite("=", columnVar, 8)
  84.         percentageBar = percentageBar - 1
  85.         columnVar = columnVar + 1
  86.     end
  87. end
  88.  
  89. --Digging Functions
  90. function digDown() --Dig Down and update table
  91.     if turtle.detectDown() then
  92.         turtle.digDown()
  93.         minedValue = minedValue + 1
  94.     end
  95.     updateTable()
  96. end
  97.  
  98. function digUp() -- Dig up and update table
  99.     while turtle.detectUp() do
  100.         turtle.digUp()
  101.         sleep(0.4)
  102.         minedValue = minedValue + 1
  103.     end
  104.     updateTable()
  105. end
  106.  
  107. function digForward() --Dig Forward and update table
  108.     while turtle.detect() do
  109.         turtle.dig()
  110.         sleep(0.4)
  111.         minedValue = minedValue + 1
  112.     end
  113.     updateTable()
  114. end
  115.  
  116. --Movement Functions
  117. function moveForward()--Move forward no digging
  118.     moved = false
  119.     repeat
  120.         if turtle.forward() then
  121.             moved = true
  122.         else
  123.             moved = false
  124.         end
  125.     until moved == true
  126. end
  127.  
  128. function moveDown()--Move down no digging
  129.     moved = false
  130.     repeat
  131.         if turtle.down() then
  132.             moved = true
  133.         else
  134.             moved = false
  135.         end
  136.     until moved == true
  137. end
  138.  
  139. function moveUp()--Move forward no digging
  140.     moved = false
  141.     repeat
  142.         if turtle.up() then
  143.             moved = true
  144.         else
  145.             moved = false
  146.         end
  147.     until moved == true
  148. end
  149.  
  150. --Questions
  151. function askQuestions() --asks Questions
  152.    
  153.     --Get Height
  154.     clearScreen()
  155.     while heightQuestion == true do
  156.         print("Height of wall?")
  157.         height = tonumber(read())
  158.         clearScreen()
  159.         if height == nil then
  160.             print("Must be a number.")
  161.         elseif height >= 2 then
  162.             heightQuestion = false
  163.         else
  164.             print("Wall must be taller then one.")
  165.         end
  166.     end
  167.  
  168.     --Get Width
  169.     clearScreen()
  170.     while widthQuestion == true do
  171.         print("Width of Wall?")
  172.         width = tonumber(read())
  173.         clearScreen()
  174.         if width == nil then
  175.             print("Must be a number.")
  176.         elseif width > 0 then
  177.             widthQuestion = false
  178.         else
  179.             print("Width must be greater then 0")
  180.         end
  181.     end
  182.  
  183.     --make sure enough blocks are in inv
  184.     clearScreen()
  185.     while stacksQuestion == true do
  186.         area = width * height
  187.         stackNum = math.ceil(area/64)
  188.         if stackNum > 16 then --too big, reask questions
  189.             print("Area is too big!")
  190.             print("Requires ", stackNum, " stacks!")
  191.             print("Can only hold 16 stacks!")
  192.             print("")
  193.             print("Press Enter to reinput size...")
  194.             dummy = read()
  195.             heightQuestion = true
  196.             widthQuestion = true
  197.             stacksQuestion = true
  198.             askQuestions()
  199.         else
  200.             print("Do I have ", stackNum, " stacks?")
  201.             answer = string.lower(read())
  202.             clearScreen()
  203.             if answer == ('yes') then
  204.                 stacksQuestion = false
  205.             elseif answer == ('no') then
  206.                 print("Add them!")
  207.             else
  208.                 print("Answer yes or no.")
  209.             end
  210.         end
  211.     end
  212. end
  213.  
  214. --main function
  215. function main()
  216.     askQuestions()
  217.     drawTable()
  218. end
  219.  
  220. --run main function
  221. main()
Advertisement
Add Comment
Please, Sign In to add comment