qwertyMAN
Пользователи-
Публикации
1 009 -
Зарегистрирован
-
Посещение
-
Победитель дней
47
Тип публикации
Блоги
Профили
Форум
Багтрекер
Магазин
Все публикации пользователя qwertyMAN
-
В общем вот, если кому интересно наработки из OpenSpace: Ты скажи это инопланетной флоре, что метилен в ацетилен перерабатывает. Там кислородом даже и не пахло, не говоря уже о том, что инопланетяне ацетиленом дышат.
-
О игре Собственно о наработках, могу выложить свою новую версию OpenSpace, где осуществлена планета, на которой есть гравитация и где сопротивление среды уменьшается с высотой. Там то физика полёта что надо (но нет физики ударов и прочего)
-
Эм... ты не один такой
- 64 ответа
-
- 3
-
-
- Многопоточность
- LunaOS
- (и ещё 3 )
-
В принципе w и h можно не записывать в массив, так как они везде (скорее всего) будут одинаковые. Просто вывести их в отдельные переменные. Color записывать тоже не вижу смысла. Вместо этого можно использовать переменную level, которая будет содержать уровень кирпича (от 1 и выше) и по отдельной таблице подбирать по уровню нужный цвет. Тогда и переменная prochka не нужна будет. В итоге получим следующую таблицу: local w, h = 4, 1 --например так local block = {} for x=1, 10 do for y=1, 5 do table.insert(block, {x=x, y=y, level=math.random(1,5)}) --генерируем поле 10 на 5 с блоками случайного уровня end end color = { --создаём таблицу с цветами для каждого из пяти уровней блоков 0xffffff, 0xff0000, 0x00ff00, 0x0000ff, 0xffff00 } -- ... -- где то в коде, когда назначаем цвет блока require("component").gpu.setBackground(color[block[i].level]) --где i - индекс блока
-
Есть русская вики со всеми функциями. Прежде чем задавать такие вопросы нужно гуглом научиться пользоваться.
- 9 ответов
-
- Filesystem
- IO
-
(и ещё 3 )
Теги:
-
Покупаешь файл в магазине и засовываешь в него нужные бумаги. Так же ты можешь вытащить бумаги из файла. Файл предназначен для сохранения бумаг от агрессивной внешней среды. Дабы сохранить ценные бумаги в сохранности как можно дольше. Вот и всё, что тебе нужно знать о файлах. Пример: Тебе сказали рассортировать папки так, чтобы в каждой папке было по 10 файлов. Вытаскиваешь все файлы из всех папок и засовываешь в каждую папку по 10 файлов. Готово!
- 9 ответов
-
- 4
-
-
- Filesystem
- IO
-
(и ещё 3 )
Теги:
-
За убийство комара, за то что воздухом дышал не правильно, за то что не правильно какал
-
А не проще было проверить, что он там выводит вот так? exit = false local function e1(...) local tb = {...} for i=1, #tb do print(i .. " " .. tb[i]) end exit = true end event.listen("touch",e1) while not exit do os.sleep(0) end event.ignore("touch",e1) Элементарно же
-
Если затеешь перейти на полноценный движок и нарисуешь спрайты для кирпичей, они не смогут взаимодействовать как ты задумал по цвету. Ты сейчас загоняешь себя в рамки, выбирая не традиционные способы решения проблем. Может оно и проще кажется сейчас, но в будущем будет сложнее. Изучил бы работу с координатами - стало бы проще другие программы писать. А избегая эту тему, её не изучишь. Насчёт библиотекой, что тебе подсказали. Там так же есть работа с координатами. Мог бы вместо того чтобы использовать её напрямую, подглядеть как там работает работа с координатами и научиться новому. Так было бы полезнее, если хочешь повышать свой уровень программирования.
-
Ты разгадал мой секрет, я не знаю английский.
- 5 ответов
-
- OpenComputers
- OC
-
(и ещё 2 )
Теги:
-
Да event.lister работает аналогично. Не надо ничего придумывать и усложнять
- 5 ответов
-
- OpenComputers
- OC
-
(и ещё 2 )
Теги:
-
Я мысли читать не могу. для примера написал print, а там в аргументы что хочешь подставляй. Я то не знаю что ты хотел выводить на экран.
-
О боже, что я вижу, за такое руки ломать надо. Надо так: -- Автор qwertyMAN -- Не крадите прогу пожалуйста. Грешно. local function e1() -- <код> -- ... -- </код> end event.lister("key_down", e1) -- устанавливаем обработчик while 1 do -- <код> -- ... -- </код> os.sleep(0) -- 0.25 секунд слишком долго end event.ignore("key_down", e1) -- убираем обработчик Лично отломаю.
-
Используй event.lister() Он обрабатывает сигналы в режиме ожидания os.sleep(). Таким образом можешь что угодно выводить, но поставить хотя бы os.sleep(0) которого будет достаточно, чтобы обработать эвенты. Например так: function func() <код> end event.lister("key_down",func) --регистрируем эвент и привязываем события "нажатие клавиши" функцию func() while true do print(42) --выводим на экран что хотим os.sleep(1) --обрабатываем эвенты end event.ignore("key_down",func) --убираем эвент
-
Если захочешь использовать одинаковые цвета - начнутся проблемы. Захочешь использовать картинку фоновую или полупрозрачные кирпичи или сверху накладывать полупрозрачный фон - опять же будут проблемы. Сделано хоть и нормально для OpenComputers компов, но в более серьёзных движках, это будет жёстким ограничителем, который будет мешать улучшать игру графически. Например я хочу сделать кирпичи которые будут радужными (менять плавно цвет), и с твоим подходом я не смогу осуществить их работу, так как у тебя стоит привязка к цвету. С привязкой к координатам таких проблем бы не было и на полноценных движках можно было бы всячески улучшать графику игры. Например задавать рамку вокруг кирпичей (на которую шарик в твоём случае тоже бы реагировал) Дело твоё конечно, но твой метод определения столкновения не универсален.
-
Сбор урожая пкм, очень просто. К тому же для грядок можно использовать второго робота, что складывает всё в сундуки. А с памовскими машинами можно попробовать через воронки взаимодействовать. Если получится, то будет очень просто. Хотя я только одну памовскую машину использую - пресс, чтобы производить продукты из сои. Остальные как то и не нужны. Соль из воды получить можно, роботы тут как нельзя лучше подходят. Потому что вручную соль замучаешься добывать. С фруктовых деревьев урожай собирать не надо будет, так как в основном топовая еда без них крафтится. При желании можно всё осуществить и даже сделать прогу, что при каждом запросе определённому игроку выдаёт нужную еду раздатчиком. Чтобы вручную не искать, что там уже можно съесть. Несколько роботов и это всё будет автоматизировано.
-
Там всего то надо забить 12 видов топовой еды чтобы голода не было и всё. Все остальные рецепты не нужны будут.
-
Столько раз видал как люди подписывают свои работы через by, что create меня просто убил Вот вот, не о медальках думать надо, а о оптимизации И когда опыта наберёшься, будешь изначально писать как надо, а не исправлять позже.
-
Ага, разрешено иметь не более 3-х байтиков. (особо себя не разбалуешь ) И то, смысла от них не вижу. Чтобы повысить ЧСВ, нужно написать полезные проги, которые все будут использовать. А так как кроме робокопалки ничего полезного не написать, грош цена всем остальным прогам. Там хоть медальки выдавай, как были проги никому ненужные, так и останутся. Факт того, что проги никому не нужны, должен снижать ЧСВ. А мне вообще, даже копалку жалко использовать. В майн захожу, чтобы насладиться геймплеем, а не ожиданием пока ресурсы наплывут сами собой. Для этого кликеры всякие есть - симуляторы ожидания.
-
А я всегда думал, что лучшая награда - опыт и полученные знания, а не картинка у профиля на форуме, которая не цениться никак. (скажу по секрету, что пользователи у которых нет этих медалек, тем не менее имеют вес на этом форуме) Посмотри на томата например, у него не одного байта нет, но он мне помог с оптимизацией кода и часто советы давал на эту тему. Не в байтиках и медальках человек ценится.
-
Он не даёт никакой прибавки к скорости программирования или уровню оптимизации кода. Абсолютно бесполезная вещь.
-
-- первый вариант local tb = {event.pull("key_down")} --ждём нажатия клавиши for i=1, #tb do print(tb[i]) --отображаем все данные о действии end -- второй вариант local function func(...) tb = {...} --сохраняем всё в таблицу for i=1, #tb do print([i]) --отображаем все данные end end event.lister("touch", func) -- регистрируем евент (можно зарегистрировать сколько угодно разных одновременно) for i=1, 6 do os.sleep(10) --минуту будет ловить все евенты end event.ignore("touch", func) -- уберём евент, чтобы на него не реагировать Кстати да, с event.lister работать не очень приятно. В случае ошибки или любого другого варианта когда не выполнился event.ignore, он при следующем включении второй раз зарегистрирует евент и их уже будет два. Так что не смотря на свою крутость, тестировать проги с их участием не очень приятно. Приходится в случае ошибок перезагружать комп.
-
На русской вики уже давно есть инфа по всем библиотекам. Например вот инфа о библиотеки event. Теперь перейдём к проблеме. event.pull() ждёт пока произойдёт событие и до тех пор пока оно не произошло, не реагирует. В скобках указывается собитие и "прямой эфир" (нечто вроде критерия по которому евент будет срабатывать, например на нужную клавишу) Пример: tb = {event.pull("key_down")} Таким образом комп будет ждать нажатия любой клавиши, когда он произойдёт вся инфа сохранится в пронумерованную таблицу tb и дальше что хочешь делой с этой инфой. event.lister же работает "в фоне" (по факту в моменты ожидания os.sleep ведётся обработка евентов) Пример: создадим функцию local function slowpoke() <какой то код> end далее привяжем эту функцию к нажатию на экран клика мыши event.lister("touch", slowpoke) Далее например создадим бесконечный цикл с обработкой евентов while true do os.sleep(10) end В таком случае при нажатии на экран будет вызываться функция slowpoke(), а в аргументы будут выводится всё та же инфа о координатах мыши, нике игрока и так далее. Это более выгодно по сравнению с event.pull, так как позволяет обрабатывать сразу несколько эвентов параллельно, обрабатываемых при ожидании os.sleep() Но нужно помнить что по окончание программы обязательно нужно будет убрать event.lister при помощи event.ignore("событие", название функции) Если хочешь, могу код какой нибудь скинуть с применением эвентов.
- 4 ответа
-
- 1
-
