tempVal = 0
debugText = true --set this to false to not see $dev messages
mainMenu()
--program helpers
function debug(message) --does $dev messages
if debugText then print("$"+message)
else end
end
function print(message) --prints message with new line
io.write(message+"\n")
end
function cls() --clear screen
term.clear()
term.setCursorPos(1,1)
end
function pause() --system(pause)
print("Press enter to continue...")
io.read()
end
--movement functions
function turnAround()
turtle.turnRight()
turtle.turnRight()
end
function KP7() --forward left
turtle.turnLeft()
turtle.forward()
turtle.turnRight()
end
function KP9() --forward right
turtle.turnRight()
turtle.forward()
turtle.turnLeft()
end
function KP8()
turtle.forward()
end
function KP2()
turtle.back()
end
function KP1()
turtle.turnLeft()
turtle.forward()
turtle.turnRight()
turtle.back()
end
function KP3()
turtle.turnRight()
turtle.forward()
turtle.turnLeft()
turtle.back()
end
function KP4() --strafe left
LT()
KP8()
RT()
end
function KPA()
turtle.up()
end
function KPD()
turtle.down()
end
function RT()
turtle.turnRight()
end
function LT()
turtle.turnLeft()
end
function mainMenu()
cls()
local prompt = -1
debug("reset prompt")
print("===MAIN MENU===")
print("What to do next?")
print("(Choose any option not listed to exit)")
print("0. Refuel 6. Hollow Box")
print("1. Line 7. Solid Block")
print("2. Fence 8. Move")
print("3. Pad 9. Color by Number")
print("4. Wall 10. Quarry")
print("5. Circle X. Exit")
io.write(">")
prompt=io.read()
if prompt == 0 then
fillFuel()
mainMenu()
elseif prompt == 1 then
lineMenu()
elseif prompt == 2 then
fenceMenu()
elseif prompt == 3 then
padMenu()
elseif prompt == 4 then
wallMenu()
elseif prompt == 5 then
circleMenu()
elseif prompt == 6 then
boxMenu()
elseif prompt == 7 then
cubeMenu()
elseif prompt == 8 then
moveMenu()
elseif prompt == 9 then
pixelArtMenu()
elseif prompt == 10 then
quarryMenu()
else end
end
function fillFuel()
cls()
debug("filling fuel")
local iterations = 0
while(iterations<16) do
turtle.select(iterations+1)
debug("selected "+turtle.getSelectedSlot())
if (not turtle.refuel(64)) then debug(iterations+": not fuel")
else end
iterations=iterations+1
debug("iteration #"+iterations)
end
debug("done refueling")
pause()
end
function lineMenu()
cls()
local prompt = -1
debug("reset prompt")
local iterations = 0
debug("reset iterations")
print("Above or below?")
print("1. Above")
print("2. Below")
io.write(">")
prompt = io.read()
print(" ")
print("How far?")
io.write(">")
iterations = io.read()
if tonumber(iterations)==nil then
debug("bad iterations")
print("Not a number. Returning...")
pause()
elseif tonumber(prompt)==nil then
debug("bad prompts")
print("Not a number. Returning...")
pause()
elseif prompt==1 then
debug("lineAbove "+iterations)
lineAbove(iterations)
pause()
elseif prompt==2 then
debug("lineBelow "+iterations)
lineBelow(iterations)
pause()
else
debug("bad prompt")
print("Returning...")
pause()
mainMenu()
end
end
function lineAbove(distance)
local iterations = 0
if (distance > turtle.getSelectedSlot()) then
lineAbove(turtle.getSelectedSlot())
print("Out of material. Which slot?")
io.write(">")
local prompt = io.read()
if tonumber(prompt)==nil then
print("Not a number. Cancelling...")
pause()
mainMenu()
else
turtle.select(prompt)
lineAbove(distance-iterations)
end
else end
local stock
local fuel=turtle.getFuelLevel()
while (iterations turtle.getSelectedSlot()) then
lineBelow(turtle.getSelectedSlot())
print("Out of material. Which slot?")
io.write(">")
local prompt = io.read()
if tonumber(prompt)==nil then
print("Not a number. Cancelling...")
pause()
mainMenu()
else
turtle.select(prompt)
lineBelow(distance-iterations)
end
else end
local stock
local fuel=turtle.getFuelLevel()
while (iterations")
varForward=io.read()
if tonumber(varForward)==nil then
print("Not a number. Returning to menu...")
pause()
mainMenu()
else end
print("Left or right?")
print("1. Left\n2. Right")
io.write(">")
prompt = io.read()
if tonumber(prompt)==nil then
print("Not a number. Returning to menu...")
pause()
mainMenu()
elseif prompt == 1 then
leftTurn = true
elseif prompt ~= 2 then
print("Not a valid number. Returning to menu...")
pause()
mainMenu()
else
debug("setting LT to false just in case something stupid")
leftTurn=false
end
print("How many long?")
io.write(varForward+"x?\n>")
varSideways=io.read()
if tonumber(varSideways)==nil then
print("Not a number. Returning to menu...")
pause()
mainMenu()
else end
print("Above or below?")
print("1. Above\n2. Below")
io.write(">")
prompt = io.read()
if tonumber(prompt)==nil then
print("Not a number. Returning to menu...")
pause()
mainMenu()
elseif prompt == 1 then
boolUp = true
elseif prompt ~= 2 then
print("Not a valid number. Returning to menu...")
pause()
mainMenu()
else end
if boolUp then fenceAbove(varForward, varSideways, leftTurn)
else fenceBelow(varForward, varSideways)
end
pause()
mainMenu()
end
function fenceAbove(forward, sideways, turnLeft)
lineAbove(forward)
debug("leg 1 done")
if turnLeft then LT() else RT() end
lineAbove(sideways)
debug("leg 2 done")
if turnLeft then LT() else RT() end
lineAbove(forward)
debug("leg 3 done")
if turnLeft then LT() else RT() end
lineAbove(sideways)
debug("leg 4 done")
KP8()--start pos, no place
if turnLeft then LT() else RT() end
end
function fenceBelow(forward, sideways, turnLeft)
lineBelow(forward)
debug("leg 1 done")
if turnLeft then LT() else RT() end
lineBelow(sideways)
debug("leg 2 done")
if turnLeft then LT() else RT() end
lineBelow(forward)
debug("leg 3 done")
if turnLeft then LT() else RT() end
lineBelow(sideways)
debug("leg 4 done")
KP8() --return to start pos
if turnLeft then LT() else RT() end --return to start rot
end
function padMenu()
local varForward=0
local varSideways=0
local varUp=false
local iterations=0
local leftTurn=false
local prompt
cls()
print("How far forward?")
io.write(">")
varForward=io.read()
if tonumber(varForward)==nil then
print("Not a number. Returning to menu...")
pause()
mainMenu()
else end
print("Left or right?")
print("1. Left\n2. Right")
io.write(">")
prompt = io.read()
if tonumber(prompt)==nil then
print("Not a number. Returning to menu...")
pause()
mainMenu()
elseif prompt == 1 then
leftTurn = true
elseif prompt ~= 2 then
print("Not a valid number. Returning to menu...")
pause()
mainMenu()
else
debug("setting LT to false just in case something stupid")
leftTurn=false
end
print("How many long?")
io.write(varForward+"x?\n>")
varSideways=io.read()
if tonumber(varSideways)==nil then
print("Not a number. Returning to menu...")
pause()
mainMenu()
else
end
print("Above or below?")
print("1. Above\n2. Below")
io.write(">")
prompt = io.read()
if tonumber(prompt)==nil then
print("Not a number. Returning to menu...")
pause()
mainMenu()
elseif prompt == 1 then
varUp = true
elseif prompt ~= 2 then
print("Not a valid number. Returning to menu...")
pause()
mainMenu()
end
if varUp then padAbove(varForward, varSideways, leftTurn)
else padBelow(varForward, varSideways, leftTurn)
end
pause()
mainMenu()
end
function padAbove(forward, sideways, turnLeft)
local smaller
if (forward2 then fenceAbove(forward-2, sideways-2, turnLeft) else end
if turnLeft then KP3() else KP1() end
end
function padBelow(forward, sideways, turnLeft)
local smaller
if (forward2 then fenceAbove(forward-2, sideways-2, turnLeft) else end
if turnLeft then KP3() else KP1() end
end
function cubeMenu()
local varForward=0
local varSideways=0
local varHeight=0
local boolUp=true
local iterations=0
local leftTurn=false
local prompt
cls()
print("How far forward?")
io.write(">")
varForward=io.read()
if tonumber(varForward)==nil then
print("Not a number. Returning to menu...")
pause()
mainMenu()
else end
print("Left or right?")
print("1. Left\n2. Right")
io.write(">")
prompt = io.read()
if tonumber(prompt)==nil then
print("Not a number. Returning to menu...")
pause()
mainMenu()
elseif prompt == 1 then
leftTurn = true
elseif prompt ~= 2 then
print("Not a valid number. Returning to menu...")
pause()
mainMenu()
else
debug("setting LT to false just in case something stupid")
leftTurn=false
end
print("How many long?")
io.write(varForward+"x?\n>")
varSideways=io.read()
if tonumber(varSideways)==nil then
print("Not a number. Returning to menu...")
pause()
mainMenu()
else end
print("Above or below?")
print("1. Work Up\n2. Work Down")
io.write(">")
prompt = io.read()
if tonumber(prompt)==nil then
print("Not a number. Returning to menu...")
pause()
mainMenu()
elseif prompt == 1 then
boolUp = true
elseif prompt ~= 2 then
print("Not a valid number. Returning to menu...")
pause()
mainMenu()
end
print("How many tall?")
io.write(varForward+"x"+varSideways+"x?\n>")
varHeight=io.read()
if tonumber(varHeight)==nil then
print("Not a number. Returning to menu...")
pause()
mainMenu()
else end
if boolUp then cubeBelow(varForward, varSideways, varHeight, leftTurn)
else cubeAbove(varForward, varSideways, varHeight, leftTurn)
end
pause()
mainMenu()
end
function cubeAbove(varForward, varSideways, varHeight, leftTurn)
local iterations = 0
while iterations < varHeight do
padAbove(varForward, varSideways, leftTurn)
debug("finished iteration "+iterations)
iterations = iterations + 1
KPD()
end
KP2()
debug("backing out")
while iterations > 0 do
KPA()
debug("ascended from "+iterations)
iterations = iterations -1
end
pause()
end
function cubeBelow(varForward, varSideways, varHeight, leftTurn)
local iterations = 0
while iterations < varHeight do
padAbove(varForward, varSideways, leftTurn)
debug("finished iteration "+iterations)
iterations = iterations + 1
KPA()
end
KP2()
debug("backing out")
while iterations > 0 do
KPD()
debug("descended from "+iterations)
iterations = iterations -1
end
pause()
end
function boxMenu()
local varForward=0
local varSideways=0
local varHeight=0
local boolUp=true
local iterations=0
local leftTurn=false
local prompt
cls()
print("How far forward?")
io.write(">")
varForward=io.read()
if tonumber(varForward)==nil then
print("Not a number. Returning to menu...")
pause()
mainMenu()
else end
print("Left or right?")
print("1. Left\n2. Right")
io.write(">")
prompt = io.read()
if tonumber(prompt)==nil then
print("Not a number. Returning to menu...")
pause()
mainMenu()
elseif prompt == 1 then
leftTurn = true
elseif prompt ~= 2 then
print("Not a valid number. Returning to menu...")
pause()
mainMenu()
else
debug("setting LT to false just in case something stupid")
leftTurn=false
end
print("How many long?")
io.write(varForward+"x?\n>")
varSideways=io.read()
if tonumber(varSideways)==nil then
print("Not a number. Returning to menu...")
pause()
mainMenu()
else end
print("Above or below?")
print("1. Work Up\n2. Work Down")
io.write(">")
prompt = io.read()
if tonumber(prompt)==nil then
print("Not a number. Returning to menu...")
pause()
mainMenu()
elseif prompt == 1 then
boolUp = true
elseif prompt ~= 2 then
print("Not a valid number. Returning to menu...")
pause()
mainMenu()
end
print("How many tall?")
io.write(varForward+"x"+varSideways+"x?\n>")
varHeight=io.read()
if tonumber(varHeight)==nil then
print("Not a number. Returning to menu...")
pause()
mainMenu()
else end
if boolUp then cubeBelow(varForward, varSideways, varHeight, leftTurn)
else cubeAbove(varForward, varSideways, varHeight, leftTurn)
end
pause()
mainMenu()
end
function boxAbove(varForward, varSideways, varHeight, leftTurn)
local iterations = 0
padbove(varForward, varSideways, leftTurn)
while iterations < varHeight-2 do
fenceAbove(varForward, varSideways, leftTurn)
debug("finished iteration "+iterations)
iterations = iterations + 1
KPD()
end
padbove(varForward, varSideways, leftTurn)
KP2()
debug("backing out")
while iterations > 0 do
KPA()
debug("ascended from "+iterations)
iterations = iterations -1
end
pause()
end
function boxBelow(varForward, varSideways, varHeight, leftTurn)
local iterations = 0
padBelow(varForward, varSideways, leftTurn)
while iterations < varHeight-2 do
fenceBelow(varForward, varSideways, leftTurn)
debug("finished iteration "+iterations)
iterations = iterations + 1
KPA()
end
padAbove(varForward, varSideways, leftTurn)
KP2()
debug("backing out")
while iterations > 0 do
KPD()
debug("descended from "+iterations)
iterations = iterations -1
end
pause()
end
function circleMenu()
print("Coming Soon!")
pause()
mainMenu()
end
function pixelArtMenu()
print("Coming Soon")
pause()
mainMenu()
end
function wallMenu()
print("Coming Soon!")
pause()
mainMenu()
end
function moveMenu() --0 down, 5 up
print("Coming Soon!")
pause()
mainMenu()
end
function quarryMenu()
print("Coming Soon!")
pause()
mainMenu()
end