Перейти к содержимому
LeshaInc

Управление голографическим кубом

Рекомендуемые сообщения

С балды, я написал программу для управления голографический кубиком. @MyOnAsSalat сказал мне просто-так написать это. Вот что из этого вышло:

JldwtHU.png?1

Ничего не напоминает?

c3xiLa7.png?1

AsE1JPi.png?1

iOzQgvw.png?1

 

Бред, писал с балды, хрень не нужная, но вот код:

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

Немного быдлокода... Но это не важно т к проект никому не нужен

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Часть кода, взята с меня, что упрощает мне редактирование)).
Сегодня выложу апи своей проги которую очень сильно модифицировал satori по моему заказу и построраюсь добавить связь с голопроэктором.


Часть кода, взята с меня, что упрощает мне редактирование)).
Сегодня выложу апи своей проги которую очень сильно модифицировал satori по моему заказу и построраюсь добавить связь с голопроэктором.

_,_,key1,key2 = event.pull("key_down")
+ к пруфу key1 принимает просто так))

Изменено пользователем MyOnAsSalat

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Лабиринт - это уже интересно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Думаю написать удобное API для линий, коробок и т.д. Иначе я запарюсь по отдельности воксели приписывать.

 

Ещё наверно будет геморрой с коллизией, но... Яжпрограммист на ИТ, что нибудь придумаю.

Изменено пользователем LeshaInc

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Думаю написать удобное API для линий, коробок и т.д. Иначе я запарюсь по отдельности воксели приписывать.

 

Ещё наверно будет геморрой с коллизией, но... Яжпрограммист на ИТ, что нибудь придумаю.

 

Заведи двухмерный массивчик (трехмерный, если лабиринт по хардкору в 3D :D ), затем сгенери в нем лабиринт любым понравившимся алгоритмом, затем кинь этот массив функции отрисовки.

 

Типа того (псевдокод, возможны очепятки):

-- это - наш массив и обертки 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

;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Заведи двухмерный массивчик (трехмерный, если лабиринт по хардкору в 3D :D ), затем сгенери в нем лабиринт любым понравившимся алгоритмом, затем кинь этот массив функции отрисовки.

 

Типа того (псевдокод, возможны очепятки):

-- это - наш массив и обертки 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
;)

Ну... Я попробую. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А вообще граждане хватит валять дурака! Пилите 3д ТЕТРИС! Олдфаги(далеко не все) меня поддержат, крутейшая вещь!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На днях тоже сделал точно такую же бегалку курсором. Только у меня она для редактора моделей 3д принтера. Строю фигуры и потом их на печать. Сам процесс уже наблюдали Фингер и Асумонстр. Результат выглядит примерно так:


Ресов хватило только на люк с текстурой командного блока:


Код сырой не стал выкладывать. Кому интересно - вэлкам ту май с9 https://ide.c9.io/kellin/kt_projects 
Будущее за таким редактором. Только вот нам бы цветов побольше, а не 3..post-11895-0-59992200-1431986386.pngpost-11895-0-76048100-1431986500.png

post-11895-0-59992200-1431986386_thumb.png

post-11895-0-76048100-1431986500_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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.
Рад что фантазия то у всех есть и мыслим почти в одинаковых направлениях, проще работать вместе будет.

Изменено пользователем KelLiN

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...