Я строю небольшую игру CYOA и с помощью Networkx сгенерировал ориентированный граф, представляющий все возможные пути в игре.
В настоящее время у меня настроена игра как интерактивная симуляция, в которой я закодировал игровой цикл, который выполняется, пока выполняется условие (т. Е. Текущий узел имеет хотя бы один исходящий путь), и он собирает данные от пользователей для обновить текущий узел. Это работает совершенно нормально, поэтому я могу запустить свою игру CYOA в редакторе Python, таком как блокнот Jupyter.
Теперь я хочу пойти дальше, настроив функциональность для игры в браузере. Я хотел бы начать игру, отображая первый начальный узел, который содержит информацию о ситуации, а также любые варианты, связанные с ней, собирает ответы от пользователя, а затем обновляет текущий узел до следующего возможного узла. По сути, я хочу реализовать тот же игровой цикл, который я описал в параграфе выше, но в браузере.
Я думаю, что первым шагом было бы сохранить график, представляющий возможные игровые пути, как «состояние». Затем я хотел бы установить состояние для определенного узла этого графика, отобразить всю информацию, а затем обновить состояние, когда пользователь делает выбор и переходит на другие узлы. В любой момент я хочу отобразить содержимое узла для пользователя, которое представляет собой описание ситуации, а также определенные связанные варианты, если есть какие-либо связанные варианты.
Чтобы было ясно, я НЕ хочу отображать график целиком (для этого есть примеры в документации Networkx - вы можете увидеть ссылку, которую я приложил, которая пытается отобразить весь график в браузере).
То, что я пробовал до сих пор:
Несмотря на то, что я хочу использовать React, я был ошеломлен тем, как начать, и решил, что, возможно, сначала смогу попробовать Flask. До сих пор в Flask мне удавалось передать словарь моих узлов, и я перебрал элементы в словаре, чтобы отобразить его в браузере. Это не то, что я хочу, но это был первый шаг в переходе от ничего не показывать к отображению чего-то .... Это код, который я имею:
app = Flask(__name__,)
@app.route('/', methods = ["GET", "POST"])
office_game = CYOAGame(SCRIPT_SHEET_ID,SCRIPT_RANGES, "connector_1")
office_game_graph = office_game.setup_game_graph(office_game.import_game_data())
office_game_nodes = office_game_graph.nodes(data=True)
return render_template("index.html", data=dict(office_game_nodes).items())
if __name__ == "__main__":
app.run(debug=True, port=8000)
, который отображает ВСЕ данные обо ВСЕХ узлах ... Так что я довольно запутался, как перейти от этого к имитации моего игрового цикла в браузере. Код для моего игрового цикла очень длинный, поэтому я не думаю, что было бы целесообразно включать все это здесь, но если вы считаете, что это будет полезно, пожалуйста, прокомментируйте, и я буду рад его обновить.