12/05/2004 в 00:23 были начаты работы по созданию русской IF-платформы для написания игр с текстовым вводом команд. От DOS'а пришлось отказаться в пользу Win32. Пишется всё на Delphi.
По состоянию на сегодняшний день дела идут удовлетворительно. Вот только вывод информации на экран в консольном приложении под Win95 происходит немного тормознуто (реанимировал для тестов свой старенький компьютер: CPU:486 160МГц/Mem:40MB/S3 Virge DX 2MB/HDD:426MB).
Если кто знает, как в консольном приложении использовать свои шрифты (в полноэкранном режиме), просьба сообщить — буду очень признателен.
Постараюсь по возможности сообщать о ходе работ...
Неактивен
Помимо низкоуровневых модулей для работы с экраном, клавиатурой, сжатыми данными и т.п. закончен модуль для вывода на экран определённым образом размеченного текста (типа html, но в тексте). Все теги разметки на русском языке, как, впрочем, и весь внутренний язык будущей платформы.
Для примера несколько тегов:
<ПО.ЦЕНТРУ></ПО.ЦЕНТРУ>
<СПРАВА></СПРАВА>
<ПО.ШИРИНЕ></ПО.ШИРИНЕ>
<ЦВЕТ></ЦВЕТ>
а также:
<КЛ.ЛЮБАЯ>
<КЛ.ВВОД>
и многие другие.
Неактивен
Olegus t.Gl. написал:
Если кто знает, как в консольном приложении использовать свои шрифты (в полноэкранном режиме), просьба сообщить — буду очень признателен.
А почему консоль на дельфи? Только оттого, что с VCL добавляется лишних 250-300КБ ? ;D
Тогда посмотри тут:
http://xcl.cj.net
http://kol.mastak.ru
Скачай KOL и MCK. Работаешь с ними как с VCL (или ПОЧТИ как с VCL), а экзешники выходят по 25-50 КБ. Я не шучу!
Неактивен
Консоль ради текста. Мне нужен текстовый ввод/вывод информации.
Неактивен
Постой... Или это я не соображу ???
Самое примитивное: кидаешь на форму TMemo и TEdit. Через первое выводишь текст, через второе - читаешь команды.
Если нужна "классика" - задаешь форме, memo и edit'у черный цвет, а текст выводишь белым. Убираешь все borders. Делаешь memo readonly=true. Пресекаешь все попытки передать фокус ввода memo.
Неактивен
А зачем это нужно? Мне ведь нужна работа в текстовом режиме. Вот я и работаю с консольным приложением. Зачем весь этот мудрёж с формами и т.п.?
Неактивен
Под DOS я рисовал свои шрифты и без особых проблем подключал их. Как сделать это под Win32, я не знаю.
Что касается выравнивания и т.п., то это делается просто: либо текст выводится с нужной позиции, либо (если выраванивание "по ширине") промежутки между словами дополняются пробелами...
Неактивен
Под DOS я рисовал свои шрифты и без особых проблем подключал их. Как сделать это под Win32, я не знаю.
В ДОС все было по-другому... В консольном приложении под винду в делфи даже нет доступа к классу TApplication Короче, нет у меня пока идей на этот счет. Может быть, через WinApi можно?
Что касается выравнивания и т.п., то это делается просто: либо текст выводится с нужной позиции, либо (если выраванивание "по ширине") промежутки между словами дополняются пробелами...
А как вычислять ширину окна? Заранее просчитать кол-во символов, которые умещаются в одну строку при разных разрешениях экрана? Хотя и разрешение не определишь...
Вообщем, даже не знаю :-/
По-моему, использование моего варианта - не мудрёж, а обоснованный уход от большинства проблем. А про большой размер исполняемых файлов я уже рассказал.
P.S. 6 постов в теме за один день! Просто чат какой-то выходит
Неактивен
Nash, судя по всему, с консольными приложениями работать тебе не приходилось, иначе ты бы знал, что всех этих проблем (ширина экрана и т.п.) не существует.
Что касается процесса, то в настоящее время идёт работа над транслятором-компилятором (или типа того — я не особо силён в терминологии), который будет переводить исходники игры в некий промежуточный код, который будет проигрываться отдельной программой. Не могу не выразить восхищение методом обратной польской записи, предложенного миру математиком (само собой польским) Я. Лукашевичем. Столь компактные правила, реализущие столь стройную и гибкую систему!.. Разве что в бухгалтерском учёте я встречал нечто подобное.
Неактивен
Nash, судя по всему, с консольными приложениями работать тебе не приходилось, иначе ты бы знал, что всех этих проблем (ширина экрана и т.п.) не существует.
Почему же? Приходилось, но совсем немного Для простых задач, вроде "прочитать файл - обработать данные - записать результаты в файл". А для работы с текстом - тут ты прав.
Сейчас вот пересмотрел хелп по WinApi. Кажется, шрифт в консоли поменять никак нельзя. Цвет можно, кодовую страницу - можно.
Что скажут другие?..
Что касается процесса, то в настоящее время идёт работа над транслятором-компилятором (или типа того — я не особо силён в терминологии), который будет переводить исходники игры в некий промежуточный код, который будет проигрываться отдельной программой. Не могу не выразить восхищение методом обратной польской записи, предложенного миру математиком (само собой польским) Я. Лукашевичем. Столь компактные правила, реализущие столь стройную и гибкую систему!.. Разве что в бухгалтерском учёте я встречал нечто подобное.
Очень интересно!
Проблема компиляции - это то, что волнует меня сейчас превыше всего. Не подскажешь ли какую ссылку на ресурс, с которого ты брал правила метода обратной польской записи, пожалуйста? Или это книга?
Неактивен
Гениальное в своей лаконичности изложение основных принципов метода обратной польской записи: http://algolist.manual.ru/syntax/revpn.php
Главное пропустить первые абзацы. Суть начинается со слов "Во-втоpых, получение обpатной польской записи из исходного выpажения...". Прилагаемый там исходник не смотрел.
Неактивен
Кстати, о компиляции.
Можешь посмотреть здесь http://compilers.iecc.com/crenshaw/
Очень хороший гайд (кстати, где-то там лежит весь цикл статей в одном архиве, ~300Кб. Если инет повременный ).
Собственно, весь ресурс очень неплох. Жаль, вопросы, которые там рассматриваются, по большей части: как компилировать один из имеющихся языков в exe.
Неактивен
Движки, я так понимаю :-/
Извини, Гранд, я очень ценю твою работу по русификации TADS'а, но полноценного IF по-русски так ведь не получишь
Проблем тут две:
1) за нашу работу никто не платит (иначе она была бы закончена эдак лет 5 назад)
2) все мы стремимся натянуть на себя лавровый венок, поэтому работаем по одиночке или малыми группами...
Olegus
Держись!
Такие люди, как ты, и сдвигают дело с мертвой точки. К сожалению, помочь не могу, учеба...
Неактивен
Nash написал:
Извини, Гранд, я очень ценю твою работу по русификации TADS'а, но полноценного IF по-русски так ведь не получишь (
Почему?
Неактивен
Ребята, перво-наперво давайте определимся. В настоящее время я пишу именно движок. Причём пишу его пока что для себя. И начал писать я его потому, что написание игры на существующих языках программирования — вещь очень проблематичная (у меня есть две-три вещи, которые заброшены из-за того, что я начал просто путаться в нагромождении кода). Так что если-таки у меня хватит сил доделать то, что я затеял, в первую очередь вы получите не сам движок, а игру.
Неактивен
Gottlieb_Leberecht написал:
Почему?
Кажется, мы удаляемся от главной темы. Вкратце, если TADS вдруг кардинально поменяют, придется все заново переводить.
На повестке дня остается вопрос: можно ли в консольном приложении (скомпилированном в делфи) менять ШРИФТ текста?
Olegus
С трудом сдерживаю себя...Цитата А.Новичкова из статьи о Rational Rose:
"Тут на ум приходит еще одно традиционное для России высказывание разработчика: “мне проще все написать заново”. И ведь пишут…"
Вот вам и вся фабула эпохи русского IF. В цитате - это упрек, здесь - нет. Лично я ЗА то, чтобы кто-то из нас написал платформу, которая будет иметь нормальный парсер, понимать падежи, иметь русский синтаксис etc.
Ждем игру!
Неактивен
Я извиняюсь, за то что-то вклиниваюсь с офф-топиком, но действительно интересно.
Кажется, мы удаляемся от главной темы. Вкратце, если TADS вдруг кардинально поменяют, придется все заново переводить.
1) Почему придётся всё заново переводить? Тебя что-то не устраивает в текущей версии, которая (не перевод библиотек, а оригинал, естественно) доводилась до ума в течение десяти лет?
2) TADS2 УЖЕ не поменяется — его разработка завершена. Разрабатывается дальше только TADS3.
Вот вам и вся фабула эпохи русского IF. В цитате - это упрек, здесь - нет. Лично я ЗА то, чтобы кто-то из нас написал платформу, которая будет иметь нормальный парсер, понимать падежи, иметь русский синтаксис etc.
А чем конкретно тебя не устраивают русифицированные Inform и TADS2? Обе системы понимают нормальный русский язык и выдают ответы на нормальном русском языке. Возможно, парсинг падежей/ещё что-то выполнены не очень элегантно, но есть ли лучшие способы? И потом, нужны ли они, если всё и так нормально работает?
Неактивен
Nash: "Кажется, мы удаляемся от главной темы."
Тема у нас заявлена как: "В общем, дело поехало...". По-моему, она настолько общая, что от неё черезвычайно трудно отклониться
Nash: "Вкратце, если TADS вдруг кардинально поменяют, придется все заново переводить."
ТАДС кариданльно не поменяется. Он и раньше менялся с сохранением обратной совместимости, а теперь вообще почти не обновляется. Автор занят разработкой новой версии (уже около 4 лет, причем, он - профессиональный программист ).
Nash: "Лично я ЗА то, чтобы кто-то из нас написал платформу, которая будет иметь нормальный парсер, понимать падежи, иметь русский синтаксис etc."
Я это всё, конечно, понимаю, и уважаю подобное рвение. Просто я знаю: не бывает игр без движка, но бывают движки без игр. Как я понял, Олегус, от которого зависит организация конкурса, делает игру для участия в нем. И я тревожусь: дождемся ли мы этого события?
Неактивен
Тема у нас заявлена как: "В общем, дело поехало...". По-моему, она настолько общая, что от неё черезвычайно трудно отклониться
Шутки - шутками, а тема-то была создана, для того, чтобы Олегус информировал нас о ходе работ над своим движком.
Сомневаюсь, что он одобрит наши очередные плачи по поводу нежелания нас самих писать игры...
Как я понял, Олегус, от которого зависит организация конкурса, делает игру для участия в нем. И я тревожусь: дождемся ли мы этого события?
Надеюсь, все у него получится. Пускай не сразу, но выйдет. (трижды стучу по дереву)
Olegus
Я понимаю, ты решил писать трансляцию исходника с нуля? Не переводить синтаскис твоего языка, скажем на Паскаль, и трансляции его с помощью Pascal Web Script'a или Innerfuse Pascal Script?
Неактивен
Давайте наведём немного порядка в обсуждаемых вопросах.
Во-первых, организация конкурса от меня не зависит. Но это вовсе не значит, что если вдруг его потребуется провести, то я не помогу.
Во-вторых, игру я пишу не для конкурса. Поэтому его проведение никак не привязано к срокам её выхода.
В-третьих, раздел (а не тема!) называется "Разработка русской IF платформы". Поэтому тема не такая уж общая...
Неактивен
Nash написал:
Olegus
Я понимаю, ты решил писать трансляцию исходника с нуля? Не переводить синтаскис твоего языка, скажем на Паскаль, и трансляции его с помощью Pascal Web Script'a или Innerfuse Pascal Script?
Я не настолько крут. Будет компилятор для получения кода игры в определённом формате, и будет виртуальная машина (так это вроде называется) для проигрывания этого кода.
Неактивен
Я не настолько крут. Будет компилятор для получения кода игры в определённом формате, и будет виртуальная машина (так это вроде называется) для проигрывания этого кода.
Я же не имел в виду, собираешься ли ты приводить исходник к exe, а именно схему работы с интерпретатором. И что, ты считаешь - это не круто?
Анализ исходника ты пишешь сам. А значит должен сам проверять уровни вложенности открывающих и закрывающих операторов, вести таблицы переменных и функций, вычислять те же арифметические выражения (Лукашевича ведь еще надо как-то на паскале написать!). Поверь мне - это более чем круто.
Неактивен