さあC言語(DXライブラリ)を使って超繊細、美麗、箱庭シューティングゲームを作ってみましょう 超初心者向けです 0.367
構造体型の配列宣言を行うことにより同じタイプのデータをとりあつかう構造体のメンバ変数を簡単に作製することができるようになります
構造体型の配列宣言を行うことにより同じタイプのデータをとりあつかう構造体のメンバ変数を簡単に作製することができるようになります
ソーラー「
構造体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
を作製するようなことをしなくてもよくなるんだね」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます