В настоящее время я работаю над текстовой игрой на C, и у меня возникла проблема с изменением значений, когда происходят определенные события. Вот мой код структуры данных:
typedef struct player {
int maxhealth;
int curhealth;
int in_combat;
monster c_enemy;
char *class;
char *condition;
rooms c_room;
inventory i;
stats stats;
} player;
Теперь, я думаю, моя проблема в том, что у меня в настоящее время есть c_room (текущая комната) в качестве комнат, а не указатель на комнаты. Это затронет меня позже, потому что мне нужно изменить такие вещи, как n_monsters внутри структурных комнат для текущей комнаты. Однако, когда я изменяю его, делая p.c_rooms.n_monsters - = 1; Я не уверен, что это изменяет фактическое значение n_monsters для комнаты, на которую я должен ссылаться. Я проверил это, оставив комнату, когда n_monsters равен 0, а затем вернулся и увидел, что он вернулся в 1, значение по умолчанию.
Так, да, как бы я указал в нужную комнату?
Просто:
typedef struct player {
int maxhealth;
int curhealth;
int in_combat;
monster c_enemy;
char *class;
char *condition;
rooms *c_room; // Like this?
inventory i;
stats stats;
} player;
// And then the assignment would look like:
c_room = *rooms[3]; <- an array of rooms for the dungeon in the game.