Я нахожусь на завершающей стадии разработки мода для Инди-игры Гном Крепость .Последнее, что требуется перед тем, как мод заработает, - это просмотреть и изменить RAW Dwarf Fortress - два десятка или около того текстовых файла, которые содержат информацию о сотнях существ, населяющих игру.
Сколько это стоитс технической точки зрения, просматривает каталог текстовых файлов и в основном выполняет операцию «Найти и заменить», чтобы изменить каждую строку.
Большинство моих опытов программирования связаны с объектно-ориентированными языками - C # и Java.и некоторый опыт работы с Ассемблером и С. Однако ни один из этих языков не кажется оптимальным для такого рода задач.
Единственное преимущество в том, что в противном случае было бы очень простой заменой, состоит в том, что из-за способа, которым ГномRAW крепости написаны, я не буду знать, если мне нужно заменить строку, пока дальше вниз по текстовому файлу.Ниже приведен сокращенный пример сценария.
[CREATURE:WOLF]
...
[Many irrelevant lines of tokens]
...
[BODY_DETAIL_PLAN:STANDARD_MATERIALS]
[BODY_DETAIL_PLAN:STANDARD_TISSUES]
...
[Many more irrelevant lines of tokens]
...
[MULTIPLY_VALUE:2]
Программа, которую я хочу написать, должна иметь возможность прочитать строку [MULTIPLY_VALUE: X], а затем вернуться и заменить две строки, содержащие [BODY_DETAIL_PLAN:Z] с [BODY_DETAIL_PLAN: Y], где Y изменяется в зависимости от значения чтения X.
Я могу гарантировать две вещи:
- При большинство одинСтрока [MULTIPLY_VALUE: X] появится между [CREATURE: A] и [CREATURE: B] или [CREATURE: Z] и концом файла.
- Строка [MULTIPLY_VALUE: X] всегда будет приходить после строки [BODY_DETAIL_PLAN: Z], если она присутствует на этом существе.
Исходя из моего опыта кодирования, наиболее близкая вещь, которую я имею к жизнеспособной идее, - это написатьпрограмма на C для чтения файла, используя указатели для «сохранения» местоположения строк чтения и изменения их, когда программа чтения файлов обнаруживает запуск нового RAW.
Однако , который кажется мне неэлегантным, и сталкивается с проблемой того, что у меня нет опыта во внедрении функции поиска / замены в C (или любом другом языке).
Есть ли какой-нибудь более простой способ выполнить эту монотонную задачу, проходящую вручную по каждому текстовому файлу?Я полностью готов выучить новый язык программирования, но я точно не знаю, какой язык будет легче всего справиться с этой ситуацией.
Предложения?