Files
computercraft_lua/mazeSolver
2017-09-15 14:11:04 -04:00

193 lines
3.3 KiB
Plaintext

--[[
Allows a turtle to keep track of it's
location using a coordinate system.
Use the commands goForward(), goRight(),
goLeft(), goUp(), and goDown() to
control the turtle while adding to
the coordinates.
goHome() will send the turtle back to
it's origin and will point it north:
the direction it was originally facing.
A turtle always faces north when it is placed down
]]--
x = 0
y = 0
z = 0
saveX = 0
saveY = 0
saveZ = 0
ZX = 0
ZY = 0
ZZ = 0
saveDirection = NORTH
NORTH = 1
EAST = 2
SOUTH = 3
WEST = 4
UP = 5
DOWN = 6
RIGHT = 7
LEFT = 8
direction = NORTH
--[[sends a turtle forward 1 block
and adds to it's X coordinate]]--
function goForward()
if turtle.forward() then
addToCoords(direction)
return true
else return false
end
end
--[[sends a turtle up 1 block
and adds to it's Z coordinate]]--
function goUp()
if turtle.up() then
addToCoords(UP)
return true
else return false
end
end
--[[sends a turtle down 1 block
and subtracts from it's Z coordinate]]--
function goDown()
if turtle.down() then
addToCoords(DOWN)
return true
else return false
end
end
--[[turns a turtle right and changes
it's direction accordingly]]--
function goRight()
turtle.turnRight()
changeDirection(RIGHT)
end
--[[turns a turtle left and changes
it's direction accordingly]]--
function goLeft()
turtle.turnLeft()
changeDirection(LEFT)
end
--[[moves a turtle forward a specified number of blocks]]--
function move(distance)
for i=1,distance do
goForward()
end
end
--[[moves a turtle up a specified number of blocks]]--
function moveUp(distance)
for i=1,distance do
goUp()
end
end
--[[moves a turtle down a specified number of blocks]]--
function moveDown(distance)
for i=1,distance do
goDown()
end
end
--[[takes the direction of the turtle and adds 1
to the appropriate coordinate based on that direction]]--
function addToCoords(direction)
if direction == NORTH then
x = x+1
elseif direction == EAST then
y = y+1
elseif direction == SOUTH then
x = x-1
elseif direction == WEST then
y = y-1
elseif direction == UP then
z = z+1
else
z = z-1
end
end
--[[takes a direction turned (right or left) and changes the
direction of the turtle to north, south, east, or west]]--
function changeDirection(turned)
if turned == RIGHT then
if direction == NORTH then
direction = EAST
elseif direction == EAST then
direction = SOUTH
elseif direction == SOUTH then
direction = WEST
else
direction = NORTH
end
else
if direction == NORTH then
direction = WEST
elseif direction == WEST then
direction = SOUTH
elseif direction == SOUTH then
direction = EAST
else
direction = NORTH
end
end
end
--[[takes a direction (north, east, south, or west) and turns
the turtle in that direction]]--
function setDirection(newDirect)
while true do
if newDirect == direction then
break
end
goRight()
end
end
--[[This will solve a three dimensional maze]]--
WENT_DOWN = 20
WENT_UP = 21
LAST_MOVE = 0
function solve2D()
if not goForward() then
goLeft()
end
end
function solve3D()
if not goToZ() then
solve2D()
end
end
function goToZ(way)
if way = UP
goUp()
LAST_MOVE = WENT_UP
else
goDown()
LAST_MOVE = WENT_DOWN
end
end