練習課題:闘技場のプログラムを作る

 ここまで、構造体について解説してきました。ここで、構造体を用いた練習課題に挑戦してみましょう。せっかくなので、RPGっぽいものを作ってみましょう。

 課題:簡単な闘技場(対人バトル)のプログラムを書いて下さい。2人のキャラクターを作成します。キャラクターには「HP」「攻撃力」のステータスを持たせます。相手に攻撃すると、相手は攻撃力の数値分、HPが減ります。先にHPが0になった方が負けです。

 ぜひ、まずは自力で考えてみて、プログラムを書いて、実行してみて下さい。

 …… 

 では、回答例を以下に掲載します。

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

struct person {
    char name[40];          // 名前
    int hp;                 // HP
    int power;              // 攻撃力
};
typedef struct person character;

int main(int argc, const char * argv[])
{
    
    // insert code here...
    
    // 戦士「ああああ」
    character aaaa;
    strcpy(aaaa.name, "ああああ");
    aaaa.hp = 360;
    aaaa.power = 80;
    
    // 戦士い「いいいい」
    character iiii;
    strcpy(iiii.name, "いいいい");
    iiii.hp = 300;
    iiii.power = 90;
    
    while(1) {
        // 「ああああ」の攻撃
        printf("%s の、のこりHP:%d\n", iiii.name, iiii.hp);
        printf("%s のこうげき!\n", aaaa.name);
        printf("%s は、%d のダメージをうけた!\n", iiii.name, aaaa.power);
        iiii.hp = iiii.hp - aaaa.power;
        if(iiii.hp < 0) {
            printf("%s は、たおれてしまった! %s のかち!\n", iiii.name, aaaa.name);
            break;
        }
        
        // 「いいいい」の攻撃
        printf("%s の、のこりHP:%d\n", aaaa.name, aaaa.hp);
        printf("%s のこうげき!\n", iiii.name);
        printf("%s は、%d のダメージをうけた!\n", aaaa.name, iiii.power);
        aaaa.hp = aaaa.hp - iiii.power;
        if(aaaa.hp < 0) {
            printf("%s は、たおれてしまった! %s のかち!\n", aaaa.name, iiii.name);
            break;
        }
    }
    
    return 0;
}

 実行すると、以下のような内容が表示されます。

いいいい の、のこりHP:300
ああああ のこうげき!
いいいい は、80 のダメージをうけた!
ああああ の、のこりHP:360
いいいい のこうげき!
ああああ は、90 のダメージをうけた!
いいいい の、のこりHP:220
ああああ のこうげき!
いいいい は、80 のダメージをうけた!
ああああ の、のこりHP:270
いいいい のこうげき!
ああああ は、90 のダメージをうけた!
いいいい の、のこりHP:140
ああああ のこうげき!
いいいい は、80 のダメージをうけた!
ああああ の、のこりHP:180
いいいい のこうげき!
ああああ は、90 のダメージをうけた!
いいいい の、のこりHP:60
ああああ のこうげき!
いいいい は、80 のダメージをうけた!
いいいい は、たおれてしまった! ああああ のかち!

 無限ループを使うなどして、少し難しかったかもしれません。HPや攻撃力の数値を変えて、遊んでみて下さい。

■スポンサーリンク

このページの先頭へ