構造体型の配列宣言を行うことにより同じタイプのデータをとりあつかう構造体のメンバ変数を簡単に作製することができるようになります

ソーラー「



構造体Character


を作製することには


まだまだ利点があります


たとえば


Characterの構造体宣言

👇

struct Character{

int x;

int y:

int graphichandle;

};


👆

を行って


構造体Character


を作製しておけば


🍎同じタイプの🍎


飛行機のいる位置を表すx座標のデータ


飛行機のいる位置を表すy座標のデータ


飛行機のグラフィックデータに割り当てられたグラフィックハンドル(数値データ)



データにより構成される


飛行機(自機)

飛行機1(自機1)

飛行機2(自機2)

飛行機3(自機3)

飛行機4(自機4)

飛行機5(自機5)

飛行機6(自機6)

飛行機7(自機7)


敵の飛行機(敵機)

敵の飛行機1(敵機1)

敵の飛行機2(敵機2)

敵の飛行機3(敵機3)

敵の飛行機4(敵機4)

敵の飛行機5(敵機5)



ゲーム画面に


登場させるときに


それら


飛行機(自機)

飛行機1(自機1)

飛行機2(自機2)

飛行機3(自機3)

飛行機4(自機4)

飛行機5(自機5)

飛行機6(自機6)

飛行機7(自機7)


敵の飛行機(敵機)

敵の飛行機1(敵機1)

敵の飛行機2(敵機2)

敵の飛行機3(敵機3)

敵の飛行機4(敵機4)

敵の飛行機5(敵機5)



構成するデータを


構造体変数宣言


struct Character jibunnohikouki;//🌞jibunnohikoukiは自機に対応しています

struct Character jibunnohikouki1;//🌞jibunnohikouki1は自機1に対応しています

struct Character jibunnohikouki2;//🌞jibunnohikouki2は自機2に対応しています

struct Character jibunnohikouki3;//🌞jibunnohikouki3は自機3に対応しています

struct Character jibunnohikouki4;//🌞jibunnohikouki4は自機4に対応しています

struct Character jibunnohikouki5;//🌞jibunnohikouki5は自機5に対応しています

struct Character jibunnohikouki6;//🌞jibunnohikouki6は自機6に対応しています

struct Character jibunnohikouki7;//🌞jibunnohikouki7は自機7に対応しています


struct Character tekinohikouki;//🌞tekinohikoukiは敵機に対応しています

struct Character tekinohikouki1;//🌞tekinohikoukiは敵機1に対応しています

struct Character tekinohikouki2;//🌞tekinohikouki2は敵機2に対応しています

struct Character tekinohikouki3;//🌞tekinohikouki3は敵機3に対応しています

struct Character tekinohikouki4;//🌞tekinohikouki4は敵機4に対応しています

struct Character tekinohikouki5;//🌞tekinohikouki5は敵機5に対応しています



を行い


生成される


構造体変数

jibunnohikouki

jibunnohikouki1

jibunnohikouki2

jibunnohikouki3

jibunnohikouki4

jibunnohikouki5

jibunnohikouki6

jibunnohikouki7


tekinohikouki

tekinohikouki1

tekinohikouki2

tekinohikouki3

tekinohikouki4

tekinohikouki5

のメンバ変数


具体的には


構造体変数jibunnohikoukiのメンバ変数


jibunnohikouki.x

jibunnohikouki.y

jibunnohikouki.graphichandle



構造体変数jibunnohikouki1のメンバ変数


jibunnohikouki1.x

jibunnohikouki1.y

jibunnohikouki1.graphichandle



構造体変数jibunnohikouki2のメンバ変数


jibunnohikouki2.x

jibunnohikouki2.y

jibunnohikouki2.graphichandle



構造体変数jibunnohikouki3のメンバ変数


jibunnohikouki3.x

jibunnohikouki3.y

jibunnohikouki3.graphichandle



構造体変数jibunnohikouki4のメンバ変数


jibunnohikouki4.x

jibunnohikouki4.y

jibunnohikouki4.graphichandle



構造体変数jibunnohikouki5のメンバ変数


jibunnohikouki5.x

jibunnohikouki5.y

jibunnohikouki5.graphichandle


構造体変数jibunnohikouki6のメンバ変数


jibunnohikouki6.x

jibunnohikouki6.y

jibunnohikouki6.graphichandle




構造体変数jibunnohikouki7のメンバ変数


jibunnohikouki7.x

jibunnohikouki7.y

jibunnohikouki7.graphichandle






構造体変数tekinohikoukiのメンバ変数


tekinohikouki.x

tekinohikouki.y

tekinohikouki.graphichandle


構造体変数tekinohikouki1のメンバ変数


tekinohikouki1.x

tekinohikouki1.y

tekinohikouki1.graphichandle


構造体変数tekinohikouki2のメンバ変数


tekinohikouki2.x

tekinohikouki2.y

tekinohikouki2.graphichandle


構造体変数tekinohikouki3のメンバ変数


tekinohikouki3.x

tekinohikouki3.y

tekinohikouki3.graphichandle


構造体変数tekinohikouki4のメンバ変数


tekinohikouki4.x

tekinohikouki4.y

tekinohikouki4.graphichandle


構造体変数tekinohikouki5のメンバ変数


tekinohikouki5.x

tekinohikouki5.y

tekinohikouki5.graphichandle



を用いて


取り扱うことができるようになります


そうすれば


プログラムの中で


jibunnohikouki5.x

jibunnohikouki5.y

jibunnohikouki5.graphichandle


をみかけたとき


jibunnohikouki5.x

jibunnohikouki5.y

jibunnohikouki5.graphichandle



飛行機5(自機5)のいる位置を表すx座標のデータ


飛行機5(自機5)のいる位置を表すy座標のデータ


それに


飛行機5(自機5)のグラフィックデータに割り当てられたグラフィックハンドル(数値データ)


を取り扱っているのが簡単にわかるね」


マックス「味方の飛行機も敵の飛行機も


同じタイプの


飛行機のいる位置を表すx座標のデータ


飛行機のいる位置を表すy座標のデータ


飛行機のグラフィックデータに割り当てられたグラフィックハンドル(数値データ)


のデータにより構成されているなら


Chracter型の構造体変数のメンバ変数でデータを取り扱うことができるってわけだ」



ソーラー「そうなんです



飛行機(自機)

飛行機1(自機1)

飛行機2(自機2)

飛行機3(自機3)

飛行機4(自機4)

飛行機5(自機5)

飛行機6(自機6)

飛行機7(自機7)


敵の飛行機(敵機)

敵の飛行機1(敵機1)

敵の飛行機2(敵機2)

敵の飛行機3(敵機3)

敵の飛行機4(敵機4)

敵の飛行機5(敵機5)



ゲーム画面に


登場させるときに


飛行機(自機)

飛行機1(自機1)

飛行機2(自機2)

飛行機3(自機3)

飛行機4(自機4)

飛行機5(自機5)

飛行機6(自機6)

飛行機7(自機7)


敵の飛行機(敵機)

敵の飛行機1(敵機1)

敵の飛行機2(敵機2)

敵の飛行機3(敵機3)

敵の飛行機4(敵機4)

敵の飛行機5(敵機5)


構成するデータを


🌞取り扱うために🌞


構造体変数宣言



struct Character jibunnohikouki;//🌞jibunnohikoukiは自機に対応しています

struct Character jibunnohikouki1;//🌞jibunnohikouki1は自機1に対応しています

struct Character jibunnohikouki2;//🌞jibunnohikouki2は自機2に対応しています

struct Character jibunnohikouki3;//🌞jibunnohikouki3は自機3に対応しています

struct Character jibunnohikouki4;//🌞jibunnohikouki4は自機4に対応しています

struct Character jibunnohikouki5;//🌞jibunnohikouki5は自機5に対応しています

struct Character jibunnohikouki6;//🌞jibunnohikouki6は自機6に対応しています

struct Character jibunnohikouki7;//🌞jibunnohikouki7は自機7に対応しています


struct Character tekinohikouki;//🌞tekinohikoukiは敵機に対応しています

struct Character tekinohikouki1;//🌞tekinohikoukiは敵機1に対応しています

struct Character tekinohikouki2;//🌞tekinohikouki2は敵機2に対応しています

struct Character tekinohikouki3;//🌞tekinohikouki3は敵機3に対応しています

struct Character tekinohikouki4;//🌞tekinohikouki4は敵機4に対応しています

struct Character tekinohikouki5;//🌞tekinohikouki5は敵機5に対応しています


おこない


構造体変数

jibunnohikouki

jibunnohikouki1

jibunnohikouki2

jibunnohikouki3

jibunnohikouki4

jibunnohikouki5

jibunnohikouki6

jibunnohikouki7


tekinohikouki

tekinohikouki1

tekinohikouki2

tekinohikouki3

tekinohikouki4

tekinohikouki5

のメンバ変数


具体的には


構造体変数jibunnohikoukiのメンバ変数


jibunnohikouki.x

jibunnohikouki.y

jibunnohikouki.graphichandle



構造体変数jibunnohikouki1のメンバ変数


jibunnohikouki1.x

jibunnohikouki1.y

jibunnohikouki1.graphichandle



構造体変数jibunnohikouki2のメンバ変数


jibunnohikouki2.x

jibunnohikouki2.y

jibunnohikouki2.graphichandle



構造体変数jibunnohikouki3のメンバ変数


jibunnohikouki3.x

jibunnohikouki3.y

jibunnohikouki3.graphichandle



構造体変数jibunnohikouki4のメンバ変数


jibunnohikouki4.x

jibunnohikouki4.y

jibunnohikouki4.graphichandle



構造体変数jibunnohikouki5のメンバ変数


jibunnohikouki5.x

jibunnohikouki5.y

jibunnohikouki5.graphichandle


構造体変数jibunnohikouki6のメンバ変数


jibunnohikouki6.x

jibunnohikouki6.y

jibunnohikouki6.graphichandle




構造体変数jibunnohikouki7のメンバ変数


jibunnohikouki7.x

jibunnohikouki7.y

jibunnohikouki7.graphichandle






構造体変数tekinohikoukiのメンバ変数


tekinohikouki.x

tekinohikouki.y

tekinohikouki.graphichandle


構造体変数tekinohikouki1のメンバ変数


tekinohikouki1.x

tekinohikouki1.y

tekinohikouki1.graphichandle


構造体変数tekinohikouki2のメンバ変数


tekinohikouki2.x

tekinohikouki2.y

tekinohikouki2.graphichandle


構造体変数tekinohikouki3のメンバ変数


tekinohikouki3.x

tekinohikouki3.y

tekinohikouki3.graphichandle


構造体変数tekinohikouki4のメンバ変数


tekinohikouki4.x

tekinohikouki4.y

tekinohikouki4.graphichandle


構造体変数tekinohikouki5のメンバ変数


tekinohikouki5.x

tekinohikouki5.y

tekinohikouki5.graphichandle



を作製してきましたが


構造体変数宣言



struct Character jibunnohikouki;//🌞jibunnohikoukiは自機に対応しています

struct Character jibunnohikouki1;//🌞jibunnohikouki1は自機1に対応しています

struct Character jibunnohikouki2;//🌞jibunnohikouki2は自機2に対応しています

struct Character jibunnohikouki3;//🌞jibunnohikouki3は自機3に対応しています

struct Character jibunnohikouki4;//🌞jibunnohikouki4は自機4に対応しています

struct Character jibunnohikouki5;//🌞jibunnohikouki5は自機5に対応しています

struct Character jibunnohikouki6;//🌞jibunnohikouki6は自機6に対応しています

struct Character jibunnohikouki7;//🌞jibunnohikouki7は自機7に対応しています


struct Character tekinohikouki;//🌞tekinohikoukiは敵機に対応しています

struct Character tekinohikouki1;//🌞tekinohikoukiは敵機1に対応しています

struct Character tekinohikouki2;//🌞tekinohikouki2は敵機2に対応しています

struct Character tekinohikouki3;//🌞tekinohikouki3は敵機3に対応しています

struct Character tekinohikouki4;//🌞tekinohikouki4は敵機4に対応しています

struct Character tekinohikouki5;//🌞tekinohikouki5は敵機5に対応しています



行うのが


ちょっと手間ですね


そこで


構造体変数宣言



struct Character jibunnohikouki;//🌞jibunnohikoukiは自機に対応しています

struct Character jibunnohikouki1;//🌞jibunnohikouki1は自機1に対応しています

struct Character jibunnohikouki2;//🌞jibunnohikouki2は自機2に対応しています

struct Character jibunnohikouki3;//🌞jibunnohikouki3は自機3に対応しています

struct Character jibunnohikouki4;//🌞jibunnohikouki4は自機4に対応しています

struct Character jibunnohikouki5;//🌞jibunnohikouki5は自機5に対応しています

struct Character jibunnohikouki6;//🌞jibunnohikouki6は自機6に対応しています

struct Character jibunnohikouki7;//🌞jibunnohikouki7は自機7に対応しています


struct Character tekinohikouki;//🌞tekinohikoukiは敵機に対応しています

struct Character tekinohikouki1;//🌞tekinohikoukiは敵機1に対応しています

struct Character tekinohikouki2;//🌞tekinohikouki2は敵機2に対応しています

struct Character tekinohikouki3;//🌞tekinohikouki3は敵機3に対応しています

struct Character tekinohikouki4;//🌞tekinohikouki4は敵機4に対応しています

struct Character tekinohikouki5;//🌞tekinohikouki5は敵機5に対応しています



の部分を


配列を用いて書き換えてみたいと思います」


solarplexuss「配列


なんじゃそりゃあ


未知との遭遇じゃ~」


マックス「配列・・・どこか遠い世界でできいたような感じがするが・・・


気のせいか?」


ソーラー「


配列について詳しく知りたい方は


天国にいけるC言語入門ヘキサ構造体


『配列の仕組みについて学んでみよう』


のエピソードをご覧ください

👇

https://kakuyomu.jp/works/1177354054881541503/episodes/1177354054882934895



例えば

a

a1

a2

a3

a4

a5

a6

int型の変数宣言


int a;

int a1;

int a2;

int a3;

int a4;

int a5;

int a6;



行うと


int型の変数

a

a1

a2

a3

a4

a5

a6



生成されることになります


この


int型の変数

a

a1

a2

a3

a4

a5

a6

数値データ

0

1

2

3

4

5

6

を代入するには


a=0;

a1=1;

a2=2;

a3=3;

a4=4;

a5=5;

a6=6;


を実行することになります



ちょっと手間ですね


そこで


配列を用いることになります


配列を用いると


今 行ったことが


int a[7]={0,1,2,3,4,5,6};


で終了します



solarplexuss「ええっと すごく簡単になった


どういう仕組みなの」



ソーラー「


int a[7]={0,1,2,3,4,5,6};


int a[7]


の実行により


int型の配列変数


a[0]

a[1]

a[2]

a[3]

a[4]

a[5]

a[6]


が生成されます


int a[7]={0,1,2,3,4,5,6};


の右辺が


{0,1,2,3,4,5,6}


と記述されているので


int型の配列変数


a[0]

a[1]

a[2]

a[3]

a[4]

a[5]

a[6]



a[0]=0;

a[1]=1;

a[2]=2;

a[3]=3;

a[4]=4;

a[5]=5;

a[6]=6;

a[7]=7;


数値データ


0

1

2

3

4

5

6

7


が代入されることになります



同様に



構造体変数宣言



struct Character jibunnohikouki;//🌞jibunnohikoukiは自機に対応しています

struct Character jibunnohikouki1;//🌞jibunnohikouki1は自機1に対応しています

struct Character jibunnohikouki2;//🌞jibunnohikouki2は自機2に対応しています

struct Character jibunnohikouki3;//🌞jibunnohikouki3は自機3に対応しています

struct Character jibunnohikouki4;//🌞jibunnohikouki4は自機4に対応しています

struct Character jibunnohikouki5;//🌞jibunnohikouki5は自機5に対応しています

struct Character jibunnohikouki6;//🌞jibunnohikouki6は自機6に対応しています

struct Character jibunnohikouki7;//🌞jibunnohikouki7は自機7に対応しています


struct Character tekinohikouki;//🌞tekinohikoukiは敵機に対応しています

struct Character tekinohikouki1;//🌞tekinohikoukiは敵機1に対応しています

struct Character tekinohikouki2;//🌞tekinohikouki2は敵機2に対応しています

struct Character tekinohikouki3;//🌞tekinohikouki3は敵機3に対応しています

struct Character tekinohikouki4;//🌞tekinohikouki4は敵機4に対応しています

struct Character tekinohikouki5;//🌞tekinohikouki5は敵機5に対応しています



struct Character jibunnohikouki[7];


struct Character tekinohikouki[5];


と書き換えることができます」


solarplexuss「わあ プログラムの記述が短くなった」



ソーラー「


int a[7];



aのint型の配列宣言


と呼ばれたように


struct Character jibunnohikouki[7];



jibunnohikoukiの構造体Character型の配列宣言


と呼びます


このように


構造体Characterを作製しておけば


たくさんの


同じタイプの


飛行機のいる位置を表すx座標のデータ


飛行機のいる位置を表すy座標のデータ


飛行機のグラフィックデータに割り当てられたグラフィックハンドル(数値データ)



のデータを持つ飛行機をゲーム画面に登場させるときに


それらの飛行機のデータをとりあつかう


構造体変数のメンバ変数を


簡単に


作製することができるんだよ


だから



          飛行機ごとに


たとえば


飛行機1の


飛行機1のいる位置を表すx座標のデータ


飛行機1のいる位置を表すy座標のデータ


飛行機1のグラフィックデータに割り当てられたグラフィックハンドル(数値データ)


を取り扱うために


変数

x1

y1

graphichandle1


を生成し


飛行機2の


飛行機2のいる位置を表すx座標のデータ


飛行機2のいる位置を表すy座標のデータ


飛行機2のグラフィックデータに割り当てられたグラフィックハンドル(数値データ)


を取り扱うために


変数

x2

y2

graphichandle2


を作製するようなことをしなくてもよくなるんだね」






  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る