BearLibTerminal - псевдоконсольное окно для рогалика

Форум библиотеки BeaRLib

Модератор: Apromix

Аватара пользователя
Apromix
Мастер
Сообщения: 1236
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение Apromix » 17 авг 2016, 13:30

Спасибо, помогло, теперь работает. Посмотрел комит, простая замена .empty() (это в С++ хелпер?) на == L"_". Как работает?

Аватара пользователя
Cfyz
Сообщения: 776
Зарегистрирован: 30 ноя 2006, 10:03
Откуда: Санкт-Петербург
Контактная информация:

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение Cfyz » 17 авг 2016, 14:59

Apromix писал(а):Как работает?
При разборе параметров (terminal_set, конфиг) параметры трактуются как секции, т. е. могут иметь словарь значений, но нередко имеют неименованное значение. Например в случае "font: foo, ..." значение "foo" не имеет имени, но адресовать его как-то надо. Когда-то для этого использовалось пустое значение имени параметров (и стандартный метод empty() как раз и проверял строку на пустоту), но пустая строка это неаккуратно, так как не понять это значение такое "пустая строка" или значение вообще отсутствует. Поэтому я сделал именем неименованного значение символ подчеркивания. Но вот отредактировал не везде =(.
Пытается раскуклиться

Аватара пользователя
Apromix
Мастер
Сообщения: 1236
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение Apromix » 17 авг 2016, 15:22

Добавил проект на Lazarus. Добавил в него последнюю версию библиотеки. Протестировал чтение конфига - нормально читает, уже без ошибки :D
Cfyz писал(а):Ну это, как минимум, не весь лог: применение конфига происходит ровно между "Applying options from configuration file, if any" и "Terminal initialization complete" (которым начинается приведенный кусок).
Этой первой строки в логе не наблюдаю. Так должно быть?

Аватара пользователя
Xecutor
Мастер
Сообщения: 758
Зарегистрирован: 25 мар 2008, 08:32

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение Xecutor » 24 авг 2016, 15:41

На реддите народ жалуется, что не получается запустить биндинги для питона.
Кто-нить пользуется?
Какие-нибудь рекомендации передать?

Аватара пользователя
Cfyz
Сообщения: 776
Зарегистрирован: 30 ноя 2006, 10:03
Откуда: Санкт-Петербург
Контактная информация:

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение Cfyz » 24 авг 2016, 16:39

Терминал на реддите. Мило.
Я ответил. Там довольно необычные симптомы. Я сам чаще всего запускаю на Ubuntu, причем двух довольно разных версий, и чтоб крашилось -- такого не припомню.
Пытается раскуклиться

Bloodice
Сообщения: 5
Зарегистрирован: 04 фев 2014, 04:11

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение Bloodice » 30 авг 2016, 09:03

Вот руки дошли использовать сей инструмент в реальной задаче. И появился вопрос (куда без этого) по работе со слоями. Делаю простой аналог messagbox'а, на 0 слое основное меню, на 255 рисуется бокс с текстом, после нажатия аникей производится очистка слоя и работа возвращается в 0 слой. Вроде все отлично и все работает, но я никак не могу понять как сделать что бы под боксом не отображался 0 слой (а то если в 0 слое что то есть получается каша).

Аватара пользователя
Cfyz
Сообщения: 776
Зарегистрирован: 30 ноя 2006, 10:03
Откуда: Санкт-Петербург
Контактная информация:

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение Cfyz » 30 авг 2016, 16:45

Да, действительно, у последующих слоев нет фона, поэтому просто буквы и рамки будут сливаться с лежащим внизу. У этого есть довольно простое, хотя и не очень элегантное решение: на втором слое (где message box) перед выводом надо закрасить фон символами 0x2588 'Full block', а поверх них уже выводить окошко. Это можно сделать или в одном (все том же втором) слое с помощью композиции, или нарисовать сплошной фон в промежуточном слое.

Вероятно, тут помогло бы наличие у всех слоев такого же фона, как и у первого, тогда бы можно было "закрасить" прямоугольник под message box вызовами terminal_bkcolor + terminal_clear_area.
Пытается раскуклиться

Аватара пользователя
Apromix
Мастер
Сообщения: 1236
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение Apromix » 30 авг 2016, 19:15

А еще можно полупрозрачную .png'шку нарисовать в промежуточном слое на весь экран, она красиво затемнит все нижние слои, выглядеть должно здорово))

Bloodice
Сообщения: 5
Зарегистрирован: 04 фев 2014, 04:11

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение Bloodice » 31 авг 2016, 01:06

Спасибо за консультацию, буду пробовать.
Еще вопрос, есть функция pick для получения кода тайла из ячейки, но как я понял нет функции для полного копирования содержимого блока по x,y,w,h, ну и функции для вставки по x,y. На мой взгляд это востребовано, так как проходить все ячейки pick'ом (+ еще цвет) явно отрицательно скажется на производительности (основной код на ruby).

Аватара пользователя
Cfyz
Сообщения: 776
Зарегистрирован: 30 ноя 2006, 10:03
Откуда: Санкт-Петербург
Контактная информация:

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение Cfyz » 31 авг 2016, 11:06

Операции копирования/восстановления областей попадают в категорию "высокоуровневой" работы. Я потихоньку раздумываю о том, чтобы ввести набор функций по работе с интерфейсом-обастями-контролами, но пока не придумал такого API, чтобы предоставить достойную функциональность не породив химеру a la curses.

Для разовых копирований экрана (не каждый кадр, а разок сохранить при открытии диалога и потом восстановить при закрытии) производительность pick не должна стать проблемой.
Пытается раскуклиться

vapekreng
Сообщения: 63
Зарегистрирован: 22 фев 2016, 22:33

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение vapekreng » 01 окт 2016, 23:23

Решил немного отвлечься от алгоритмов и поиграться с цветами. Не подскажете, почему шрифт открыть не может? В папку с проектом его положить, что ли нужно? А вообще, мне нужно просто сменить размер шрифта, а то мелковато все. Подскажите, как это сделать малой кровью? Питон третий установлен, убунту 16-я
Скрытый текст: ПОКАЗАТЬ

Код: Выделить всё

from bearlibterminal import terminal

terminal.open()
terminal.set("window.title='game")
terminal.set('font: Andale mono.ttf, size=12;')
terminal.clear()
terminal.color(terminal.color_from_name('Red'))
terminal.printf(35,10,'[color=dark blue][bkcolor=lighter gray] Проба1')
terminal.print_(2,2,'[color=green]3457349')
terminal.refresh()
while True:
    key = terminal.read()
    if key == terminal.TK_ESCAPE:
        break
terminal.close()

Аватара пользователя
Apromix
Мастер
Сообщения: 1236
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение Apromix » 02 окт 2016, 03:04

vapekreng писал(а):почему шрифт открыть не может? В папку с проектом его положить, что ли нужно? А вообще, мне нужно просто сменить размер шрифта
Положите его в папку с проектом. Или не указывайте шрифт вообще и терминал использует дефолтный шрифт.

Справку тут нужно доработать. К сожалению не указана в таблице конфигурация библиотеки группа параметров font.
vapekreng писал(а):Решил ... поиграться с цветами.
Версия терминала должна быть самая последняя. В ней добавлено несколько плюшек именно для работы с цветами.

vapekreng
Сообщения: 63
Зарегистрирован: 22 фев 2016, 22:33

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение vapekreng » 02 окт 2016, 06:37

Благодарю за совет - перекинул шрифт в папку с проектом, заработало. Версия, судя по вики, последняя.
vapekreng писал(а):Или не указывайте шрифт вообще и терминал использует дефолтный шрифт.
Есть возможность, не указывая шрифт, поменять только размер шрифта? Такой вариант не катит:
Скрытый текст: ПОКАЗАТЬ

Код: Выделить всё

from bearlibterminal import terminal
terminal.open()
terminal.set('font: size=18;')
terminal.clear()
terminal.color(terminal.color_from_name('red'))
terminal.printf(35,10,'Проба')
terminal.refresh()
while True:
    key = terminal.read()
    if key == terminal.TK_ESCAPE:
        break
terminal.close()

Аватара пользователя
Apromix
Мастер
Сообщения: 1236
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение Apromix » 02 окт 2016, 08:28

Вообще-то для font должен был бы быть кактой-то name, path или file, где бы указывался путь к файлу со шрифтом. Возможно, ошибка в терминале. Попробуйте font.size:

Код: Выделить всё

terminal.set('font.size=18;')

Аватара пользователя
Apromix
Мастер
Сообщения: 1236
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: BearLibTerminal - псевдоконсольное окно для рогалика

Сообщение Apromix » 02 окт 2016, 08:39

Если не работает, подсмотрите здесь :D

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 13 гостей