MyOnAsSalat 28 Опубликовано: 10 мая, 2015 (изменено) Всем ку, благодоря бессоной ночи изучение api opencomputers написал прогу для контроля за роботом через планшет. Благодаря возможно изменения разрешения удалось свернуть окно для обзора за роботом, сделать это можно по кнопке "R". Для работы этого приложения на компьютер или планшет нужно установить видеокарту карту 2 уровня или выше (из-за изменения разрешения) , и вайфай карту. На робота только вайфай карту. Из функционала доступно: Все функции движения Все swing() Все use() И моя любимая команда для робота вида : os.execute(msg)где msg это то что вы вписали при вызове отправки шела: Протокол передачи написан настолько по индусски и небезопастно, что для работы вам достаточно просто запустить эти программы на роботе и планшете. Вашего робота могут просто упереть этой же программой XD. Если вы одобрите эту программу, то я допилю её. Код для планшета: --tab local component = require("component") local term = require("term") local event = require("event") local m = component.modem --component.gpu.setResolution(1,1) term.clear() print("--------------------------------------------------------------") print("|Движение: Вперёд= ↑; Назад = ↓; Вниз = ctrl; Вверх = shift; |") print("|Поворот: Влево = ←; Вправо →; Выход из программы = '0' |") print("|Shell = 'O' - передать аргумент shell робота; |") print("|Левый клик: Вперёд = space; Вверх = 'E'; Вниз = 'D' |") print("|Правый клик: Вперёд = enter; Вверх = 'W'; Вниз = 'S' |") print("|Сворачивание окна планшета для слежения за роботом = 'R' |") print("|By http://vk.com/dencraft23 for http://computercraft.ru/ |") print("--------------------------------------------------------------") m.open(23) sr = 1 while true do _,_,key1,key2 = event.pull("key_down") z = key2 print(z) if (z==19) then if (sr==1) then term.clear() component.gpu.setResolution(2,2) sr = 0 else component.gpu.setResolution(80,25) print("--------------------------------------------------------------") print("|Движение: Вперёд= ↑; Назад = ↓; Вниз = ctrl; Вверх = shift; |") print("|Поворот: Влево = ←; Вправо →; Выход из программы = '0' |") print("|Shell = 'O' - передать аргумент shell робота; |") print("|Левый клик: Вперёд = space; Вверх = 'E'; Вниз = 'D' |") print("|Правый клик: Вперёд = enter; Вверх = 'W'; Вниз = 'S' |") print("|Сворачивание окна планшета для слежения за роботом = 'R' |") print("|By http://vk.com/dencraft23 for http://computercraft.ru/ |") print("--------------------------------------------------------------") sr = 1 end end if (z==200) then m.broadcast(66, "f") end if (z==208) then m.broadcast(66, "b") end if (z==203) then m.broadcast(66, "l") end if (z==205) then m.broadcast(66, "r") end if (z==42) then m.broadcast(66, "u") end if (z==29) then m.broadcast(66, "d") end if (z==57) then m.broadcast(66, "swing") end if (z==28) then m.broadcast(66, "use") end if (z==17) then m.broadcast(66, "useup") end if (z==31) then m.broadcast(66, "usedown") end if (z==18) then m.broadcast(66, "swingup") end if (z==32) then m.broadcast(66, "swingdown") end if (z==11) then m.broadcast(66,"exit") shell.execute("sh") end if (z==24) then m.broadcast(66,"shell") os.sleep(1) print("shell:") shellr = io.read() m.broadcast(66,shellr) end end end Код для робота: --robot term = require("term") r = require("robot") local component = require("component") local event = require("event") local m = component.modem term.clear() m.open(66) while true do local _, _, _, _, _, msg = event.pull("modem_message") z = tostring(msg) if (z=="f") then r.forward() end if (z=="b") then r.back() end if (z=="l") then r.turnLeft() end if (z=="r") then r.turnRight() end if (z=="u") then r.up() end if (z=="d") then r.down() end if (z=="swing") then r.swing() end if (z=="useup") then r.useUp() end if (z=="usedown") then r.useDown() end if (z=="swingup") then r.swingUp() end if (z=="swingdown") then r.swingDown() end if (z=="use") then r.use() end if (z=="exit") then shell.execute("sh") end if (z=="shell") then local _, _, _, _, _, msg = event.pull("modem_message") os.execute(msg) end end Изменено 10 мая, 2015 пользователем MyOnAsSalat 7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
KelLiN 49 Опубликовано: 10 мая, 2015 По моему пониманию можно не просто угнать чужого робота, а все роботы в зоне действия передатчика будут ездить одинаково. Чуть пораньше можно было бы сделать парад к 9 мая мимо спавна. 5 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
davial 1 972 Опубликовано: 10 мая, 2015 По моему пониманию можно не просто угнать чужого робота, а все роботы в зоне действия передатчика будут ездить одинаково. Чуть пораньше можно было бы сделать парад к 9 мая мимо спавна. А роботы Алекса - парад принимали Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 10 мая, 2015 А роботы Алекса - парад принимали Дааа, роботы красивой коробочкой 20 на 20 человек будут ходить) MyOnAsSalat, программку нужно оптимизировать немного. Сеть сделать толковую, по связанной карте или по МАС, и миллион ифов убирать. Или сделать хотя бы if <...> then <...> elseif <...> then <...> end а то получается, наверно, что программка никогда не прерывает if конструкцию, если нашла ТРУ условие, а проверяет абсолютно все ифы всегда, и не важно, что перед этим уже какое-то требуемое условие выполнилось, лишние телодвижения получаются. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
MyOnAsSalat Автор темы 28 Опубликовано: 10 мая, 2015 Дааа, роботы красивой коробочкой 20 на 20 человек будут ходить) MyOnAsSalat, программку нужно оптимизировать немного. Сеть сделать толковую, по связанной карте или по МАС, и миллион ифов убирать. Или сделать хотя бы if <...> then <...> elseif <...> then <...> end а то получается, наверно, что программка никогда не прерывает if конструкцию, если нашла ТРУ условие, а проверяет абсолютно все ифы всегда, и не важно, что перед этим уже какое-то требуемое условие выполнилось, лишние телодвижения получаются. объясни как от ифоф избавится.и дай связанных карт)) они жуть дорогие)) прогу буду улучшать, я ей добывая алмы в лаве и обсидиан копаю, 15 минут бур разряжен на 15%, а у меня 8 стаков обсидиана. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ECS 1 903 Опубликовано: 17 ноября, 2015 (изменено) if (z=="use") then r.use() end if (z=="exit") then shell.execute("sh") end Ифы, ифы, ифы-ы-ы! Больше ифов богу ифов и элсифов! Но если серьезно, то прога-то хороша, понравилась идейка сворачивать экран в один мини-пиксель, удобно наблюдать. Но рекомендую все же сделать что-то наподобие этого, чтобы тебя тут живьем не сожрали: Изменено 17 ноября, 2015 пользователем ECS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 17 ноября, 2015 (изменено) Я предпочитаю делать так: local actions = { f = robot.forward, b = robot.back, -- и т.д. } while true do _,_,_,_,_,message = event.pull("modem_message") if actions[message] then actions[message]() end end Люблю Луа за его таблицы. Изменено 17 ноября, 2015 пользователем Zer0Galaxy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ECS 1 903 Опубликовано: 17 ноября, 2015 (изменено) Я предпочитаю делать так: Ага, так еще лучше. Циклы сосут. Изменено 17 ноября, 2015 пользователем ECS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
newbie 1 971 Опубликовано: 8 января, 2016 (изменено) Вдохновившись комментариями была создана армия роботов, которая активно настроена захватить спавн и уже сделала первый налет на него) http://coub.com/view/a87st Изменено 8 января, 2016 пользователем newbie 5 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 722 Опубликовано: 9 января, 2016 (изменено) Вдохновившись комментариями была создана армия роботов, которая активно настроена захватить спавн и уже сделала первый налет на него) А у меня есть прога, чтобы робот исполнял "Имперский марш". Изменено 9 января, 2016 пользователем Fingercomp Удаляйте видяхи и картинки в цитатах Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
JaggerDer 90 Опубликовано: 11 января, 2016 То же похвастаюсь. Сделал прогу, чтобы управлять роботом, которая делает карту местности и позволяет контролить инвентарь и отдавать простейшие команды роботу. Но отчего-то мне лень ее доделывать, очень лень.На планшет та же программа, но более мелкий интерфейс и другие цвета. А еще есть шняжка, которая привязывает робота к компу по разрешению. 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 722 Опубликовано: 11 января, 2016 (изменено) Вот имперский марш который я написал изучая ноты: http://pastebin.com/K1VXCNSw (может быть и не весь, а только отрывок, но всё же рабочий) Запускать на любом компе/роботе/планшете с любой комплектацией. (наличие звуковой платы не требует) Изменено 11 января, 2016 пользователем qwertyMAN 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 11 января, 2016 Мильйон note.play? А компактней ни как? 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 722 Опубликовано: 11 января, 2016 Мильйон note.play? А компактней ни как? А какая разница? Мне кажется важнее читаемость кода, чем всякие переменные в одну букву. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 11 января, 2016 Хм. Я про цикл Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 11 января, 2016 А какая разница? Мне кажется важнее читаемость кода, чем всякие переменные в одну букву. Программа игралка должна быть программой игралкой универсальной, которая твою и любую другую музяку парсит и играет. А музон должен лежать отдельно в файлике структурированном или табле какой-то, с какой-то разметкой, музыкальными признаками, тегами припева 2 или 3 раза, длительностью нот и прочее и т.п.. А иначе если вдруг захочется послушать песни (или написать куплет) Александры Пахмутовой, твою прогу нужно будет выкинуть к чертям и писать новую, так ведь? А любое написание кода, который (или хотя бы его часть) нельзя использовать повторно где-то - это бесполезная трата времени и сил. А то похоже, что ты микруху для тостера прошиваешь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 722 Опубликовано: 12 января, 2016 Программа игралка должна быть программой игралкой универсальной, которая твою и любую другую музяку парсит и играет. А музон должен лежать отдельно в файлике структурированном или табле какой-то, с какой-то разметкой, музыкальными признаками, тегами припева 2 или 3 раза, длительностью нот и прочее и т.п.. А иначе если вдруг захочется послушать песни (или написать куплет) Александры Пахмутовой, твою прогу нужно будет выкинуть к чертям и писать новую, так ведь? А любое написание кода, который (или хотя бы его часть) нельзя использовать повторно где-то - это бесполезная трата времени и сил. А то похоже, что ты микруху для тостера прошиваешь. Пробовал разобраться с форматом .abc, но потом бросил и написал вручную. Очень уж хотелось послушать что нибудь от робота. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alexresh 0 Опубликовано: 12 января, 2016 Залей на pastebin, так будет гораздо удобнее, чем копировать отсюда Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nazik_VN 0 Опубликовано: 13 января, 2016 Нужно сделать куб полый внутри из черепашек, получится броня + возможность атаковать)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах