Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ----------------------------------------------------
- -- Универсальная многоцелевая программа --
- -- для ручного управления роботом с планшета! --
- -- проект http://computercraft.ru --
- -- 2015, © AlexCC --
- ----------------------------------------------------
- ---------------------TABLET-------------------------
- local event = require('event')
- local term = require('term')
- local keyboard = require('keyboard')
- local computer = require('computer')
- local serial = require('serialization')
- local com = require('component')
- local gpu = com.gpu
- if com.isAvailable('tunnel') then
- tun = com.getPrimary('tunnel'), true
- else
- print('ERROR! Связанная карта не обнаружена!')
- print ('Программа завершена.')
- os.exit()
- end
- local x_max, y_max = gpu.maxResolution()
- local full_scr = false
- local function sendData(...)
- local data = serial.serialize({...})
- tun.send(data)
- end
- local function infoView(data,x,y,title)
- gpu.setResolution(x,y)
- term.clear()
- gpu.setForeground(0xffb600)
- print(title)
- gpu.setForeground(0xffffff)
- for i=2, #data do
- print(data[i])
- end
- gpu.setForeground(0xffb600)
- term.write(" Для возврата нажмите H")
- full_scr = false
- end
- local function exitProgramm()
- gpu.setForeground(0xffffff)
- gpu.setBackground(0x000000)
- gpu.setResolution(80, 25)
- term.clear()
- print('PROGRAM STOP! Goodbay!')
- os.exit()
- end
- local function helpView()
- if not full_scr then
- term.clear()
- gpu.setResolution(70,28)
- full_scr = true
- gpu.setBackground(0x3c3c3c)
- gpu.fill(1,1,70,1,' ')
- gpu.setForeground(0xffffff)
- gpu.set(19,1, "<<< СХЕМА УПРАВЛЕНИЯ РОБОТОМ >>>")
- gpu.setBackground(0x000000)
- gpu.setForeground(0x5a5a5a)
- gpu.set(5,3, "[I]-ЛКМ ↑ [O]- ПКМ ↑ [P]- shift ПКМ ↑")
- gpu.set(5,5, "[J]-ЛКМ ↓ [K]- ПКМ ↓ [L]- shift ПКМ ↓")
- gpu.setForeground(0xff0000)
- gpu.set(5,4, "[Q]-ЛКМ [E]- ПКМ [R]- shift ПКМ")
- gpu.setForeground(0xffb600)
- gpu.set(24,4, "↑")
- gpu.set(23,5, "[w]")
- gpu.set(18,6, "←[A] [D]→")
- gpu.set(23,7, "[S] [H]- спрятать/показать схему")
- gpu.set(2,8, "[L-Shift]- Вверх ↓ [Y]- сменить инструмент")
- gpu.set(2,9, "[L-Control]- Вниз [M]- не активна (резерв)")
- gpu.setForeground(0x00ff00)
- gpu.set(2,10, "[1] - ВЫБРОСИТЬ/ВЫЛОЖИТЬ (перед собой) ВСЁ и выбрать 1-й слот")
- gpu.set(2,11, "[2] - ПОДОБРАТЬ предметы (нужен магнит), собирает, сколько сможет")
- gpu.set(2,12, "[3] - ВЗЯТЬ из сундука СВЕРХУ, 1 такт")
- gpu.set(2,13, "[4] - ВЗЯТЬ из сундука СПЕРЕДИ, 1 такт")
- gpu.set(2,14, "[5] - ВЗЯТЬ из сундука СНИЗУ, 1 такт")
- gpu.set(2,15, "[6] - ЧТО вокруг МЕНЯ?")
- gpu.set(2,16, "[7] - ВЫБРАТЬ СЛОТ № ...")
- gpu.set(2,17, "[8] - ДРОП активного слота")
- gpu.set(2,18, "[9] - покажи СТАТИСТИКУ!")
- gpu.set(2,19, "[0] - ВЫЙТИ из программы!")
- gpu.set(2,20, "[Z] - ПОСТАВИТЬ блок ВВЕРХ")
- gpu.set(2,21, "[X] - ПОСТАВИТЬ блок ПЕРЕД СОБОЙ")
- gpu.set(2,22, "[C] - ПОСТАВИТЬ блок ПОД СОБОЙ")
- gpu.set(2,23, "[F] - ВКЛ/ВЫКЛ излучение редстоуна (сила 15, В, П, Н)")
- gpu.set(2,24, "[N] - сменить Неон!")
- gpu.set(2,25, "[T] - отправить ТЕКСТ на ТАБЛИЧКУ!")
- gpu.set(2,26, "[V] - ВКЛ/ВЫКЛ динамический показ обновления инвентаря!")
- gpu.setForeground(0x3c3c3c)
- gpu.set(10,28, "< Проект http://computercraft.ru, 2015, © AlexCC >")
- else
- term.clear()
- gpu.setResolution(1,1)
- gpu.setForeground(0xffb600)
- term.write("H")
- full_scr = false
- end
- end
- local function changeSlot(name_key)
- gpu.setResolution(25,1)
- gpu.setForeground(0xffffff)
- gpu.setForeground(0xffb600)
- term.clear()
- term.write(" Введите номер слота: ")
- local slot = io.read()
- sendData(name_key, slot)
- term.clear()
- term.write(' Для возврата нажмите H')
- full_scr = false
- end
- local function singSetText(name_key)
- gpu.setResolution(50,3)
- gpu.setForeground(0xffffff)
- gpu.setForeground(0xffb600)
- term.clear()
- print('Введите тект! Пример: Привет, Петя!')
- print('Используйте обратный слеш n для переноса строк.')
- local text = io.read()
- sendData(name_key, text)
- term.clear()
- gpu.setResolution(25,1)
- term.write(' Для возврата нажмите H')
- full_scr = false
- end
- local list = {
- --движение робота
- ['w'] = function(name_key) sendData(name_key) end,
- ['s']= function(name_key) sendData(name_key) end,
- ['a']= function(name_key) sendData(name_key) end,
- ['d']= function(name_key) sendData(name_key) end,
- ['lshift']= function(name_key) sendData(name_key) end,
- ['lcontrol']= function(name_key) sendData(name_key) end,
- --дейстия сверху
- ['i']= function(name_key) sendData(name_key) end,
- ['o']= function(name_key) sendData(name_key) end,
- ['p']= function(name_key) sendData(name_key) end,
- --дейстия спереди
- ['q']= function(name_key) sendData(name_key) end,
- ['e']= function(name_key) sendData(name_key) end,
- ['r']= function(name_key) sendData(name_key) end,
- --дейстия снизу
- ['j']= function(name_key) sendData(name_key) end,
- ['k']= function(name_key) sendData(name_key) end,
- ['l']= function(name_key) sendData(name_key) end,
- --======команды 0-9=================
- --ВЫБРОСИТЬ ВСЕ и выбрать 1-й слот
- ['1']= function(name_key) sendData(name_key) end,
- ----собрать весь дроп с земли, пока могу это делать!
- ['2']= function(name_key) sendData(name_key) end,
- -- ВЗЯТЬ из сундука СВЕРХУ
- ['3']= function(name_key) sendData(name_key) end,
- -- ВЗЯТЬ из сундука СПЕРЕДИ
- ['4']= function(name_key) sendData(name_key) end,
- -- ВЗЯТЬ из сундука СНИЗУ
- ['5']= function(name_key) sendData(name_key) end,
- ['6']= function(name_key) sendData(name_key) end,
- ['7']= function(name_key) changeSlot(name_key) end,
- ['8']= function(name_key) sendData(name_key) end,
- ['9']= function(name_key) sendData(name_key) end,
- ['0']= function(name_key) exitProgramm() end,
- ['f']= function(name_key) sendData(name_key) end,
- ['z']= function(name_key) sendData(name_key) end,
- ['x']= function(name_key) sendData(name_key) end,
- ['c']= function(name_key) sendData(name_key) end,
- ['n']= function(name_key) sendData(name_key) end,
- ['v']= function(name_key) sendData(name_key) end,
- ['y']= function(name_key) sendData(name_key) end,
- ['t']= function(name_key) singSetText(name_key) end,
- -- паказать схему управления
- ['h']= function() helpView() end,
- --резерв, не активна (чанклоадер)
- ['m']= function(name_key) sendData(name_key) end,
- }
- --почистить экран
- term.clear()
- --рисуем схему управления
- list['h']()
- -- цикл для кнопочек (переделать потом на parallel API)
- while true do
- e, adr, char, code, nick, msg = event.pull()
- if e =="key_down" then
- os.sleep(0.2)
- name_key = tostring(keyboard.keys[code])
- --print(name_key)
- if list[name_key] then
- list[name_key](name_key)
- end
- elseif e =='modem_message' then
- data = serial.unserialize(msg)
- if data[1] =='scan' then
- infoView(data,30,8,' Результаты сканирования:')
- elseif data[1] =='infoRobot' then
- y = #data+1
- if y > y_max then y = y_max end
- infoView(data,60, y,' Информация о роботе:')
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement