構造体の使い方

 前回は、RPGのキャラクターのステータスに例えて、構造体の概要を説明しました。では、実際に構造体をどのように宣言してプログラムを書いていくかについて、今回は見ていきましょう。RPGの味方キャラクターには、

  • 名前
  • 職業
  • レベル
  • HP
  • MP

 などのステータスを持っていることを前回、お伝えしました。これらのステータスを構造体で書いていきましょう。例えば、

  • 名前:ああああ
  • 職業:戦士
  • レベル:40
  • HP:360
  • MP:0

  • 名前:いいいい
  • 職業:魔法使い
  • レベル:38
  • HP:250
  • MP:230

 このような2人のキャラクターがいるとします。このとき、

#include <stdio.h>
#include <string.h>

struct person {
    char name[40];      // 名前
    char job[40];       // 職業
    int lv;             // レベル
    int hp;             // HP
    int mp;             // MP
};

void showStatus(struct person chara) {
    printf("名前:%s\n", chara.name);
    printf("職業:%s\n", chara.job);
    printf("レベル:%d\n", chara.lv);
    printf("HP:%d\n", chara.hp);
    printf("MP:%d\n", chara.mp);
}

int main(int argc, const char * argv[])
{
    
    // insert code here...
    
    // 戦士「ああああ」
    struct person aaaa;
    strcpy(aaaa.name, "ああああ");
    strcpy(aaaa.job, "戦士");
    aaaa.lv = 40;
    aaaa.hp = 360;
    aaaa.mp = 0;
    
    showStatus(aaaa);
    
    // 魔法使い「いいいい」
    struct person iiii;
    strcpy(iiii.name, "いいいい");
    strcpy(iiii.job, "魔法使い");
    iiii.lv = 38;
    iiii.hp = 250;
    iiii.mp = 230;
    
    showStatus(iiii);
    
    return 0;
}

 このようにプログラムを書いて実行すると、

名前:ああああ
職業:戦士
レベル:40
HP:360
MP:0
名前:いいいい
職業:魔法使い
レベル:38
HP:250
MP:230

 このように表示されます。

 まず、キャラクターの構造体として、personという型名の構造体を宣言しています。その中に、名前、職業、レベル、HP、MPといったステータス項目を指定しています({}の最後に;がつきますので注意して下さい)。そして、person型の変数aaaaとiiiiを作成し、各ステータス項目を格納しています(文字列を格納する際はstrcpy関数を利用すると便利です)。各ステータス項目を利用するときは「aaaa.name」のように書きます。ドットは、日本語の助詞の「の」だとお考え下さい。【「aaaa」の「name」】という意味です。

■スポンサーリンク

このページの先頭へ