Advertisement
Alex1979

Remoute Control Tablet [OpenComputers]

May 17th, 2015
3,678
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 9.66 KB | None | 0 0
  1. ----------------------------------------------------
  2. --       Универсальная многоцелевая программа     --  
  3. --    для ручного управления роботом с планшета!  --  
  4. --          проект http://computercraft.ru        --  
  5. --                 2015, © AlexCC                 --  
  6. ----------------------------------------------------
  7. ---------------------TABLET-------------------------
  8.  
  9. local event = require('event')
  10. local term = require('term')
  11. local keyboard = require('keyboard')
  12. local computer = require('computer')
  13. local serial = require('serialization')
  14. local com = require('component')
  15. local gpu = com.gpu
  16.  
  17.   if com.isAvailable('tunnel') then
  18.    tun = com.getPrimary('tunnel'), true
  19.   else
  20.     print('ERROR! Связанная карта не  обнаружена!')
  21.     print ('Программа завершена.')
  22.     os.exit()
  23.   end
  24.  
  25. local x_max, y_max = gpu.maxResolution()
  26. local full_scr = false
  27.  
  28. local  function sendData(...)
  29.   local data = serial.serialize({...})
  30.   tun.send(data)
  31. end
  32.  
  33. local  function infoView(data,x,y,title)
  34.           gpu.setResolution(x,y)
  35.           term.clear()
  36.           gpu.setForeground(0xffb600)
  37.           print(title)
  38.           gpu.setForeground(0xffffff)
  39.           for i=2, #data do
  40.             print(data[i])
  41.           end
  42.           gpu.setForeground(0xffb600)
  43.           term.write("   Для возврата нажмите H")
  44.           full_scr = false
  45. end
  46.  
  47. local  function exitProgramm()
  48.   gpu.setForeground(0xffffff)
  49.   gpu.setBackground(0x000000)
  50.   gpu.setResolution(80, 25)
  51.   term.clear()
  52.   print('PROGRAM STOP! Goodbay!')
  53.   os.exit()
  54. end
  55.  
  56. local  function helpView()
  57. if not full_scr then
  58.                   term.clear()
  59.                   gpu.setResolution(70,28)
  60.                   full_scr = true
  61.                   gpu.setBackground(0x3c3c3c)
  62.                   gpu.fill(1,1,70,1,' ')
  63.                   gpu.setForeground(0xffffff)
  64.                   gpu.set(19,1, "<<< СХЕМА УПРАВЛЕНИЯ РОБОТОМ >>>")
  65.                   gpu.setBackground(0x000000)
  66.                   gpu.setForeground(0x5a5a5a)
  67.                   gpu.set(5,3, "[I]-ЛКМ ↑                     [O]- ПКМ ↑     [P]- shift ПКМ ↑")
  68.                   gpu.set(5,5, "[J]-ЛКМ ↓                     [K]- ПКМ ↓     [L]- shift ПКМ ↓")
  69.                   gpu.setForeground(0xff0000)
  70.                   gpu.set(5,4, "[Q]-ЛКМ                       [E]- ПКМ       [R]- shift ПКМ")
  71.                   gpu.setForeground(0xffb600)
  72.                   gpu.set(24,4, "↑")
  73.                   gpu.set(23,5, "[w]")
  74.                   gpu.set(18,6, "←[A]     [D]→")
  75.                   gpu.set(23,7, "[S]         [H]- спрятать/показать схему")
  76.                   gpu.set(2,8, "[L-Shift]- Вверх      ↓             [Y]- сменить инструмент")
  77.                   gpu.set(2,9, "[L-Control]- Вниз                      [M]- не активна (резерв)")
  78.                   gpu.setForeground(0x00ff00)
  79.                   gpu.set(2,10, "[1] - ВЫБРОСИТЬ/ВЫЛОЖИТЬ (перед собой) ВСЁ и выбрать 1-й слот")
  80.                   gpu.set(2,11, "[2] - ПОДОБРАТЬ предметы (нужен магнит), собирает, сколько сможет")
  81.                   gpu.set(2,12, "[3] - ВЗЯТЬ из сундука СВЕРХУ, 1 такт")
  82.                   gpu.set(2,13, "[4] - ВЗЯТЬ из сундука СПЕРЕДИ, 1 такт")
  83.                   gpu.set(2,14, "[5] - ВЗЯТЬ из сундука СНИЗУ, 1 такт")
  84.                   gpu.set(2,15, "[6] - ЧТО вокруг МЕНЯ?")
  85.                   gpu.set(2,16, "[7] - ВЫБРАТЬ СЛОТ № ...")
  86.                   gpu.set(2,17, "[8] - ДРОП активного слота")
  87.                   gpu.set(2,18, "[9] - покажи СТАТИСТИКУ!")
  88.                   gpu.set(2,19, "[0] - ВЫЙТИ из программы!")
  89.                   gpu.set(2,20, "[Z] - ПОСТАВИТЬ блок ВВЕРХ")
  90.                   gpu.set(2,21, "[X] - ПОСТАВИТЬ блок ПЕРЕД СОБОЙ")
  91.                   gpu.set(2,22, "[C] - ПОСТАВИТЬ блок ПОД СОБОЙ")
  92.                   gpu.set(2,23, "[F] - ВКЛ/ВЫКЛ излучение редстоуна (сила 15, В, П, Н)")
  93.                   gpu.set(2,24, "[N] - сменить Неон!")
  94.                   gpu.set(2,25, "[T] - отправить ТЕКСТ на ТАБЛИЧКУ!")
  95.                   gpu.set(2,26, "[V] - ВКЛ/ВЫКЛ динамический показ обновления инвентаря!")
  96.                   gpu.setForeground(0x3c3c3c)
  97.                   gpu.set(10,28, "< Проект http://computercraft.ru, 2015, © AlexCC >")
  98.                 else
  99.                   term.clear()
  100.                   gpu.setResolution(1,1)
  101.                   gpu.setForeground(0xffb600)
  102.                   term.write("H")
  103.                   full_scr = false
  104.                 end
  105.  
  106. end
  107.  
  108. local  function changeSlot(name_key)
  109.               gpu.setResolution(25,1)
  110.               gpu.setForeground(0xffffff)
  111.               gpu.setForeground(0xffb600)
  112.               term.clear()
  113.               term.write(" Введите номер слота: ")
  114.               local slot = io.read()
  115.               sendData(name_key, slot)
  116.               term.clear()
  117.               term.write(' Для возврата нажмите H')
  118.               full_scr = false
  119. end
  120.  
  121. local  function singSetText(name_key)
  122.               gpu.setResolution(50,3)
  123.               gpu.setForeground(0xffffff)
  124.               gpu.setForeground(0xffb600)
  125.               term.clear()
  126.               print('Введите тект! Пример: Привет, Петя!')
  127.               print('Используйте обратный слеш n для переноса строк.')
  128.               local text = io.read()
  129.               sendData(name_key, text)
  130.               term.clear()
  131.               gpu.setResolution(25,1)
  132.               term.write(' Для возврата нажмите H')
  133.               full_scr = false
  134. end
  135.  
  136.  
  137. local list = {
  138.       --движение робота
  139.       ['w'] = function(name_key)  sendData(name_key) end,
  140.       ['s']= function(name_key) sendData(name_key) end,
  141.       ['a']= function(name_key) sendData(name_key) end,
  142.       ['d']= function(name_key) sendData(name_key) end,
  143.       ['lshift']= function(name_key) sendData(name_key) end,
  144.       ['lcontrol']= function(name_key) sendData(name_key) end,
  145.  
  146.       --дейстия сверху
  147.       ['i']= function(name_key) sendData(name_key) end,
  148.       ['o']= function(name_key) sendData(name_key) end,
  149.       ['p']= function(name_key) sendData(name_key) end,
  150.       --дейстия спереди
  151.  
  152.       ['q']= function(name_key) sendData(name_key) end,
  153.       ['e']= function(name_key) sendData(name_key) end,
  154.       ['r']= function(name_key) sendData(name_key) end,
  155.       --дейстия снизу
  156.  
  157.       ['j']= function(name_key) sendData(name_key) end,
  158.       ['k']= function(name_key) sendData(name_key) end,
  159.       ['l']= function(name_key) sendData(name_key) end,
  160.  
  161.       --======команды 0-9=================
  162.       --ВЫБРОСИТЬ ВСЕ и выбрать 1-й слот
  163.       ['1']= function(name_key) sendData(name_key) end,
  164.      
  165.       ----собрать весь дроп с земли, пока могу это делать!
  166.       ['2']= function(name_key) sendData(name_key) end,
  167.      
  168.       -- ВЗЯТЬ из сундука СВЕРХУ
  169.       ['3']= function(name_key) sendData(name_key) end,
  170.      
  171.       -- ВЗЯТЬ из сундука СПЕРЕДИ
  172.       ['4']= function(name_key) sendData(name_key) end,
  173.      
  174.       -- ВЗЯТЬ из сундука СНИЗУ
  175.       ['5']= function(name_key) sendData(name_key) end,
  176.  
  177.       ['6']= function(name_key) sendData(name_key) end,
  178.  
  179.       ['7']= function(name_key)   changeSlot(name_key) end,
  180.  
  181.       ['8']= function(name_key) sendData(name_key) end,
  182.  
  183.       ['9']= function(name_key) sendData(name_key) end,
  184.  
  185.       ['0']= function(name_key)    exitProgramm() end,
  186.  
  187.       ['f']= function(name_key) sendData(name_key) end,
  188.  
  189.       ['z']= function(name_key) sendData(name_key) end,
  190.  
  191.       ['x']= function(name_key) sendData(name_key) end,
  192.  
  193.       ['c']= function(name_key) sendData(name_key) end,
  194.  
  195.       ['n']= function(name_key) sendData(name_key) end,
  196.  
  197.       ['v']= function(name_key) sendData(name_key) end,
  198.  
  199.       ['y']= function(name_key) sendData(name_key) end,
  200.  
  201.       ['t']= function(name_key)   singSetText(name_key) end,
  202.      
  203.       -- паказать схему управления
  204.       ['h']=  function() helpView() end,
  205.  
  206.       --резерв, не активна (чанклоадер)
  207.       ['m']=  function(name_key) sendData(name_key) end,
  208. }
  209.  
  210. --почистить экран
  211. term.clear()
  212.  
  213. --рисуем схему управления
  214. list['h']()
  215.  
  216. -- цикл для кнопочек (переделать потом на parallel API)
  217. while true do
  218.   e, adr, char, code, nick, msg = event.pull()
  219.  
  220.     if e =="key_down" then
  221.       os.sleep(0.2)
  222.       name_key = tostring(keyboard.keys[code])
  223.       --print(name_key)
  224.         if list[name_key] then
  225.             list[name_key](name_key)
  226.         end
  227.     elseif e =='modem_message' then
  228.      data = serial.unserialize(msg)
  229.      if data[1] =='scan' then
  230.       infoView(data,30,8,'   Результаты сканирования:')
  231.      elseif data[1] =='infoRobot' then
  232.       y = #data+1
  233.       if y > y_max then y = y_max end
  234.       infoView(data,60, y,'   Информация о роботе:')
  235.      end
  236.     end
  237. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement