Несколько месяцев go Я написал основную c приключенческую программу «Выбери сам» в MATLAB, пока я баловался в школе. Я хотел переписать это в Python, чтобы я мог делать больше вещей с GUI элементами и игровыми функциями.
Однако сейчас я просто пытаюсь выяснить, как лучше всего воспроизвести систему, которую я создал в MATLAB, в Python.
Вот как это работает. Во-первых, в Excel у меня есть электронная таблица, которую я использую для отслеживания элементов истории. Он структурирован следующим образом:
Page ID - Children - Prompt - Body - Location - Items - Party Members
1 2 3 text text text text text
... ... ... ... ... ... ...
«Дети» относятся к последующим страницам, которые должны появиться в плеере после прочтения основного текста текущей страницы. Подсказки для этих страниц отображаются одновременно, и игроку предоставляется выбор между ними.
Я экспортирую эту таблицу Excel в виде текстового файла с разделителями табуляции.
В MATLAB, Я импортировал файл примерно так:
fileID = fopen('story.txt', 'r');
story = textscan(fileID, '%u %q %q %q %q %q %q','Delimiter','\t');
fclose(fileID);
, который дает мне массив данных для чтения и представления проигрывателю. Затем, пропуская некоторый вводный код, я запускаю основную игру l oop:
saveState = 1;
running = true;
while running == true
disp(story{4}{saveState})
children = str2num(story{2}{saveState});
if length(children) > 0
i = 1;
while i <= length(children)
disp(story{3}{children(i)})
i = i + 1;
end
op2 = input("Please enter a numeric option:");
if op2 == 0
running = false;
else
saveState = children(op2);
end
else
running = false;
end
end
Там нет проверки пользовательского ввода, потому что это казалось скучным для реализации в то время.
Как это работает заключается в следующем: он загружает состояние сохранения, соответствующее идентификатору страницы из электронной таблицы, и отображает основной текст этой страницы. Затем он преобразует столбец дочерних элементов для данного индекса идентификатора в вектор чисел (сначала мне пришлось импортировать его как массив символов). Затем он отображает подсказки для соответствующих дочерних страниц для проигрывателя. Игрок получает ввод, который он хотел бы выбрать, а затем возвращается к исходному состоянию и устанавливает новое состояние сохранения для выбранной опции. Если к данной странице не прикреплены дочерние элементы, это завершает игру.
Мой вопрос заключается в следующем: какова лучшая структура данных или общий подход, который я должен использовать, если я хочу начать реализацию эта же система в Python? У меня установлено numpy, scipy и несколько других пакетов, так что я могу использовать сторонний код, если мне это нужно. Должен ли я попытаться воссоздать эту же систему в Python, или есть более простой подход, который соответствует сильным сторонам Python?