-
инвентарь в принципе можно сделать тупо таблицей. Если в квесте всего 100 предметов, то скажем
char inv[100]; где 0 - нет, 1 - есть.
при проверке юзать не цифры
if (inv[44]) { ; }
а дефайны
#define VODKA 44
...
if (inv[VODKA]) puts("накатил 350 грамм.."); else puts("водки нет");
-
ну в коммерческих играх обычно есть парсер
и есть игра как набор условий
сначала парсер разбирает введенное и пытается идентифицировать введенное по словарю
например
взять ведро
далее в наборе условий например
if action "взять" and word "ведро" and location="у колодца" then say "я вытащил ведро из колодца" and add_item_to_inventory
хотя наврное и посложнее конструкции бывают
есть же еще флаги действий