#include<stdio.h>
main(){
int mycharlv,mycharhp,mycharmp; /* マイキャラのLV,HP,MP */
int alv,ahp,amp; /* 友人AのLV,HP,MP */
int tyubosslv,tyubosshp,tyubossmp; /* 中ボスのLV,HP,MP */
int bosslv,bosshp,bossmp; /* ボスのLV,HP,MP */
(以下省略)
見ての通り、ここでは「キャラクター数*能力の要素数」分の変数を宣言しています。まぁ、ここでは登場人物が4人だけなので、こういった記述の仕方でもそれほど支障は無いのかもしれません。しかし、もしこれが、パーティのメンバー5人と、敵の四天王、真のボスにマスコット的援助キャラ、隠れキャライーザーカー(ってどさくさに紛れるな)など、登場人物がかなり多い場合はどうでしょう。しかも、能力の要素の方も、攻撃力や必殺率、防御率、すばやさ、回避率等、いろいろと細分化されているとしたらどうでしょう。少なくとも、こういった記述の仕方では、かなり見辛いプログラムになってしまうことは間違いありません。struct 人物 マイキャラ,友人A,中ボス,ボス;
としてしまえばいいのです。
#include<stdio.h>
struct zinbutsu{ /* 人物 */
int lv; /* LV */
int hp; /* HP */
int mp; /* MP */
};
main(){
struct zinbutsu mychar,a,tyuboss,boss; /* マイキャラと友人A、中ボス、ボスの宣言 */
(以下省略)
といった感じです。
それでもって、例えば、マイキャラのLVを7、HPを50、MPを25にしたい時は、
/* マイキャラのLVとHP、MP設定 */
mychar.lv=7;
mychar.hp=50;
mychar.mp=25;
と書けばいいのです。
#include<stdio.h>
struct zinbutsu{ int lv,hp,mp; }mychar,boss;
main(){
/* マイキャラのLVとHP、MP */
mychar.lv=7;
mychar.hp=50;
mychar.mp=25;
/* ボスのLVとHP、MP */
boss.lv=30;
boss.hp=500;
boss.mp=100;
(以下省略)
さらに、構造体の名前(つまりzinbutsu)を宣言しない方法もあります。
struct{ int lv,hp,mp; }mychar,boss;
#include<stdio.h>
typedef struct{ int lv,hp,mp; }zinbutsu;
main(){
zinbutsu mychar,boss; /* マイキャラとボスの宣言 */
/* structが無い...zinbutsu型として宣言している */
/* マイキャラのLVとHP、MP */
mychar.lv=7;
mychar.hp=50;
mychar.mp=25;
/* ボスのLVとHP、MP */
boss.lv=30;
boss.hp=500;
boss.mp=100;
(以下省略)
つづく。