Barawik_ 0 Опубликовано: 25 июля, 2018 Добрый день. Можете кто-то написать маленький код, для 5 кнопок, с возможностью обновления того отдела на который он ведет. На подобии os.execute("wget -f https://pastebin.com/raw/....... te.lua") os.sleep(1) os.execute("te") что-то так, и располагалось на 1 строке) размеры програмки: 72x30, примерное расположение кнопок 27 строка))) Исходный код: local c = require('component') local u = require('unicode') local t = require('term') local e = require('event') local shell = require('shell') local g = c.gpu local color = g.setForeground local w,h = 72,30 -- разрешение экрана local outer = 1 -- отступ от строк local frases = { -- таблица с фразами и цветовой разметкой '&c Магазин 3Д Моделей', '&6Внеземные &aОбычные &fДекор', ' ', '&6Эндермен - 6 &aКурятин - 3 &fФонарь - 2,5', '&6Ифрит - 5 &a Оцелотик - 3 &fЦветок - 2,5', '&6Мимик - 25 &a Волчонок - 3 &fФонтан - 40', '&6Голем - 10 &a Коровка - 3 &fХаммер - 40', '&6Кровавый алтарь - 40 &fПосох силы - 15', ' &fДиван - 15', ' &fКубик Рубика - 2,5', ' &fКоролевский трон - 4', ' &fТанк - 2,5', ' &fУнитак - 4', ' &fРаковина - 4', ' &fСтолик - 2,5', ' ', ' ', ' ', ' ', '&aЦены указаны в игровой валюте - Эмиральды', '&f=====================================================================', '&bВопросы по разработке моделей к &aMag010 &bили &3Xyanide_ &b(владельцы)', ' &aРазработка программы &f- &c Barawik_&a(ленивый не будет вам писать)', '&6Тут могла быть ваша реклама! Круто, да? Хочешь? Не будет. Ну или нет?' } local colorsTable = { ['&0'] = function() color(0x000000) end, ['&1'] = function() color(0x0000AA) end, ['&2'] = function() color(0x00AA00) end, ['&3'] = function() color(0x00AAAA) end, ['&4'] = function() color(0xAA0000) end, ['&5'] = function() color(0xAA00AA) end, ['&6'] = function() color(0xFFAA00) end, ['&7'] = function() color(0xAAAAAA) end, ['&8'] = function() color(0x555555) end, ['&9'] = function() color(0x5555FF) end, ['&a'] = function() color(0x55FF55) end, ['&b'] = function() color(0x55FFFF) end, ['&c'] = function() color(0xFF5555) end, ['&d'] = function() color(0xFF55FF) end, ['&e'] = function() color(0xFFFF55) end, ['&f'] = function() color(0xFFFFFF) end } function printFormatText(x,y,text) local crit = '&' local corr = 0 for i = 1, u.len(text) do local letter = u.sub(text,i,i) if letter == crit then pcall(colorsTable[u.sub(text,i,i+1):lower()]) corr = corr + 2 skip = true else if not skip then g.set(x+i-corr,y,letter) end skip = false end end end function getX(frase) local len = u.len(frase:gsub('&.','')) local x = w/2 - len/2 return math.floor(x) end t.clear() g.setResolution(w,h) for i = 1, #frases do local frase = frases[i] printFormatText(getX(frase),outer*i,frase) end color(0xFFFFFF) g.set(1,25,'========================================================version 0.1====') color(0xFFFFFF) while true do local _,_,_,curY = e.pull('touch') if curY == 25 then os.execute("wget -f https://pastebin.com/raw/mK3KkRJB test.lua") os.sleep(3) os.execute("test") end end t.clear() Можете что-то исправить чтобы работало) + пробывал вашу схему, не работаит( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Гость Kartze Опубликовано: 25 июля, 2018 юзай какую-нибудь из существующих библиотеку для гуёв, не создавай монстров. на форуме их несколько штук на любой вкус. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asior 586 Опубликовано: 25 июля, 2018 (изменено) http://computercraft.ru/topic/1155-gui http://computercraft.ru/topic/2020-psevdograficheskie-interfeisy-v-opencomputers-ch2-knopki/ немного лень что-то писать, попробуй это. Должно помочь разобраться. Изменено 25 июля, 2018 пользователем Asior Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Barawik_ Автор вопроса 0 Опубликовано: 25 июля, 2018 юзай какую-нибудь из существующих библиотеку для гуёв, не создавай монстров. на форуме их несколько штук на любой вкус. Я новичек, пробывал, не получается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Barawik_ Автор вопроса 0 Опубликовано: 25 июля, 2018 http://computercraft.ru/topic/1155-gui http://computercraft.ru/topic/2020-psevdograficheskie-interfeisy-v-opencomputers-ch2-knopki/ немного лень что-то писать, попробуй это. Должно помочь разобраться. Попробывал, сильно сложно, начинал разбиратся, сломал голову... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Гость Kartze Опубликовано: 25 июля, 2018 и ты, не осилив в целом изичные либы, пытаешься свою написать. как думаешь, каковы твои шансы на успех?я так понимаю, ты делаешь магазин 3D-моделек, который будет автоматически печатать и выдавать пользователю модельку за какие-то деньги? короче, не ломай пока себе голову интерфейсами. сделай, например, вывод списка моделек. к каждой модельке прилагается свой внутренний ID, который отображается рядом с названием и ценником. если пользователь хочет приобрести некую модель "легущька" за 3.5 условных единиц, то он должен ввести в программу ID этой модели. какой-то магией условные единицы спишутся со счета покупателя, и ему распечатается моделька. внешне это будет выглядеть примерно так: Магазин 3D-моделек Ивана Ивановича Доступные модели: ID | Название - Цена(у.е.) ---|-------------------------------- 00 | легущька - 3.5 01 | асфальтоукладчик - 9 02 | ... 13 | чайник рассела - over9000 ------------------------------------ Введите ID нужной вам модели, чтобы заказать ее: >> _ список делаешь очень просто: что-то типа print(models[id][id].." | "..models[id][label].." - "..models[id][price]) заключаешь в for, бегающий по массиву models, в котором перечислены все модельки. да простят меня магистры за извращения. в любом случае за тебя никто писать софтину не собирается, тебе нужно самому в этом разобраться. удачи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Barawik_ Автор вопроса 0 Опубликовано: 26 июля, 2018 @@Kartze Мне не нужна авто-печать) У меня есть комнатки, в которые заходишь. фигуры печатаются, ты платишь и тебе выпадает МЭ Ячейка. Вот.. Мне нужен просто прайс. Начальный экран, потом кнопки внизу по типу thermal, ic2, ex nihilio, ae 2, ресурсы, прочее, и т.д . мне можно просто 1 кнопку, объяснить что где, я с остальными сам попробую разобраться) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Гость Kartze Опубликовано: 26 июля, 2018 @@Barawik_, хых, ты сам не сказал, шо за программу пилишь. а по поводу кнопки - да екарный бабай, берешь какой-нибудь эвент.пулл на touch, привязываешь где-то обработку таких-то действий в зависимости от координат нажатия - профит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asior 586 Опубликовано: 26 июля, 2018 Попробывал, сильно сложно, начинал разбиратся, сломал голову... Ну даже незнаю. там вроде все просто пошагово описано что где, куда и как. Попробуй пройти статью потихоньку набирая весь код, что предлагает Doob. Там просто нереально сильно все разжевано. Но коль не понятно, отделяю оттуда только 1 кнопку и даю тебе её код. Незнаю как это поможет. local gpu = require('component').gpu local computer = require('computer') local pull_e = require('event').pull local W, H = gpu.getResolution() local un = require("unicode") local b_color, f_color = gpu.getBackground(), gpu.getForeground() local tButtons = { { visible = false, X = 1, --местоположение кнопки по Х Y = 5, --местоположение кнопки по У W = 13, --длина кнопки (длина названия кнопки + 3) H = 1, --ширина кнопки color = 0x008800, --цвет фона кнопки textColor = 0xffff00, --цвет текста кнопки text = 'Йа кнопофка', --текст кнопки action = function() --функция с командами которые выполняются по нажатию, в этом примере простой вывод сообщения gpu.setForeground(0xffffff) gpu.set(1, 1, 'А я её действие') end } } local function drawButton(n) -- функция рисования кнопки gpu.setBackground(tButtons[n].color) -- задаем цвет кнопки gpu.setForeground(tButtons[n].textColor) -- задаем цвет текста gpu.fill(tButtons[n].X, tButtons[n].Y, tButtons[n].W, tButtons[n].H, ' ') -- заливаем область gpu.set(tButtons[n].X+(tButtons[n].W/2)-(un.len(tButtons[n].text)/2), tButtons[n].Y+(tButtons[n].H/2), tButtons[n].text) -- пишем текст по центру end local function toggleVisible(n) -- переключение видимости кнопки if tButtons[n].visible then -- если кнопка видима tButtons[n].visible = false -- отключаем gpu.setBackground(b_color) -- берем цвет фона, полученный при старте программы gpu.fill(tButtons[n].X, tButtons[n].Y, tButtons[n].W, tButtons[n].H, ' ') -- стираем кнопку else -- если кнопка не активна tButtons[n].visible = true -- активируем drawButton(n) -- запускаем отрисовку end end local function blink(n) -- мигание кнопки tButtons[n].color, tButtons[n].textColor = tButtons[n].textColor, tButtons[n].color -- меняем местами цвета фона и текста drawButton(n) -- отрисовываем кнопку os.sleep(0.09) -- делаем задержку tButtons[n].color, tButtons[n].textColor = tButtons[n].textColor, tButtons[n].color -- меняем цвета обратно drawButton(n) -- перерисовываем кнопку end gpu.fill(1, 1, W, H, ' ') -- очищаем экран for i = 1, #tButtons do toggleVisible(i) -- активируем каждую кнопку end while true do local tEvent = {pull_e('touch')} -- ждем клика for i = 1, #tButtons do -- перебираем все кнопки if tButtons[i].visible then -- если кнопка активна if tEvent[3] >= tButtons[i].X and tEvent[3] <= tButtons[i].X+tButtons[i].W and tEvent[4] >= tButtons[i].Y and tEvent[4] <= tButtons[i].Y+tButtons[i].H then -- если клик произведен в пределах кнопки blink(i) -- мигнуть кнопкой tButtons[i].action() -- выполнить назначенный код break end end end end P.s Пришлось подтянуть библиотеку юникода еще, а то с русскими названиями букв оно работает ужасно криво. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Barawik_ Автор вопроса 0 Опубликовано: 28 июля, 2018 (изменено) Ну даже незнаю. там вроде все просто пошагово описано что где, куда и как. Попробуй пройти статью потихоньку набирая весь код, что предлагает Doob. Там просто нереально сильно все разжевано. Но коль не понятно, отделяю оттуда только 1 кнопку и даю тебе её код. Незнаю как это поможет. ... Благодарю, но ваш код не очень, из-за того что при внедрении в мою программу либо видно только сам текст программы, кнопок не видно, либо только кнопки, но не видно программы. Помогите, буду рад c: Изменено 28 июля, 2018 пользователем eu_tomat сокращение цитаты Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 29 июля, 2018 Благодарю, но ваш код не очень, из-за того что при внедрении в мою программу либо видно только сам текст программы, кнопок не видно, либо только кнопки, но не видно программы. Помогите, буду рад c: А что за текст программы? Код, что ли? Но зачем видеть код во время исполнения программы? И, вообще, если какая-то проблема в коде, конечно, можно по симптомам иногда догадаться, в чём проблема, но если на форум писаться, то вставляйте код, пожалуйста. Здесь кристальных шаров нету, насколько мне известно. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Добрый день. Можете кто-то написать маленький код, для 5 кнопок, с возможностью обновления того отдела на который он ведет. На подобии
что-то так, и располагалось на 1 строке) размеры програмки: 72x30, примерное расположение кнопок 27 строка))) Исходный код:
Можете что-то исправить чтобы работало) + пробывал вашу схему, не работаит(
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах