fgntfg
Программирование без полной клавиатуры - боль
Lucky
Добрый дяденька Клаус позаботился об этом, нытики.
Lucky
https://play.google.com/store/apps/details?id=org.pocketworkstation.pckeyboard&hl=en
Lucky
и лучше ставить сразу luajit
Lucky
или плеер движка с jit
Lucky
пример игрушки для потестить https://github.com/tylerneylon/termtris
Lucky
https://github.com/soumith/sunfish.lua
Snusmumriken
Змейку игрульку например?
Win10, тут добавили фичу escape-последовательностей.
ru.wikipedia.org/wiki/Управляющие_последовательности_ANSI
Правда, ввод с клавиатуры через winapi/ffi, так просто его не получить.
Maxim
Maxim
Snusmumriken
Очистка экрана, рисование символов на нужных координатах (через escape-последовательности)
Anonymous
А курсесы тоже через них рисуют?
Snusmumriken
Ну там, типа
io.write('\27[22;32f#') — нарисовать символ решётки на координатах 22, 32
fgntfg
Помню была функция gotoxy
Snusmumriken
Курсесы на линуксах рисуют и через них тоже, насколько я знаю (там миллиард "драйверов" для всевозможных терминалов). А под вендой через винапи, потому что под вендой эти escape-последовательности вылезли только в десятке, до этого только сишные функции руления окном консоли.
fgntfg
Для такого
fgntfg
И всегда есть пробелы и \n
Snusmumriken
Не совсем. Кстати, очистка экрана командой
'\27[2j' — гораздо быстрее чем cls. А ещё можно очистить только часть экрана. А ещё вывод по координатам тоже гораздо быстрее, ибо вывести нужно не так много символов, а не весь экран.
Snusmumriken
Карочи, для реалтайм-игрушек это весьма актуально. Ах да, перемещение курсора позволяет очищать и перерисовывать не весь экран, а опять таки только его часть. Если у тебя сложные интерфейсы, будет лютое мерцание при полной перерисовке.
Snusmumriken
Я же дал ссылку на википедию "Управляющие последовательности ANSI"
Snusmumriken
Ну, то есть упоминающаяся там CSI это как раз "\27[", а дальше один или несколько символов модификатора. Можно менять цвета в консольке! И ещё много всего.
CSI [символ(-ы) режима] n1 ; n2... [замыкающий(-ие) символ(-ы)] буква
Вилби
Snusmumriken
Шикарно!!
В результате я всё равно бегаю с ноутбуком (или gpd win).
Вилби
Maxim
Вилби
Вилби
😳
Snusmumriken
Я же типа описал : )
Snusmumriken
Даже маленькую либу накатал (для личного пользования).
https://pastebin.com/cP5DF4AM
Доки нет, читаем функции.
Вилби
Не, я еще видимо не готов это понимать
Вилби
Вилби
Щас почитаем
Snusmumriken
Оно может так сразу не работать (если консоль в режиме не-ascii/unicode а cp1251, поэтому в начале выполняем os.execute('chcp 65001'), а потом terminal:cls(), чтобы убрать вылезший текст о смене кодовой страницы)
Вилби
Так хочется что то сделать уже!!))))
Вилби
Чтоб работало))
Snusmumriken
А для ввода с клавиатуры, я дёргал ffi. Вот тут исходный код самой змейки.
https://pastebin.com/X3ynm99t
Загуглишь коды всех клавиш, а то тут только коды стрелок. Запускать на luajit или дёргать библиотеки перехвата зажатых клавиш.
Вилби
Что за переменная "Msg" в Луа? где ее применять можно? Я ее print'ом пока заменяю у меня не работает
Snusmumriken
Нет такой. Только если ты её сам объявишь. Где её нашёл?
Maxim
Вилби
Вилби
Snusmumriken
Это не луа, это гмод добавил.
https://wiki.garrysmod.com/page/Global/Msg
Maxim
Эммм...
вы же не вслепую пишете код, а с использованием отладчика который показывает все что происходит в данный момент, верно?
Вилби
Понятно
Вилби
Интеграция
Вилби
Snusmumriken
Lucky
Lua - встраиваемый яп. Поэтому, копируя код откуда-нибудь, смотри api той фигни, откуда копируешь.
Snusmumriken
Да, это я тут извращенец, калякаю на луа в чистом виде всякую ерунду. А ты у нас юзаешь инструменты, пользующиеся луёвыми услугами, так что читай доку к своим инструментам, они расширяют луа своими штуками.
Lucky
https://wiki.garrysmod.com/page/Global/Msg
Maxim
Maxim
Snusmumriken
Maxim
Snusmumriken
А как это работает? Zerobrane подключается теми же сокетами к нгинксу? Потому что он не может просто взять, и запустить это всё в нгинксе под своим контролем, нгинкс сам запускает (по запросу) и не даёт другим просто так в нём ковыряться.
Snusmumriken
Да, ребзя, снова наступило время когда вас можно поздравить!
Уже прошла четверть века с момента рождения человека, которому мы все благодарны за его неоценимую помощь и восхитительные человеческие качества! Аве @Snusmumriken!
Pavel
Pavel
но поздравлямс
Snusmumriken
Вилби
ㅤ
Congratulations.
Вилби
Snusmumriken
Еее! Всем спасибо!
> Но почему он не распространен так?
Потому что мало либ на каждый чих и почти отсутствует реклама. Луа супер распространена в области геймдева как встраиваемая фиговина, и как дёргаемые скриптики в куче приложений, но какой-нибудь питон лучше пиарился и ему писали огроменную стандартную библиотеку. На браузерной стороне только JS без вариантов, для системного проганья только C/C++ почти без вариантов (пардон, rust/go, ваше время ещё придёт), жава/шарп в интырпрайзе тоже хорошо рекламились и там тоже всё ок с либами под интырпрайз.
А луа — она маленькая.
Вилби
Pavel
у питона лучше с типами данных. нет монстра в виде таблиц.
Pavel
эо если говорить о синтаксисе и не вдаваться в детали. прямо сейчас рантайм питона невероятно богат
Snusmumriken
у питона лучше с типами данных. нет монстра в виде таблиц.
Да ну тебя, таблицы не монстры. Они даже не жрут больше чем нужно. Пока ты используешь массивную часть таблиц, они остаются массивами, превращаясь в хеши только когда добавляешь не числовые [uint] ключи. Таблички вполне успешно заменяют всё что угодно кроме (многомерных) битмап, там они и правда жирноваты.
Pavel
Snusmumriken
Pavel
и есть куча задач где олее строгая типизация подходит в разы лучше
Pavel
даже не строгая. а более конкретная
Snusmumriken
А, ну это, классы? TypeOf(tbl) == myClass?
Snusmumriken
Вот чем мне действительно остро нравится питон, так это работой со списками. А вот отсутствие обычных циклов — не нравится, ранжи какие-то слишком генераторные, их на низком уровне не оптимизируешь. И лямбды только однострочные :<
Я тут попробовал написать под pygame апишку похожую на ловку, чтобы
def pygame.update(dt):
bla-bla
И тут приходилось капитально извращаться чтобы добавить к хешу/объекту pygame новый ключ-значение в виде функции.
Типа
def _upd(dt):
bla-bla
pygame["update"] = _upd
Maxim
Maxim
Zbrane запускает дэбагер который слушает на порту и в общем это работает через socket, все верно
Maxim
Возможность пошагово пройти всю конфигурацию и увидеть все что происходит в nginx через lua - очень удобно