さあC言語(DXライブラリ)を使って超繊細、美麗、箱庭シューティングゲームを作ってみましょう 超初心者向けです 0.367
int hassyasareru_RuRunotama[1];によって生成される 配列変数 hassyasareru_RuRunotama[0]の説明です
int hassyasareru_RuRunotama[1];によって生成される 配列変数 hassyasareru_RuRunotama[0]の説明です
ソーラー「さあ だいぶ進んできたね
さて
お次は
//👇🌞🐋🐋🐋🐋🐋🐋敵の飛行機ルルの弾のサブ設定です🐋🐋🐋🐋🐋🐋
int RuRunotama_count[1][10];
for (int i = 0; i < 1; i = i + 1) {
for (int j = 0; j < 10; j = j + 1) {
RuRunotama_count[i][j] = 0;
}
}
int RuRunotama_tsix[1][10]; //🌞🌞🌞 RuRunotama_tsix[i][j]には発射される敵の弾[i][j]の発射される位置のx座標が代入されることになります tは弾、sは最初、iは位置、xはx座標を表しています
for (int i = 0; i < 1; i = i + 1) {
for (int j = 0; j < 10; j = j + 1) {
RuRunotama_tsix[i][j] = 0;
}
}
int hassyasareru_RuRunotama[1];
for (int i = 0; i < 1; i++) {
hassyasareru_RuRunotama[i] = 0;
}
//👆🌞🐋🐋🐋🐋🐋🐋敵の飛行機ルルの弾のサブ設定です🐋🐋🐋🐋🐋🐋
の中の
int hassyasareru_RuRunotama[1];
によって生成される
配列
hassyasareru_RuRunotama[1]
配列変数は
hassyasareru_RuRunotama[
の
説明ですね」
マックス「なんにゃんだ
👇
int hassyasareru_RuRunotama[1];
for (int i = 0; i < 1; i++) {
hassyasareru_RuRunotama[i] = 0;
}
👆
この初期化の仕方は?
for (int i = 0; i < 1; i++) {
hassyasareru_RuRunotama[i] = 0;
}
じゃなくても
hassyasareru_RuRunotama[0] = 0;
で
いいんじゃないのか?」
ソーラー「そこは気まぐれです」
マックス「なぬぅ」
ソーラー「実は
ルルを10体登場させようってなったときに
int hassyasareru_RuRunotama[
for (int i = 0; i < 1; i++) {
hassyasareru_RuRunotama[i] = 0;
}
と記述しておけば
int hassyasareru_RuRunotama[
for (int i = 0; i <
hassyasareru_RuRunotama[i] = 0;
}
と
1を10に変えればいいだけなので
変更するのが簡単なんです
だから
int hassyasareru_RuRunotama[1];
for (int i = 0; i < 1; i++) {
hassyasareru_RuRunotama[i] = 0;
}
を
実行しておいたんだよ」
マックス「さっきのエピソードの場合と同じか」
ソーラー「それでは
配列変数
hassyasareru_RuRunotama[0]
の
働きがどうなっているか
🌞💖💖💖💖💖💖💖💖30.敵の飛行機ルルの弾の挙動の設定です💖💖💖💖💖💖💖💖
をみていきましょう
👇
👇
👇
//👇🌞💖💖💖💖💖💖💖💖30.敵の飛行機ルルの弾の挙動の設定です💖💖💖💖💖💖💖💖
//👇🌞🌞🌞新型 敵の飛行機ルルから敵の飛行機ルルの弾が10連射されるプログラムです
for (int i = 0; i < 1; i = i + 1) {
if (RuRu[i].life > 0 && GetRand(15) == 0 && RuRunotama[i][0].life == 0 && hassyasareru_RuRunotama[i] == 0) {
RuRunotama[i][0].x = RuRu[i].x - 5;
RuRunotama[i][0].y = RuRu[i].y + 120;
RuRunotama_tsix[i][0] = RuRunotama[i][0].x;
RuRunotama[i][0].life = 1;
hassyasareru_RuRunotama[i] = 1;
RuRunotama_count[i][0] = 20 + GetRand(25);//👈🌞🌞🌞敵の飛行機ルルRuRu[i]から10連射される最初の弾RuRunotama[i][0]と次弾RuRunotama[i][1]の間隔を調整することができます
}
for (int j = 0; j < 9; j++) {
if (RuRunotama_count[i][j] > 0) { RuRunotama_count[i][j] = RuRunotama_count[i][j] - 1; }
if (RuRunotama_count[i][j] == 0 && hassyasareru_RuRunotama[i] == j + 1) {
if (RuRunotama[i][j + 1].life == 0) {
RuRunotama[i][j + 1].x = RuRu[i].x - 5;
RuRunotama[i][j + 1].y = RuRu[i].y + 120;
RuRunotama_tsix[i][j + 1] = RuRunotama[i][j + 1].x;
RuRunotama[i][j + 1].life = 1;
hassyasareru_RuRunotama[i] = j + 2;
RuRunotama_count[i][j + 1] = 20 + GetRand(25);//👈🌞🌞🌞敵の飛行機ルルRuRunohikouki[i]から10連射される敵の飛行機ルルの弾RuRunotama[i][j + 1]と次に発射される弾RuRunotama[i][j + 2]の間隔を調整することができます
}
}
}
if (RuRunotama_count[i][9] > 0) { RuRunotama_count[i][9] = RuRunotama_count[i][9] - 1; }
if (RuRunotama_count[i][9] == 0 && hassyasareru_RuRunotama[i] == 10) {
hassyasareru_RuRunotama[i] = 0;
}
for (int j = 0; j < 10; j = j + 1) {
if (RuRunotama[i][j].life == 1) {
//🌞🌞🌞 RuRunotama[i][j].lifeに1が代入されていると敵の飛行機ルルの弾RuRunotama[i][j]がゲーム画面に表示されることになります RuRunotama[i][j].lifeに0が代入されていると敵の飛行機ルルの弾RuRunotama[i][j]がゲーム画面に表示されることはありません
DrawGraph(RuRunotama[i][j].x, RuRunotama[i][j].y, RuRunotama[i][j].graphichandle[0], TRUE);
RuRunotama[i][j].x = RuRunotama[i][j].x - 1;
if (RuRunotama_tsix[i][j] - RuRunotama[i][j].x > 765)
//🌞🌞🌞発射された敵の飛行機ルルの弾RuRunotama[i][j]の位置のx座標が発射されたときの最初の敵の飛行機ルルの弾の位置のx座標から🍑左へ🍑765を超えて離れると条件式RuRunotama_tsix[i][j] - RuRunotama[i][j].xは真の値1をとることになります
//🌞🌞🌞🌞🌞👆 RuRunotama_tsix[i][j]には敵の弾RuRunotama[i][j]が発射されたときの敵の飛行機ルルの弾RuRunotama[i][j]のいる位置のx座標を代入していたので敵の飛行機ルルの弾のx座標RuRunotama[i][j].xが敵の飛行機ルルの弾RuRunotama[i][j]が発射されたときの敵の飛行機ルルの弾RuRunotama[i][j]のいた位置から765ドット離れた時、条件式RuRunotama_tsix[i][j] - RuRunotama[i][j].x > 765は真の値1を持つことになります
RuRunotama[i][j].life = 0;
}
}
}
}
//👆🌞💖💖💖💖💖💖💖💖30.敵の飛行機ルルの弾の挙動の設定です💖💖💖💖💖💖💖💖
ソーラー「
この命令文では
敵の飛行機ルルから
普通の弾が
RuRunotama[0][0]
RuRunotama[0][1]
RuRunotama[0][2]
RuRunotama[0][3]
RuRunotama[0][4]
RuRunotama[0][5]
RuRunotama[0][6]
RuRunotama[0][7]
RuRunotama[0][8]
RuRunotama[0][9]
の順番で発射されますが
配列変数
hassyasareru_jibunnotama[0]
は
この順番で
発射されるように
するためにあります
for (int j = 0; j < 9; j++) {
if (RuRunotama_count[i][j] > 0) { RuRunotama_count[i][j] = RuRunotama_count[i][j] - 1; }
をみると
while{}文のブロック{}内の命令文が1回繰り返し実行されるごとに
RuRunotama_count[i][j]に格納される値が
1減っていきます
そして
最後は
0になるわけです
具体的には
RuRunotama[0][0]が発射されると
RuRunotama_count[0][0]に20 + GetRand(25)が代入されます
RuRunotama_count[0][0]に格納されている値が0になると
次の
RuRunotama[0][1]
が
発射されますが
発射される弾が
RuRunotama[0][1]になるように設定しているのが
この
hassyasareru_jibunnotama[0]なんです
このときhassyasareru_jibunnotama[0]に格納されている値は1です
RuRunotama_count[0][0]に格納されている値が0
で
hassyasareru_jibunnotama[0]に格納されている値が
1になったとき
RuRunotama_count[0][1]が発射されます」
マックス「じゃあ
RuRunotama_count[0][0]に格納されている値が0
で
hassyasareru_jibunnotama[0]に格納されている値が
1になったとき
RuRunotama_count[0][5]が発射されるようにすることもできるのか?」
ソーラー「もちろんです でも
そういう機会があるかな?^_^
微妙いかも」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます