From aeae1244f4c38779b43b5ac0b2ed1aa0b60d3183 Mon Sep 17 00:00:00 2001 From: Vexatos Date: Sun, 13 Jul 2014 20:00:15 +0200 Subject: [PATCH] Update go.lua --- .../lua/component/robot/bin/go.lua | 46 ++++++++++++++----- 1 file changed, 35 insertions(+), 11 deletions(-) diff --git a/src/main/resources/assets/opencomputers/lua/component/robot/bin/go.lua b/src/main/resources/assets/opencomputers/lua/component/robot/bin/go.lua index 86f8df29a..d8513bbde 100644 --- a/src/main/resources/assets/opencomputers/lua/component/robot/bin/go.lua +++ b/src/main/resources/assets/opencomputers/lua/component/robot/bin/go.lua @@ -1,23 +1,47 @@ +--[[ go, makes the robot go a specified number of blocks in a certain direction or turn around. +Author: Vexatos +]] local robot=require("robot") local shell=require("shell") local args = shell.parse(...) if #args<1 then - io.stderr:write("No direction specified\n") + print("'go' - Makes the robot go in a certain direction") + print("Usage:") + print("'go forward [number]' to make the robot go forward a number of blocks (defaults to 1)") + print("'go back [number]' to make the robot go backwards") + print("'go up [number]' to make the robot go upwards") + print("'go down [number]' to make the robot go downwards") + print("'go left [number]' to make the robot turn left a number of times") + print("'go right [number]' to make the robot turn right a number of times") return end +local distance = args[2] or 1 + +if not tonumber(distance) or tonumber(distance) <= 0 then + io.stderr:write(distance..": not a positive number!\n") + return +end + +distance = math.floor(tonumber(distance)) +local action + if args[1] == "forward" then - robot.forward() + action = robot.forward elseif args[1] == "back" then - robot.back() -elseif args[1]=="left" then - robot.turnLeft() -elseif args[1]=="right" then - robot.turnRight() -elseif args[1]=="up" then - robot.up() -elseif args[1]=="down" then - robot.down() + action = robot.back +elseif args[1] == "left" then + action = robot.turnLeft +elseif args[1] == "right" then + action = robot.turnRight +elseif args[1] == "up" then + action = robot.up +elseif args[1] == "down" then + action = robot.down else io.stderr:write(args[1]..": not a valid direction!\n") return end + +for i = 1,distance do + action() +end