現在、C言語のテキストベースのゲームで作業していますが、特定のイベントが発生したときに値を変更する際に問題が発生しています。ここに私のデータ構造のコードの一部です:異なる構造体内の構造体へのポインタ。 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に戻ることを確認するために戻ってきて、これをテストしました。
だから、私はどのように正しい部屋を指していますか? ジャスト:c_room
は、あなたが正しいプレーン構造体ではなくポインタであると仮定すると
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.
「部屋」が何であるか教えてください。それは 'typedef'-ed' struct'ですか? –
は妥当です。何かがあなたにこれが働いていないと思うのですか? – mfrankli
あなたはc_room =&(room [3])が必要だと思います。あなたが部屋を持っている場合は// 4部屋を指し示す* c_room; – Glenn