diff --git a/apps/neural.lua b/apps/neural.lua new file mode 100644 index 0000000..504e233 --- /dev/null +++ b/apps/neural.lua @@ -0,0 +1,46 @@ +_G.requireInjector(_ENV) + +local GPS = require('gps') +local Util = require('util') +local Peripheral = require('peripheral') +local Point = require('point') + +local p = Peripheral.lookup('594://name/neuralInterface') + +_G._p = p +if not p then + error('failed to connect') +end + +local lpt = nil + +while true do + local pt = GPS.locate(2) + + if not pt then + print('No GPS') + else + local gpt = Util.shallowCopy(pt) + if pt and lpt and Point.same(pt, lpt) then + -- havent moved + print('no move') + else + if not lpt then + gpt.x = gpt.x - 2 + else + local dx = lpt.x - pt.x + local dz = lpt.z - pt.z + local angle = math.atan2(dx, dz) + gpt.x = pt.x + 2.5 * math.sin(angle) + gpt.z = pt.z + 2.5 * math.cos(angle) + end + lpt = pt + local s, m = p.goTo(gpt.x, gpt.y + 1, gpt.z) + if not s then + print(m) + end + end + end + + os.sleep(.5) +end \ No newline at end of file diff --git a/apps/robotWars.lua b/apps/robotWars.lua new file mode 100644 index 0000000..1c78a49 --- /dev/null +++ b/apps/robotWars.lua @@ -0,0 +1,35 @@ +_G.requireInjector(_ENV) + +local Event = require('event') +local Util = require('util') + +local os = _G.os +local peripheral = _G.peripheral + +local ni = peripheral.find("neuralInterface") +if not ni then + error("Cannot find neuralInterface") +end + +local TARGET = 'joebodo' + +local function look(entity) + local x, y, z = entity.x, entity.y, entity.z + local pitch = -math.atan2(y, math.sqrt(x * x + z * z)) + local yaw = math.atan2(-x, z) + + ni.look(math.deg(yaw), math.deg(pitch)) +end + +Event.addRoutine(function() + while true do + local target = Util.find(ni.sense(), 'name', TARGET) + if target then + look(target) + ni.shoot() + end + os.sleep(0) + end +end) + +Event.pullEvents()