LeshaInc 625 Опубликовано: 12 мая, 2015 С балды, я написал программу для управления голографический кубиком. @MyOnAsSalat сказал мне просто-так написать это. Вот что из этого вышло: Ничего не напоминает? Бред, писал с балды, хрень не нужная, но вот код: local holo = require("component").hologram local event = require("event") local gpu=require("component").gpu local term=require("term") local x = 10 local y = 10 local z = 10 local ra = true holo.setScale(3) function copy() term.clear() print("---------------------------------------------------------------") print("| HoloCube 1.0 |") print("| Вперед: W Назад: S Вправо: D Влево: A Вверх: R Вниз: F |") print("| Свернуть/Развернуть: Q Выход: E |") print("| By Алексей Никашкин For computercraft.ru 1Ridav (c) |") print("---------------------------------------------------------------") end copy() while true do if ra==false then gpu.setResolution(1,1) else gpu.setResolution(80,30) end holo.clear() holo.set(x,y,z,true) _,_,key1,key2 = event.pull("key_down") q = key2 if (q==17) then x=x+1 elseif (q==31) then x=x-1 elseif (q==19) then y=y+1 elseif (q==33) then y=y-1 elseif (q==32) then z=z+1 elseif (q==30) then z=z-1 elseif (q==18) then os.exit() elseif (q==16) then if ra == true then ra=false elseif ra==false then ra=true end end end Немного быдлокода... Но это не важно т к проект никому не нужен 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
DJ_Soft 0 Опубликовано: 12 мая, 2015 Прикольно. Сделать еще лабиринт вокруг кубика и играть Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
MyOnAsSalat 28 Опубликовано: 13 мая, 2015 (изменено) Часть кода, взята с меня, что упрощает мне редактирование)).Сегодня выложу апи своей проги которую очень сильно модифицировал satori по моему заказу и построраюсь добавить связь с голопроэктором. Часть кода, взята с меня, что упрощает мне редактирование)).Сегодня выложу апи своей проги которую очень сильно модифицировал satori по моему заказу и построраюсь добавить связь с голопроэктором. _,_,key1,key2 = event.pull("key_down")+ к пруфу key1 принимает просто так)) Изменено 13 мая, 2015 пользователем MyOnAsSalat Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 541 Опубликовано: 13 мая, 2015 Лабиринт - это уже интересно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc Автор темы 625 Опубликовано: 13 мая, 2015 (изменено) Думаю написать удобное API для линий, коробок и т.д. Иначе я запарюсь по отдельности воксели приписывать. Ещё наверно будет геморрой с коллизией, но... Яжпрограммист на ИТ, что нибудь придумаю. Изменено 13 мая, 2015 пользователем LeshaInc Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 13 мая, 2015 Думаю написать удобное API для линий, коробок и т.д. Иначе я запарюсь по отдельности воксели приписывать. Ещё наверно будет геморрой с коллизией, но... Яжпрограммист на ИТ, что нибудь придумаю. Заведи двухмерный массивчик (трехмерный, если лабиринт по хардкору в 3D ), затем сгенери в нем лабиринт любым понравившимся алгоритмом, затем кинь этот массив функции отрисовки. Типа того (псевдокод, возможны очепятки): -- это - наш массив и обертки get/set к нему local map = {} local function set(x, y, value) if map[x] == nil then map[x] = {} end map[x][y] = value end local function get(x, y) if map[x] == nil then return nil end return map[x][y] end -- тут генерим лабиринт -- для простоты 1 будет стеной, а 0 пустотой local function generate(...) ... end -- тут рисуем лабиринт на проектор исходя из данных массива local function render(...) for x=1 to W do for y=1 to H do holo.set(x, 1, y, get(x, y)) end end end Соответственно с коллизиями - никакого геморроя, достаточно спросить функцией get(x, y) что за "клетка" у нас по координатам (x, y). P.S. Гениальную конструкцию if ra == true then ra=false elseif ra==false then ra=true end предлагаю заменить на ra = not ra 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc Автор темы 625 Опубликовано: 14 мая, 2015 Заведи двухмерный массивчик (трехмерный, если лабиринт по хардкору в 3D ), затем сгенери в нем лабиринт любым понравившимся алгоритмом, затем кинь этот массив функции отрисовки. Типа того (псевдокод, возможны очепятки): -- это - наш массив и обертки get/set к нему local map = {} local function set(x, y, value) if map[x] == nil then map[x] = {} end map[x][y] = value end local function get(x, y) if map[x] == nil then return nil end return map[x][y] end -- тут генерим лабиринт -- для простоты 1 будет стеной, а 0 пустотой local function generate(...) ... end -- тут рисуем лабиринт на проектор исходя из данных массива local function render(...) for x=1 to W do for y=1 to H do holo.set(x, 1, y, get(x, y)) end end endСоответственно с коллизиями - никакого геморроя, достаточно спросить функцией get(x, y) что за "клетка" у нас по координатам (x, y). P.S. Гениальную конструкцию if ra == true then ra=false elseif ra==false then ra=true endпредлагаю заменить на ra = not ra Ну... Я попробую. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
artem211 428 Опубликовано: 18 мая, 2015 А вообще граждане хватит валять дурака! Пилите 3д ТЕТРИС! Олдфаги(далеко не все) меня поддержат, крутейшая вещь! 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
KelLiN 49 Опубликовано: 18 мая, 2015 На днях тоже сделал точно такую же бегалку курсором. Только у меня она для редактора моделей 3д принтера. Строю фигуры и потом их на печать. Сам процесс уже наблюдали Фингер и Асумонстр. Результат выглядит примерно так:Ресов хватило только на люк с текстурой командного блока:Код сырой не стал выкладывать. Кому интересно - вэлкам ту май с9 https://ide.c9.io/kellin/kt_projects Будущее за таким редактором. Только вот нам бы цветов побольше, а не 3.. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
KelLiN 49 Опубликовано: 18 мая, 2015 (изменено) Lesha, будешь api коробок писать, обрати внимание на то, что fill заполняет отнулевой высоты.Там нет точек куба, только углы сечения. Придется заливать попиксельно в цикле. Я часа 2 этот косяк отлавливал мутной головой в 4 утра в субботу. Уже весь код свой попереписывал с десяток раз не мог понять и заметить их недоделанный fill.На скорую руку выглядит примерно так: for i=fillStartX,fillEndX do for j=fillStartZ,fillEndZ do for k=fillStartY,fillEndY do h.set(i,k,j,2) end end end artem, я тоже про тетрис подумал тогда же.Даже сорцы breakout скачал, но ничего в них не понял. Там тонны кода. Я просто на мониторе хотел линиями рисовать как в классическом breakout.Рад что фантазия то у всех есть и мыслим почти в одинаковых направлениях, проще работать вместе будет. Изменено 18 мая, 2015 пользователем KelLiN Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах