オレンジリング50体もしくはオレンジリング10体を重ならないように移動させてみよう




マックス「考えをまとめてみようではないか



オレンジリングの画像サイズが


幅50ドット×高さ50ドット



オレンジリングを10体登場させているとき


こんな風に

👇

double orange_ringnoidoupattern[4][3] = { {2000,-5, 0},{2000,0,-5},{2000,5, 0},{2000,0,5} };//👈🌞🌞🌞🌞🌞ここです。5、-5に注目です。オレンジリングはwhile{}文のブロック{}内の命令文が1回繰り返し実行されるたびに5ドット単位で移動することになります

👆

オレンジリングの移動速度を5ドット単位に設定したら


オレンジリングは重なって表示されることになったな


具体例では


0番目のオレンジリングの座標が


(580,200)だったら


1番目のオレンジリングの座標は


(585,200)


2番目のオレンジリングの座標は


(590,200)


3番目のオレンジリングの座標は


(595,200)


4番目のオレンジリングの座標は


(600,200)


5番目のオレンジリングの座標は


(605,200)


6番目のオレンジリングの座標は


(610,200)


7番目のオレンジリングの座標は


(615,200)


8番目のオレンジリングの座標は


(620,200)


9番目のオレンジリングの座標は


(625,200)


みたいな感じになるかな


こうなると


オレンジリングの画像サイズは


幅50ドット×高さ50ドット


なので


10体のオレンジリングは重なって表示されることになるってわけだ」



solarplexuss「


0番目のオレンジリングの座標が


(580,200)で



while{}文のブロック{}内の命令文が1回繰り返し実行されて


0番目のオレンジリングの座標が


左に5ドット移動して


(575,200)


になったとき


1番目のオレンジリングの座標には


元の0番目のオレンジリングの座標


(580,200)



代入されて


1番目のオレンジリングの座標は


(580,200)


になる


そうなると・・・


オレンジリングの画像サイズは


幅50ドット×高さ50ドット


なので


確かに


0番目のオレンジリング

1番目のオレンジリング


は重なっちゃう」


マックス「そうだろう そうだろう」


ソーラー「


それでは


オレンジリング10体を登場させたとき


                🍰実際に🍰


オレンジリングが重なって表示されるかどうか




オレンジリングの移動パターンを

👇



double orange_ringnoidoupattern[4][3] = { {2000,-5, 0},{2000,0,-5},{2000,5, 0},{2000,0,5} };//👈🌞🌞🌞🌞🌞ここです。5、-5に注目です。オレンジリングはwhile{}文のブロック{}内の命令文が1回繰り返し実行されるたびに5ドット単位で移動することになります



に設定して


すなわち


while{}文のブロック{}内の命令文が1回繰り返し実行されるときの


先頭のオレンジリング(0番目のオレンジリング)



移動速度を5ドット単位に設定して


プログラムを実行してみましょう


プログラムを実行すれば


オレンジリング10体は重なって表示されることになります」


そのプログラムはこちらです

👇


#include "DxLib.h"


struct Character {

double x;

double y;

int graphichandle[7];

int graphicnumber;//👈🌞メンバ変数にgraphicnumber を追加しました

int life;

};


//👆🌞Characterの構造体宣言です



int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{



ChangeWindowMode(TRUE); // ウインドウモードに設定します


if (DxLib_Init() == -1) // DXライブラリを初期化処理しています

{

return -1; // DXライブラリの初期化に失敗したら直ちにプログラムを終了します

}




SetDrawScreen(DX_SCREEN_BACK);//👈🌞SetDrawScreen関数です 裏画面に画像を描きます printfDxで表示される文字も裏画面に描かれることになります





//👇🌞🌞🌞🌞🌞ここから自分の飛行機と赤い敵の飛行機の設定です





struct Character jibunnohikouki;

//👆🌞jibunnohikoukiの構造体変数宣言です


jibunnohikouki.x = 0;


jibunnohikouki.y = 0;


jibunnohikouki.graphichandle[0] = LoadGraph("画像データ\\ソーラーが描いた飛行機.bmp");


jibunnohikouki.graphichandle[1] = LoadGraph("画像データ\\ソーラーが描いた飛行機1.bmp");


jibunnohikouki.graphichandle[2] = LoadGraph("画像データ\\ソーラーが描いた飛行機2.bmp");


jibunnohikouki.graphichandle[3] = LoadGraph("画像データ\\ソーラーが描いた飛行機3.bmp");


jibunnohikouki.graphichandle[4] = LoadGraph("画像データ\\ソーラーが描いた飛行機4.bmp");


jibunnohikouki.graphichandle[5] = LoadGraph("画像データ\\ソーラーが描いた飛行機5.bmp");


jibunnohikouki.graphichandle[6] = LoadGraph("画像データ\\ソーラーが描いた飛行機6.bmp");


jibunnohikouki.life = 600;//👈🌞🌞🌞 jibunnohikouki.life に格納される値を600にしてみました🌞🌞🌞



jibunnohikouki.graphicnumber = 0;

//👆 jibunnohikouki.graphicnumberは😋自分の飛行機😋のアニメーションパターンをとりあつかっています


//👆🌞構造体変数jibunnohikoukiのメンバ変数の初期化を行っています

//👆 構造体変数jibunnohikoukiは😋自分の飛行機😋のデータをとりあつかっています



struct Character akaitekinohikouki[10];

//👆🌞敵の飛行機を10体登場させています


for (int i = 0; i < 10; i++) {


akaitekinohikouki[i].x = 1000;//💖ここです 1000で初期化しました


akaitekinohikouki[i].y = 35 * i;


akaitekinohikouki[i].graphichandle[0] = LoadGraph("画像データ\\赤い敵の飛行機1.8.bmp");


akaitekinohikouki[i].graphichandle[1] = LoadGraph("画像データ\\赤い敵の飛行機1.3.bmp");


akaitekinohikouki[i].graphichandle[2] = LoadGraph("画像データ\\赤い敵の飛行機2.3.bmp");


akaitekinohikouki[i].graphichandle[3] = LoadGraph("画像データ\\赤い敵の飛行機3.3.bmp");


akaitekinohikouki[i].graphichandle[4] = LoadGraph("画像データ\\赤い敵の飛行機4.3.bmp");


akaitekinohikouki[i].graphichandle[5] = LoadGraph("画像データ\\赤い敵の飛行機5.3.bmp");


akaitekinohikouki[i].graphichandle[6] = LoadGraph("画像データ\\赤い敵の飛行機6.5.bmp");




akaitekinohikouki[i].graphicnumber = 128 * GetRand(6);


//👆 akaitekinohikouki[i].graphicnumberは😋敵の飛行機😋のアニメーションパターンをとりあつかっています


//👆ここです🌞🌞🌞ここでAkai tekinohikouki[i].graphicnumberにランダムに0,128,256,384,512,640,768の値が代入されることになります




akaitekinohikouki[i].life = 100;//👈🌞🌞🌞敵の飛行機に自分の弾が100発当たると破壊されるようにしました




}


struct Character jibunnotama[11];

//🌞👆自分の弾を11個作成しています

for (int i = 0; i < 10; i = i + 1) {


jibunnotama[i].x = 0;

jibunnotama[i].y = 0;


jibunnotama[i].graphichandle[0] = LoadGraph("画像データ\\自分の弾.bmp");


jibunnotama[i].life = 0;


}


jibunnotama[10].x = 641;

jibunnotama[10].y = 0;


//🌞🌞🌞見えない弾にするために jibunnotama[10].graphichandle[0] は画像データで初期化しません

jibunnotama[10].life = 0;




struct Character jibunnotama_lazer[11];

//🌞👆自分のレーザー弾を11個作成しています

for (int i = 0; i < 10; i = i + 1) {


jibunnotama_lazer[i].x = 0;

jibunnotama_lazer[i].y = 0;


jibunnotama_lazer[i].graphichandle[0] = LoadGraph("画像データ\\レーザー.bmp");//👈🌞🌞🌞💖💖💖ここです 自分のレーザー弾の画像データを読み込みます




jibunnotama_lazer[i].life = 0;


}



jibunnotama_lazer[10].x = 641;

jibunnotama_lazer[10].y = 0;


//🌞🌞🌞見えないレーザー弾にするために jibunnotama[10].graphichandle[0] は初期化しません

jibunnotama_lazer[10].life = 0;






struct Character akaitekinohikoukinotama[10][10];


//🌞👆敵の飛行機、敵の飛行機1、敵の飛行機2、敵の飛行機3、敵の飛行機4、敵の飛行機5、敵の飛行機6、敵の飛行機7 、敵の飛行機8、敵の飛行機9、敵の飛行機10から発射される10個の敵の弾のデータをとりあつかうために100個の構造体変数を作成しています



for (int i = 0; i < 10; i = i + 1) {


for (int j = 0; j < 10; j = j + 1) {


akaitekinohikoukinotama[i][j].x = 1000;

akaitekinohikoukinotama[i][j].y = 1000;


akaitekinohikoukinotama[i][j].graphichandle[0] = LoadGraph("画像データ\\敵の飛行機の弾ハート.bmp");


akaitekinohikoukinotama[i][j].life = 0;


}


}





struct Character akaitekinohikoukinobakuhatunohonoo[10];

//👆🌞構造体変数akaitekinohikoukinobakuhatunohonoo[0], akaitekinohikoukinobakuhatunohonoo[1]… akaitekinohikoukinobakuhatunohonoo[9]を作成し爆発の炎のデータを取り扱います


for (int i = 0; i < 10; i++) {


akaitekinohikoukinobakuhatunohonoo[i].x = 0;


akaitekinohikoukinobakuhatunohonoo[i].y = 0;


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[0] = LoadGraph("画像データ\\爆発の炎.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[1] = LoadGraph("画像データ\\爆発の炎1.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[2] = LoadGraph("画像データ\\爆発の炎2.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[3] = LoadGraph("画像データ\\爆発の炎3.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[4] = LoadGraph("画像データ\\爆発の炎4.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[5] = LoadGraph("画像データ\\爆発の炎5.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[6] = LoadGraph("画像データ\\爆発の炎6.bmp");



akaitekinohikoukinobakuhatunohonoo[i].life = 0;//🌞🌞🌞 bakuhatunohonoo.lifeを初期化しています



akaitekinohikoukinobakuhatunohonoo[i].graphicnumber = 0; //🌞🌞🌞爆発の炎ごとにgraphicnumberを用意して初期化しています


}



struct Character akaitekinohikoukiwooouhikari;


akaitekinohikoukiwooouhikari.x = 0;


akaitekinohikoukiwooouhikari.y = 0;


akaitekinohikoukiwooouhikari.graphichandle[0] = LoadGraph("画像データ\\赤い敵の飛行機を覆う光.bmp");




akaitekinohikoukiwooouhikari.life = 0;




struct Character jibunnohikoukinobakuhatunohonoo;

//👆🌞構造体変数jibunnohikoukinobakuhatunohonooを作成し自分の飛行機の爆発の炎のデータを取り扱います




jibunnohikoukinobakuhatunohonoo.x = 0;


jibunnohikoukinobakuhatunohonoo.y = 0;


jibunnohikoukinobakuhatunohonoo.graphichandle[0] = LoadGraph("画像データ\\自分の飛行機の爆発の炎.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[1] = LoadGraph("画像データ\\自分の飛行機の爆発の炎1.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[2] = LoadGraph("画像データ\\自分の飛行機の爆発の炎2.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[3] = LoadGraph("画像データ\\自分の飛行機の爆発の炎3.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[4] = LoadGraph("画像データ\\自分の飛行機の爆発の炎4.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[5] = LoadGraph("画像データ\\自分の飛行機の爆発の炎5.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[6] = LoadGraph("画像データ\\自分の飛行機の爆発の炎6.bmp");



jibunnohikoukinobakuhatunohonoo.life = 0;//🌞🌞🌞 jibunnohikoukinobakuhatunohonoo.lifeを初期化しています



jibunnohikoukinobakuhatunohonoo.graphicnumber = 0; //🌞🌞🌞自分の飛行機の爆発の炎のgraphicnumberを用意して初期化しています



struct Character jibunnohikoukiwooouhikari;



jibunnohikoukiwooouhikari.x = 0;


jibunnohikoukiwooouhikari.y = 0;


jibunnohikoukiwooouhikari.graphichandle[0] = LoadGraph("画像データ\\ソーラーが描いた飛行機を覆う光.bmp");



jibunnohikoukiwooouhikari.life = 0;




int jibunnotama_tsix[11];//🌞🌞🌞jibunnotama_tsix[i]には自分の飛行機から発射される弾の最初の位置のx座標が代入されることになります tは弾、sは最初、iは位置、xはx座標を表しています


for (int i = 0; i < 11; i++) {


jibunnotama_tsix[i] = 0;


}






int jibunnotama_count[11];//🌞🌞🌞ここでint型の変数count[i](0<=i<=10)を作製し0で初期化しました


for (int i = 0; i < 11; i++) {


jibunnotama_count[i] = 0;


}




int jibunnotama_lazer_tsix[11];//🌞🌞🌞jibunnotama_lazer_tsix[i]には自分の飛行機から発射されるレーザー弾の最初の位置のx座標が代入されることになります tは弾、sは最初、iは位置、xはx座標を表しています


for (int i = 0; i < 11; i++) {


jibunnotama_lazer_tsix[i] = 0;


}






int jibunnotama_lazer_count[11];//🌞🌞🌞ここでint型の変数count[i] (0<=i<=10)を作製し0で初期化しました


for (int i = 0; i < 11; i++) {


jibunnotama_lazer_count[i] = 0;


}









int akaitekinohikoukinotama_count[10][10];


for (int i = 0; i < 10; i = i + 1) {


for (int j = 0; j < 10; j = j + 1) {


akaitekinohikoukinotama_count[i][j] = 0;


}


}


int akaitekinohikoukinotama_tsix[10][10]; //🌞🌞🌞 akaitekinohikoukinotama_tsix[i][j]には発射される敵の弾[i][j]の発射される位置のx座標が代入されることになります tは弾、sは最初、iは位置、xはx座標を表しています


for (int i = 0; i < 10; i = i + 1) {


for (int j = 0; j < 10; j = j + 1) {


akaitekinohikoukinotama_tsix[i][j] = 0;


}


}


double akaitekinohikoukinoidoupattern[4][3] = { {20,-0.1, 0.1},{20,-0.1,-0.1},{20,-0.1, 0.1},{20,-0.1,-0.1} };//👈🌞🌞🌞🌞🌞ここです。0.1、-0.1に注目です。敵の飛行機の移動速度は1ドットのときの10分の1になります



int akaitekinohikouki_m = 0;


int akaitekinohikouki_repeat = akaitekinohikoukinoidoupattern[0][0];






int hassyasareru_jibunnotama = 0;


int hassyasareru_akaitekinohikoukinotama[10];





for (int i = 0; i < 10; i++) {


hassyasareru_akaitekinohikoukinotama[i] = 0;


}


int hassyasareru_jibunnotama_lazer = 0;


//👆🌞🌞🌞🌞🌞ここまでが自分の飛行機と赤い敵の飛行機の設定です






//👇🌞🌞🌞🌞🌞ここからは敵の飛行機ルルの設定です




struct Character RuRu[1];

//👆🌞敵の飛行機ルルを1体登場させています


for (int i = 0; i < 1; i++) {


RuRu[i].x = 605;


RuRu[i].y = 200;


RuRu[i].graphichandle[0] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[1] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[2] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[3] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[4] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[5] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[6] = LoadGraph("画像データ\\ルル18.bmp");




RuRu[i].graphicnumber = 128 * GetRand(6);


//👆 RuRu[i].graphicnumberは😋敵の飛行機ルル😋のアニメーションパターンをとりあつかっています


//👆ここです🌞🌞🌞ここでRuRu[i].graphicnumberにランダムに0,128,256,384,512,640,768の値が代入されることになります




RuRu[i].life = 10000;//👈🌞🌞🌞敵の飛行機ルルに自分の弾が10000発当たると破壊されるようにしました




}





struct Character RuRunotama[1][10];



//🌞👆敵の飛行機(ルル)から発射される10個の敵の弾のデータをとりあつかうために10個の構造体変数を作成しています



for (int i = 0; i < 1; i = i + 1) {


for (int j = 0; j < 10; j = j + 1) {


RuRunotama[i][j].x = 1000;

RuRunotama[i][j].y = 1000;


RuRunotama[i][j].graphichandle[0] = LoadGraph("画像データ\\敵の飛行機の弾ハート.bmp");


RuRunotama[i][j].life = 0;


}


}


struct Character RuRuwooouhikari;


RuRuwooouhikari.x = 0;


RuRuwooouhikari.y = 0;


RuRuwooouhikari.graphichandle[0] = LoadGraph("画像データ\\ルルを覆う光0.1.bmp");//👈🌞🌞🌞💖画像をルルを覆う光0.1に変更しました




RuRuwooouhikari.life = 0;



struct Character RuRunobakuhatunohonoo[1];

//👆🌞構造体変数RuRunobakuhatunohonoo[0]を作成しルルの爆発の炎のデータを取り扱います


for (int i = 0; i < 1; i++) {


RuRunobakuhatunohonoo[i].x = 0;


RuRunobakuhatunohonoo[i].y = 0;


RuRunobakuhatunohonoo[i].graphichandle[0] = LoadGraph("画像データ\\ルルの爆発の炎0.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[1] = LoadGraph("画像データ\\ルルの爆発の炎1.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[2] = LoadGraph("画像データ\\ルルの爆発の炎2.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[3] = LoadGraph("画像データ\\ルルの爆発の炎3.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[4] = LoadGraph("画像データ\\ルルの爆発の炎4.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[5] = LoadGraph("画像データ\\ルルの爆発の炎5.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[6] = LoadGraph("画像データ\\ルルの爆発の炎6.1bmp");



RuRunobakuhatunohonoo[i].life = 0;//🌞🌞🌞 RuRunobakuhatunohonoo[0].lifeを初期化しています



RuRunobakuhatunohonoo[i].graphicnumber = 0; //🌞🌞🌞ルルの爆発の炎をアニメーションさせるためのgraphicnumberを用意して初期化しています


}





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;


}


}


double RuRunoidoupattern[4][3] = { {20,-0.1, 0.1},{20,-0.1,-0.1},{20,-0.1, 0.1},{20,-0.1,-0.1} };//👈🌞🌞🌞🌞🌞ここです。0.1,-0.1に注目。敵の飛行機ルルの移動速度は1ドットのときの10分の1になります


int RuRu_m = 0;


int RuRu_repeat = RuRunoidoupattern[0][0];




int hassyasareru_RuRunotama[1];



for (int i = 0; i < 1; i++) {


hassyasareru_RuRunotama[i] = 0;


}





//👆🌞🌞🌞🌞🌞ここまでが敵の飛行機ルルの設定です



//👇🌞🌞🌞🌞🌞ここから敵の飛行機ミミの設定です


struct Character MiMi;

//👆🌞MiMiの構造体変数宣言です


MiMi.x = 340;


MiMi.y = 200;


MiMi.graphichandle[0] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[1] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[2] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[3] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[4] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[5] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[6] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.life = 5;//👈🌞🌞🌞 MiMi.life に格納される値を5にしてみました🌞🌞🌞



MiMi.graphicnumber = 0;

//👆 MiMi.graphicnumberは😋ミミ😋のアニメーションパターンをとりあつかっています


//👆🌞構造体変数MiMiのメンバ変数の初期化を行っています

//👆 構造体変数MiMiは😋ミミ😋のデータをとりあつかっています


//👆🌞🌞🌞🌞🌞ここまで敵の飛行機ミミの設定です





//🌞🌞🌞👇ここからがオレンジリング10体の設定です


struct Character orange_ring[10];

//👆🌞オレンジリングを500体登場させています


for (int i = 0; i < 10; i++) {


orange_ring[i].x = 590;


orange_ring[i].y = 200;


orange_ring[i].graphichandle[0] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[1] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[2] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[3] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[4] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[5] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[6] = LoadGraph("画像データ\\オレンジリング.bmp");




orange_ring[i].graphicnumber = 0;


//👆 orange_ring[i].graphicnumberは😋オレンジリング😋のアニメーションパターンをとりあつかっています


orange_ring[i].life = 100;//👈🌞🌞🌞オレンジリングに自分の弾が100発当たると破壊されるようにしました




}


double orange_ringnoidoupattern[4][3] = { {2000,-5, 0},{2000,0,-5},{2000,5, 0},{2000,0,5} };//👈🌞🌞🌞🌞🌞ここです。5、-5に注目です。オレンジリングはwhile{}文のブロック{}内の命令文が1回繰り返し実行されるたびに5ドット単位で移動することになります


int orange_ring_m = 0;


int orange_ring_repeat = orange_ringnoidoupattern[0][0];



//🌞🌞🌞👆ここまでがオレンジリング10体の設定です








//👇レーザーマークの設定を行なっています


struct Character lazermark;


//👆🌞 lazermarkの構造体変数宣言です


lazermark.x = 640;


lazermark.y = 240;


lazermark.graphichandle[0] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[1] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[2] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[3] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[4] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[5] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[6] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.life = 0;//👈🌞🌞🌞 lazermark.life に格納される値を0にしてみました🌞🌞🌞



lazermark.graphicnumber = 0;

//👆 lazermark.graphicnumberは😋レーザーマーク😋のアニメーションパターンをとりあつかっています


//👆🌞構造体変数lazermarkのメンバ変数の初期化を行っています

//👆 構造体変数lazermarkは😋レーザーマーク😋のデータをとりあつかっています


double lazermarknoidoupattern[4][3] = { {20,-1, 1},{20,-1,-1},{20,-1, 1},{20,-1,-1} };


int lazermark_m = 0;


int lazermark_repeat = lazermarknoidoupattern[0][0];


//👆レーザーマークの設定を行なっています



//👇ミサイルマークの設定を行なっています


struct Character misslemark;


//👆🌞 misslemarkの構造体変数宣言です


misslemark.x = 640;


misslemark.y = 240;


misslemark.graphichandle[0] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[1] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[2] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[3] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[4] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[5] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[6] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.life = 0;//👈🌞🌞🌞 misslemark.life に格納される値は0で初期化してみました🌞🌞🌞



misslemark.graphicnumber = 0;

//👆 misslemark.graphicnumberは😋ミサイルマーク😋のアニメーションパターンをとりあつかっています


//👆🌞構造体変数misslemarkのメンバ変数の初期化を行っています

//👆 構造体変数misslemarkは😋ミサイルマーク😋のデータをとりあつかっています


double misslemarknoidoupattern[4][3] = { {20,-1, 1},{20,-1,-1},{20,-1, 1},{20,-1,-1} };


int misslemark_m = 0;


int misslemark_repeat = misslemarknoidoupattern[0][0];


//👆ミサイルマークの設定を行なっています



int jibunnotamamode = 0;

int option_nekonotamamode = 0;

//初期設定ではjibunnotamamodeとoption_nekonotamamodeに格納されている値は0なので自分の飛行機から普通の弾が発射されます




//👇🌞オプション猫の設定です


struct Character option_neko;

//👆🌞option_nekoの構造体変数宣言です


option_neko.x = 100;//オプション猫のいる位置のx座標です


option_neko.y = 240;//オプション猫のいる位置のy座標です


option_neko.graphichandle[0] = LoadGraph("画像データ\\オプション猫.bmp");


option_neko.graphichandle[1] = LoadGraph("画像データ\\オプション猫1.bmp");


option_neko.graphichandle[2] = LoadGraph("画像データ\\オプション猫2.bmp");


option_neko.graphichandle[3] = LoadGraph("画像データ\\オプション猫3.bmp");


option_neko.graphichandle[4] = LoadGraph("画像データ\\オプション猫4.bmp");


option_neko.graphichandle[5] = LoadGraph("画像データ\\オプション猫5.bmp");


option_neko.graphichandle[6] = LoadGraph("画像データ\\オプション猫6.bmp");


option_neko.life = 600;//👈🌞🌞🌞 option_neko.life に格納される値を600にしてみました🌞🌞🌞



option_neko.graphicnumber = 0;

//👆 option_neko.graphicnumberは😋オプション猫😋のアニメーションパターンをとりあつかっています


//👆🌞構造体変数option_nekoのメンバ変数の初期化を行っています

//👆 構造体変数option_nekoは😋オプション猫😋のデータをとりあつかっています




struct Character option_nekonotama[11];

//🌞👆オプション猫の弾を11個作成しています

for (int i = 0; i < 10; i = i + 1) {


option_nekonotama[i].x = 0;

option_nekonotama[i].y = 0;


option_nekonotama[i].graphichandle[0] = LoadGraph("画像データ\\自分の弾.bmp");


option_nekonotama[i].life = 0;


}


option_nekonotama[10].x = 641;

option_nekonotama[10].y = 0;


//🌞🌞🌞見えない弾にするために option_nekonotama[10].graphichandle[0] は画像データで初期化しません

option_nekonotama[10].life = 0;


//👆🌞🌞🌞自分の飛行機とオプション猫から発射させる弾を一致させるために同じ画像データを読み込んでいます



struct Character option_nekonotama_lazer[11];

//🌞👆オプション猫のレーザー弾を11個作成しています

for (int i = 0; i < 10; i = i + 1) {


option_nekonotama_lazer[i].x = 0;

option_nekonotama_lazer[i].y = 0;


option_nekonotama_lazer[i].graphichandle[0] = LoadGraph("画像データ\\レーザー.bmp");//👈🌞🌞🌞💖💖💖ここです オプション猫のレーザー弾の画像データを読み込みます




option_nekonotama_lazer[i].life = 0;


}



option_nekonotama_lazer[10].x = 641;

option_nekonotama_lazer[10].y = 0;


//🌞🌞🌞見えないレーザー弾にするために option_nekonotama[10].graphichandle[0] は初期化しません

option_nekonotama_lazer[10].life = 0;



//👆🌞🌞🌞自分の飛行機とオプション猫から発射させる弾を一致させるために同じ画像データを読み込んでいます



struct Character option_nekonobakuhatunohonoo;

//👆🌞構造体変数option_nekonobakuhatunohonooを作成し自分の飛行機の爆発の炎のデータを取り扱います




option_nekonobakuhatunohonoo.x = 0;


option_nekonobakuhatunohonoo.y = 0;


option_nekonobakuhatunohonoo.graphichandle[0] = LoadGraph("画像データ\\自分の飛行機の爆発の炎.bmp");


option_nekonobakuhatunohonoo.graphichandle[1] = LoadGraph("画像データ\\自分の飛行機の爆発の炎1.bmp");


option_nekonobakuhatunohonoo.graphichandle[2] = LoadGraph("画像データ\\自分の飛行機の爆発の炎2.bmp");


option_nekonobakuhatunohonoo.graphichandle[3] = LoadGraph("画像データ\\自分の飛行機の爆発の炎3.bmp");


option_nekonobakuhatunohonoo.graphichandle[4] = LoadGraph("画像データ\\自分の飛行機の爆発の炎4.bmp");


option_nekonobakuhatunohonoo.graphichandle[5] = LoadGraph("画像データ\\自分の飛行機の爆発の炎5.bmp");


option_nekonobakuhatunohonoo.graphichandle[6] = LoadGraph("画像データ\\自分の飛行機の爆発の炎6.bmp");



option_nekonobakuhatunohonoo.life = 0;//🌞🌞🌞 option_nekonobakuhatunohonoo.lifeを初期化しています



option_nekonobakuhatunohonoo.graphicnumber = 0; //🌞🌞🌞自分の飛行機の爆発の炎のgraphicnumberを用意して初期化しています



struct Character option_nekowooouhikari;



option_nekowooouhikari.x = 0;


option_nekowooouhikari.y = 0;


option_nekowooouhikari.graphichandle[0] = LoadGraph("画像データ\\ニャーが表示される画像7.bmp");



option_nekowooouhikari.life = 0;




int option_nekonotama_tsix[11];//🌞🌞🌞 option_nekonotama_tsix[i]にはオプション猫の飛行機から発射される弾の最初の位置のx座標が代入されることになります tは弾、sは最初、iは位置、xはx座標を表しています


for (int i = 0; i < 11; i++) {


option_nekonotama_tsix[i] = 0;


}






int option_nekonotama_count[11];//🌞🌞🌞ここでint型の変数option_nekonotama_count[i](0<=i<=10)を作製し0で初期化しました


for (int i = 0; i < 11; i++) {


option_nekonotama_count[i] = 0;


}




int option_nekonotama_lazer_tsix[11];//🌞🌞🌞 option_nekonotama_lazer_tsix[i]にはオプション猫から発射されるレーザー弾の最初の位置のx座標が代入されることになります tは弾、sは最初、iは位置、xはx座標を表しています


for (int i = 0; i < 11; i++) {


option_nekonotama_lazer_tsix[i] = 0;


}






int option_nekonotama_lazer_count[11];//🌞🌞🌞ここでint型の変数option_nekonotama_lazer_ count[i] (0<=i<=10)を作製し0で初期化しました


for (int i = 0; i < 11; i++) {


option_nekonotama_lazer_count[i] = 0;


}



int hassyasareru_option_nekonotama = 0;


int hassyasareru_option_nekonotama_lazer = 0;


int option_neko_counter = 0;


//👆🌞🌞🌞🌞🌞ここまでがオプション猫の設定です





//👆🌞オプション猫の設定です




int FontHandle;


FontHandle = CreateFontToHandle(NULL, 10, 3);

// 👆CreateFontToHandle(NULL, 10, 3)が実行されると書体のデータ(フォント)に対応する値が戻り値としてCreateFontToHandle(NULL, 10, 3)に返されます

// 👆FontHandle に書体のデータ(フォント)に対応する値を代入しています






int FontHandle1;


FontHandle1 = CreateFontToHandle(NULL, 15, 0);

// 👆CreateFontToHandle(NULL, 15, 0)が実行されると書体のデータ(フォント)に対応する値が戻り値としてCreateFontToHandle(NULL, 15, 0)に返されます

// 👆FontHandle1に書体のデータ(フォント)に対応する値を代入しています




SetFontSize(8);



int framecounter = 0;//👈🌞🌞🌞フレームカウンターを0で初期化しています















while (CheckHitKey(KEY_INPUT_ESCAPE) == 0 && ProcessMessage() == 0) {



//👇🌞🌞🌞今 何フレーム目なのかを表示します


DrawStringToHandle(0, 0, "frame counter", GetColor(255, 255, 255), FontHandle1);//👈🌞🌞🌞FontHandle1が用いられています


framecounter = framecounter + 1;


DrawFormatString(110, 5, GetColor(255, 255, 255), "%d", framecounter);




//👆🌞🌞🌞今 何フレーム目なのかを表示します




//👇🌞🌞🌞ライフゲージの設定です


DrawBox(100, 100, 500, 300, GetColor(0, 255, 255), TRUE);



DrawBox(20, 458, 624, 472, GetColor(255, 255, 0), TRUE);


DrawBox(22, 460, 622, 470, GetColor(255, 255, 255), TRUE);//




DrawBox(22, 460, jibunnohikouki.life + 22, 470, GetColor(255, 0, 255), TRUE);




DrawStringToHandle(0, 460, "LIFE", GetColor(255, 255, 255), FontHandle);//👈🌞🌞🌞FontHandleが用いられています




DrawFormatString(625, 460, GetColor(255, 255, 255), "%d", jibunnohikouki.life);



//👆🌞🌞🌞ライフゲージの設定です




//👇🌞🌞🌞自分の飛行機の挙動の設定の部分です


int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);



if (jibunnohikouki.life > 0) {


if (4 <= jibunnohikouki.y && jibunnohikouki.y <= 460) {

if (key & PAD_INPUT_UP) jibunnohikouki.y = jibunnohikouki.y - 4;

}



if (0 <= jibunnohikouki.y && jibunnohikouki.y <= 456) {


if (key & PAD_INPUT_DOWN) jibunnohikouki.y = jibunnohikouki.y + 4;

}


if (4 <= jibunnohikouki.x && jibunnohikouki.x <= 605) {


if (key & PAD_INPUT_LEFT) jibunnohikouki.x = jibunnohikouki.x - 4;

}


if (0 <= jibunnohikouki.x && jibunnohikouki.x <= 601) {


if (key & PAD_INPUT_RIGHT) jibunnohikouki.x = jibunnohikouki.x + 4;

}


}


if (jibunnohikouki.life > 0) {


DrawGraph(jibunnohikouki.x, jibunnohikouki.y, jibunnohikouki.graphichandle[(jibunnohikouki.graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞🌞 jibunnohikouki.graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞


jibunnohikouki.graphicnumber = jibunnohikouki.graphicnumber + 1;


}


//👆 jibunnohikouki.lifeに格納されている値が0より大きければ自分の飛行機の画像を描きます

//👆jibunnohikouki.lifeに格納されている値が0なら自分の飛行機の画像が描かれることはありません



if (jibunnohikoukiwooouhikari.life > 0) {



SetDrawBlendMode(DX_BLENDMODE_ALPHA, 200);


//👆🌞🌞🌞描画ブレンドモードがアルファブレンドになっています


DrawGraph(jibunnohikoukiwooouhikari.x, jibunnohikoukiwooouhikari.y, jibunnohikoukiwooouhikari.graphichandle[0], TRUE);



SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);

jibunnohikoukiwooouhikari.life = jibunnohikoukiwooouhikari.life - 1;


// 👆🌞🌞🌞描画ブレンドモードをノーブレンドにして描画ブレンドモードを解除しています

}



//👆🌞🌞🌞自分の飛行機を覆う光の画像が描かれます jibunnohikoukiwooouhikari.lifeに格納されている値が0になると自分の飛行機を覆う光の画像が描かれることはありません




if (jibunnohikoukinobakuhatunohonoo.life > 0) {


DrawGraph(jibunnohikoukinobakuhatunohonoo.x, jibunnohikoukinobakuhatunohonoo.y, jibunnohikoukinobakuhatunohonoo.graphichandle[(jibunnohikoukinobakuhatunohonoo.graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞 jibunnohikoukinobakuhatunohonoo.graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞

jibunnohikoukinobakuhatunohonoo.graphicnumber = jibunnohikoukinobakuhatunohonoo.graphicnumber + 1;

//👆🌞🌞🌞自分の飛行機の爆発の炎がアニメーションするよう設定が行われています



jibunnohikoukinobakuhatunohonoo.life = jibunnohikoukinobakuhatunohonoo.life - 1;



}


//👆 jibunnohikoukinobakuhatunohonoo.lifeに格納されている値が1以上なら自分の飛行機の爆発の炎の画像を描きます

//👆 jibunnohikoukinobakuhatunohonoo.lifeに格納されている値が0なら自分の飛行機の爆発の炎の画像が描かれることはありません





//👇🌞🌞🌞新型 自分の飛行機から弾が10連射されるプログラムです


//👇新たに11個目の弾jibunnotama[10]の登場です


if (jibunnohikouki.life > 0)


if (jibunnotamamode == 0)


if (jibunnotama[10].x > 640)

if (key & PAD_INPUT_A) {


if (jibunnotama[0].life == 0 && hassyasareru_jibunnotama == 0) {


jibunnotama[0].x = jibunnohikouki.x + 10;


jibunnotama[0].y = jibunnohikouki.y + 10;


jibunnotama_tsix[0] = jibunnotama[0].x;


jibunnotama[0].life = 1;


hassyasareru_jibunnotama = 1;


jibunnotama_count[0] = 30;//👈連射される自分の弾の最初の弾と次弾の間隔を調整することができます


}


}




for (int i = 0; i < 10; i++) {


if (jibunnotama_count[i] > 0) { jibunnotama_count[i] = jibunnotama_count[i] - 1; }



if (jibunnotama_count[i] == 0 && hassyasareru_jibunnotama == i + 1) {


if (jibunnotama[i + 1].life == 0) {


jibunnotama[i + 1].x = jibunnohikouki.x + 10;


jibunnotama[i + 1].y = jibunnohikouki.y + 10;


jibunnotama_tsix[i + 1] = jibunnotama[i + 1].x;


jibunnotama[i + 1].life = 1;


hassyasareru_jibunnotama = i + 2;


jibunnotama_count[i + 1] = 30;


}


}


}


if (jibunnotama_count[10] > 0) { jibunnotama_count[10] = jibunnotama_count[10] - 1; }




if (jibunnotama_count[10] == 0 && hassyasareru_jibunnotama == 11) {


hassyasareru_jibunnotama = 0;


}






for (int i = 0; i < 11; i = i + 1) {


if (jibunnotama[i].life == 1) {

//🌞🌞🌞 jibunnotama[i].lifeに1が代入されていると自分の弾jibunnnotama[i]がゲーム画面に表示されることになります jibunnnotama[i].lifeに0が代入されていると自分の弾jibunnnotama[i]がゲーム画面に表示されることはありません

DrawGraph(jibunnotama[i].x, jibunnotama[i].y, jibunnotama[i].graphichandle[0], TRUE);


jibunnotama[i].x = jibunnotama[i].x + 1;


if (jibunnotama[i].x - jibunnotama_tsix[i] > 640)


//🌞🌞🌞発射された自分の弾jibunnnotama[i]の位置のx座標が最初に自分の弾jibunnnotama[i]が発射されたときのjibunnnotama[i]の位置のx座標から🍑左へ🍑640を超えて離れると条件式jibunnotama[i].x - jibunnotama_tsix[i]は真の値1をとることになります

//🌞🌞🌞🌞🌞👆 jibunnnotama_tsix[i]には自分の弾jibunnnotama[i]が発射されたときの自分の弾jibunnnotama[i]のいる位置のx座標を記憶していたのでjibunnnotama[i].xが自分の弾jibunnnotama[i]が発射されたときの自分の弾jibunnnotama[i]のいる位置から640ドットを超えて離れた時、条件式jibunnotama[i].x- jibunnotama_tsix[i] > 640は真の値1を持つことになります

jibunnotama[i].life = 0;


}


}


//👆🌞🌞🌞新型 自分の飛行機から弾が10連射されるプログラムです




//👇🌞🌞🌞新型 自分の飛行機から💖レーザー弾💖が10連射されるプログラムです


//👇新たに11個目のレーザー弾jibunnotama_lazer[10]の登場です


if (jibunnohikouki.life > 0)


if (jibunnotamamode == 1)


if (jibunnotama_lazer[10].x > 640)


if (key & PAD_INPUT_A) {


if (jibunnotama_lazer[0].life == 0 && hassyasareru_jibunnotama_lazer == 0) {


jibunnotama_lazer[0].x = jibunnohikouki.x + 10;


jibunnotama_lazer[0].y = jibunnohikouki.y + 10;


jibunnotama_lazer_tsix[0] = jibunnotama_lazer[0].x;


jibunnotama_lazer[0].life = 1;


hassyasareru_jibunnotama_lazer = 1;


jibunnotama_lazer_count[0] = 30;//👈連射される自分のレーザー弾の最初の弾と次弾の間隔を調整することができます


}


}




for (int i = 0; i < 10; i++) {


if (jibunnotama_lazer_count[i] > 0) { jibunnotama_lazer_count[i] = jibunnotama_lazer_count[i] - 1; }



if (jibunnotama_lazer_count[i] == 0 && hassyasareru_jibunnotama_lazer == i + 1) {


if (jibunnotama_lazer[i + 1].life == 0) {


jibunnotama_lazer[i + 1].x = jibunnohikouki.x + 10;


jibunnotama_lazer[i + 1].y = jibunnohikouki.y + 10;


jibunnotama_lazer_tsix[i + 1] = jibunnotama[i + 1].x;


jibunnotama_lazer[i + 1].life = 1;


hassyasareru_jibunnotama_lazer = i + 2;


jibunnotama_lazer_count[i + 1] = 30;


}


}


}


if (jibunnotama_lazer_count[10] > 0) { jibunnotama_lazer_count[10] = jibunnotama_lazer_count[10] - 1; }




if (jibunnotama_lazer_count[10] == 0 && hassyasareru_jibunnotama_lazer == 11) {


hassyasareru_jibunnotama_lazer = 0;


}






for (int i = 0; i < 11; i = i + 1) {


if (jibunnotama_lazer[i].life > 0) {

//🌞🌞🌞 jibunnotama_lazer[i].lifeに0より大きな値が代入されていると自分のレーザー弾jibunnotama_lazer[i]がゲーム画面に表示されることになります jibunnotama_lazer[i].lifeに0が代入されていると自分のレーザー弾jibunnotama_lazer[i]がゲーム画面に表示されることはありません

DrawGraph(jibunnotama_lazer[i].x, jibunnotama_lazer[i].y, jibunnotama_lazer[i].graphichandle[0], TRUE);


jibunnotama_lazer[i].x = jibunnotama_lazer[i].x + 1;


if (jibunnotama_lazer[i].x - jibunnotama_lazer_tsix[i] > 640)

//🌞🌞🌞発射された自分のレーザー弾jibunnotama_lazer[i]の位置のx座標が発射されたときの最初の自分のレーザー弾jibunnotama_lazer[i]の位置のx座標から🍑左へ🍑640を超えて離れると条件式jibunnotama_lazer[i].x - jibunnotama_lazer_tsix[i]は真の値1をとることになります

//🌞🌞🌞🌞🌞👆 jibunnotama_lazer_tsix[i]には自分のレーザー弾jibunnotama_lazer[i]が発射されたときの自分のレーザー弾jibunnotama_lazer[i]のいる位置のx座標を記憶していたのでjibunnotama_lazer[i].xが自分の弾jibunnotama_lazer[i]が発射されたときの自分のレーザー弾jibunnotama_lazer[i]のいる位置から640ドット離れた時、条件式jibunnotama_lazer[i].x- jibunnotama_lazer_tsix[i] > 640は真の値1を持つことになります

jibunnotama_lazer[i].life = 0;


}


}


//👆🌞🌞🌞新型 自分の飛行機から💖レーザー弾💖が10連射されるプログラムです





//👆🌞🌞🌞自分の飛行機の挙動の設定の部分です




//👇🌞🌞🌞オプション猫の挙動の設定の部分です


if (option_neko_counter == 0)


if (option_neko.life > 0) {


option_neko.x = jibunnohikouki.x - 30;


option_neko.y = jibunnohikouki.y + 50;


option_neko_counter = 5;



}



option_neko_counter = option_neko_counter - 1;


if (option_neko_counter >= 0)


if (option_neko.life > 0) {


DrawGraph(option_neko.x, option_neko.y, option_neko.graphichandle[(option_neko.graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞🌞 option_neko.graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞


option_neko.graphicnumber = option_neko.graphicnumber + 1;


}


//👆 option_neko.lifeに格納されている値が0より大きければオプション猫の画像を描きます

//👆 option_neko.lifeに格納されている値が0ならオプション猫の画像が描かれることはありません



if (option_nekowooouhikari.life > 0) {



SetDrawBlendMode(DX_BLENDMODE_ALPHA, 200);


//👆🌞🌞🌞描画ブレンドモードがアルファブレンドになっています


DrawGraph(option_nekowooouhikari.x, option_nekowooouhikari.y, option_nekowooouhikari.graphichandle[0], TRUE);



SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);

option_nekowooouhikari.life = option_nekowooouhikari.life - 1;


// 👆🌞🌞🌞描画ブレンドモードをノーブレンドにして描画ブレンドモードを解除しています

}



//👆🌞🌞🌞オプション猫の飛行機を覆う光の画像が描かれます option_nekowooouhikari.lifeに格納されている値が0になるとオプション猫を覆う光の画像が描かれることはありません




if (option_nekonobakuhatunohonoo.life > 0) {


DrawGraph(option_nekonobakuhatunohonoo.x, option_nekonobakuhatunohonoo.y, option_nekonobakuhatunohonoo.graphichandle[(option_nekonobakuhatunohonoo.graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞 option_nekonobakuhatunohonoo.graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞

option_nekonobakuhatunohonoo.graphicnumber = option_nekonobakuhatunohonoo.graphicnumber + 1;

//👆🌞🌞🌞オプション猫の爆発の炎がアニメーションするよう設定が行われています



option_nekonobakuhatunohonoo.life = option_nekonobakuhatunohonoo.life - 1;



}


//👆 option_nekonobakuhatunohonoo.lifeに格納されている値が0より大きければオプション猫の爆発の炎の画像を描きます

//👆 option_nekonobakuhatunohonoo.lifeに格納されている値が0ならオプション猫の爆発の炎の画像が描かれることはありません





//👇🌞🌞🌞新型 オプション猫から弾が10連射されるプログラムです


//👇新たに11個目の弾option_nekonotama[10]の登場です


if (option_neko.life > 0)


if (option_nekonotamamode == 0)


if (option_nekonotama[10].x > 640)

if (key & PAD_INPUT_A) {


if (option_nekonotama[0].life == 0 && hassyasareru_option_nekonotama == 0) {


option_nekonotama[0].x = option_neko.x + 10;


option_nekonotama[0].y = option_neko.y + 10;


option_nekonotama_tsix[0] = option_nekonotama[0].x;


option_nekonotama[0].life = 1;


hassyasareru_option_nekonotama = 1;


option_nekonotama_count[0] = 30;//👈連射されるオプション猫の弾の最初の弾と次弾の間隔を調整することができます


}


}




for (int i = 0; i < 10; i++) {


if (option_nekonotama_count[i] > 0) { option_nekonotama_count[i] = option_nekonotama_count[i] - 1; }



if (option_nekonotama_count[i] == 0 && hassyasareru_option_nekonotama == i + 1) {


if (option_nekonotama[i + 1].life == 0) {


option_nekonotama[i + 1].x = option_neko.x + 10;


option_nekonotama[i + 1].y = option_neko.y + 10;


option_nekonotama_tsix[i + 1] = option_neko.x;


option_nekonotama[i + 1].life = 1;


hassyasareru_option_nekonotama = i + 2;


option_nekonotama_count[i + 1] = 30;


}


}


}


if (option_nekonotama_count[10] > 0) { option_nekonotama_count[10] = option_nekonotama_count[10] - 1; }




if (option_nekonotama_count[10] == 0 && hassyasareru_option_nekonotama == 11) {


hassyasareru_option_nekonotama = 0;


}






for (int i = 0; i < 11; i = i + 1) {


if (option_nekonotama[i].life == 1) {

//🌞🌞🌞 option_nekonotama[i].lifeに1が代入されているとオプション猫の弾option_nekonotama[i]がゲーム画面に表示されることになります option_nekonotama[i].lifeに0が代入されているとオプション猫の弾option_nekonotama[i]がゲーム画面に表示されることはありません

DrawGraph(option_nekonotama[i].x, option_nekonotama[i].y, option_nekonotama[i].graphichandle[0], TRUE);


option_nekonotama[i].x = option_nekonotama[i].x + 1;


if (option_nekonotama[i].x - option_nekonotama_tsix[i] > 640)

//🌞🌞🌞発射されたオプション猫の弾option_nekonotama[i]の位置のx座標が最初にオプション猫の弾option_nekonotama[i]が発射されたときのoption_nekonotama[i]の位置のx座標から🍑左へ🍑640を超えて離れると条件式option_nekonotama[i].x - option_nekonotama_tsix[i]は真の値1をとることになります

//🌞🌞🌞🌞🌞👆 option_nekonotama_tsix[i]にはオプション猫の弾option_nekonotama[i]が発射されたときのオプション猫の弾option_nekonotama[i]のいる位置のx座標を記憶していたのでoption_nekonotama[i].xがオプション猫の弾option_nekonotama[i]が発射されたときのオプション猫の弾option_nekonotama[i]のいる位置から640ドットを超えて離れた時、条件式option_nekonotama[i].x- option_nekonotama_tsix[i] > 640は真の値1を持つことになります

option_nekonotama[i].life = 0;


}


}


//👆🌞🌞🌞新型 オプション猫から弾が10連射されるプログラムです




//👇🌞🌞🌞新型 オプション猫から💖レーザー弾💖が10連射されるプログラムです


//👇新たに11個目のレーザー弾option_nekonotama_lazer[10]の登場です


if (option_neko.life > 0)


if (option_nekonotamamode == 1)


if (option_nekonotama_lazer[10].x > 640)


if (key & PAD_INPUT_A) {


if (option_nekonotama_lazer[0].life == 0 && hassyasareru_option_nekonotama_lazer == 0) {


option_nekonotama_lazer[0].x = option_neko.x + 10;


option_nekonotama_lazer[0].y = option_neko.y + 10;


option_nekonotama_lazer_tsix[0] = option_nekonotama_lazer[0].x;


option_nekonotama_lazer[0].life = 1;


hassyasareru_option_nekonotama_lazer = 1;


option_nekonotama_lazer_count[0] = 30;//👈連射される自分のレーザー弾の最初の弾と次弾の間隔を調整することができます


}


}




for (int i = 0; i < 10; i++) {


if (option_nekonotama_lazer_count[i] > 0) { option_nekonotama_lazer_count[i] = option_nekonotama_lazer_count[i] - 1; }



if (option_nekonotama_lazer_count[i] == 0 && hassyasareru_option_nekonotama_lazer == i + 1) {


if (option_nekonotama_lazer[i + 1].life == 0) {


option_nekonotama_lazer[i + 1].x = option_neko.x + 10;


option_nekonotama_lazer[i + 1].y = option_neko.y + 10;


option_nekonotama_lazer_tsix[i + 1] = option_nekonotama[i + 1].x;


option_nekonotama_lazer[i + 1].life = 1;


hassyasareru_option_nekonotama_lazer = i + 2;


option_nekonotama_lazer_count[i + 1] = 30;


}


}


}


if (option_nekonotama_lazer_count[10] > 0) { option_nekonotama_lazer_count[10] = option_nekonotama_lazer_count[10] - 1; }




if (jibunnotama_lazer_count[10] == 0 && hassyasareru_option_nekonotama_lazer == 11) {


hassyasareru_option_nekonotama_lazer = 0;


}






for (int i = 0; i < 11; i = i + 1) {


if (option_nekonotama_lazer[i].life == 1) {

//🌞🌞🌞 option_nekonotama_lazer[i].lifeに1が代入されているとオプション猫のレーザー弾option_nekonotama_lazer[i]がゲーム画面に表示されることになります option_nekonotama_lazer[i].lifeに0が代入されているとオプション猫のレーザー弾option_nekonotama_lazer[i]がゲーム画面に表示されることはありません

DrawGraph(option_nekonotama_lazer[i].x, option_nekonotama_lazer[i].y, option_nekonotama_lazer[i].graphichandle[0], TRUE);


option_nekonotama_lazer[i].x = option_nekonotama_lazer[i].x + 1;


if (option_nekonotama_lazer[i].x - option_nekonotama_lazer_tsix[i] > 640)

//🌞🌞🌞発射されたオプション猫のレーザー弾option_nekonotama_lazer[i]の位置のx座標が発射されたときの最初のオプション猫のレーザー弾option_nekonotama_lazer[i]の位置のx座標から🍑左へ🍑640を超えて離れると条件式option_nekonotama_lazer[i].x - option_nekonotama_lazer_tsix[i]は真の値1をとることになります

//🌞🌞🌞🌞🌞👆 option_nekonotama_lazer_tsix[i]にはオプション猫のレーザー弾option_nekonotama_lazer[i]が発射されたときのオプション猫のレーザー弾option_nekonotama_lazer[i]のいる位置のx座標を記憶していたのでoption_nekonotama_lazer[i].xがオプション猫の弾option_nekonotama_lazer[i]が発射されたときのオプション猫のレーザー弾option_nekonotama_lazer[i]のいる位置から640ドット離れた時、条件式option_nekonotama_lazer[i].x- option_nekonotama_lazer_tsix[i] > 640は真の値1を持つことになります

option_nekonotama_lazer[i].life = 0;


}


}


//👆🌞🌞🌞新型 オプション猫から💖レーザー弾💖が10連射されるプログラムです





//👆🌞🌞🌞オプション猫の挙動の設定の部分です




//👇🌞🌞🌞赤い敵の飛行機の挙動の設定の部分です



if (akaitekinohikouki_repeat > 0) {


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


akaitekinohikouki[i].x = akaitekinohikouki[i].x + akaitekinohikoukinoidoupattern[akaitekinohikouki_m][1];


akaitekinohikouki[i].y = akaitekinohikouki[i].y + akaitekinohikoukinoidoupattern[akaitekinohikouki_m][2];

}



}


akaitekinohikouki_repeat = akaitekinohikouki_repeat - 1;

}


if (akaitekinohikouki_repeat == 0) {


if (akaitekinohikouki_m < 4) {


akaitekinohikouki_repeat = akaitekinohikoukinoidoupattern[akaitekinohikouki_m][0];


akaitekinohikouki_m = akaitekinohikouki_m + 1;

}




if (akaitekinohikouki_m == 4) {

akaitekinohikouki_m = 0;

akaitekinohikouki_repeat = akaitekinohikoukinoidoupattern[akaitekinohikouki_m][0];


}


}



for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {



DrawGraph(akaitekinohikouki[i].x, akaitekinohikouki[i].y, akaitekinohikouki[i].graphichandle[(akaitekinohikouki[i].graphicnumber) / 128 % 7], TRUE);


akaitekinohikouki[i].graphicnumber = akaitekinohikouki[i].graphicnumber + 1;


//🌞🌞🌞 (akaitekinohikouki[i].graphicnumber)を128で割っているので通常のアニメーション速度の128分の1の速度で画像が切り替わります

//👆🌞🌞🌞ここです すでにakaitekinohikouki[i].graphicnumberには0,128,256,384,512,640,768の値のうちの1つがランダムに代入されているので敵の飛行機, 敵の飛行機1・・・敵の飛行機9はそれぞれ異なるタイミングでアニメーションすることになります


}


}


//🌞🌞🌞👇自分の飛行機と赤い敵の飛行機がぶつかったとき自分の飛行機と赤い敵の飛行機が消滅するプログラムはこちらです



if (jibunnohikouki.life > 0)


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


if ((jibunnohikouki.x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < jibunnohikouki.y + 20))

{


jibunnohikouki.life = 0;


akaitekinohikouki[i].life = 0;


//👆🌞自分の飛行機と赤い敵の飛行機が衝突すると共に消滅することになります



akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;



akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[0].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています




jibunnohikoukinobakuhatunohonoo.x = jibunnohikouki.x;


jibunnohikoukinobakuhatunohonoo.y = jibunnohikouki.y;


jibunnohikoukinobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 jibunnohikoukinobakuhatunohonoo.lifeに0以上の値を代入しました jibunnohikoukinobakuhatunohonoo.lifeにランダムに異なる値を代入することにより自分の飛行機が爆発する時間をランダムに変化させています



}

}


}

//🌞🌞🌞👆自分の飛行機と赤い敵の飛行機がぶつかったとき自分の飛行機と赤い敵の飛行機が消滅するプログラムはこちらです




//👇🌞🌞🌞自分の飛行機と赤い敵の飛行機の弾が衝突したとき当たった自分の飛行機と赤い敵の飛行機の弾が消え自分の飛行機が爆発する😊のプログラムです



for (int i = 0; i < 10; i++) {


for (int j = 0; j < 10; j++) {


if (akaitekinohikoukinotama[i][j].life > 0)


if (jibunnohikouki.life > 0) {


if ((jibunnohikouki.x < akaitekinohikoukinotama[i][j].x + 10) && (akaitekinohikoukinotama[i][j].x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < akaitekinohikoukinotama[i][j].y + 10) && (akaitekinohikoukinotama[i][j].y < jibunnohikouki.y + 20)) {


jibunnohikouki.life = jibunnohikouki.life - 1;


akaitekinohikoukinotama[i][j].life = 0;


//👆🌞自分の飛行機と赤い敵の飛行機の弾が衝突すると敵の弾だけが消滅することになります




jibunnohikoukiwooouhikari.x = jibunnohikouki.x;


jibunnohikoukiwooouhikari.y = jibunnohikouki.y;


//🌞🌞🌞 赤い敵の飛行機の弾と自分の飛行機がぶつかると、そのときの自分の飛行機の位置座標がjibunnohikoukiwooouhikari.x, jibunnohikoukiwooouhikari.yに代入されます


jibunnohikoukiwooouhikari.life = 5;






if (jibunnohikouki.life == 0) {


jibunnohikoukinobakuhatunohonoo.x = jibunnohikouki.x;


jibunnohikoukinobakuhatunohonoo.y = jibunnohikouki.y;


jibunnohikoukinobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 jibunnohikoukinobakuhatunohonoo.lifeに0以上の値を代入しました jibunnohikoukinobakuhatunohonoo.lifeにランダムに異なる値を代入することにより自分の飛行機が爆発する時間をランダムに変化させています

}



}

}


}


}


//👆🌞🌞🌞自分の飛行機と赤い敵の飛行機の弾が衝突したとき当たった自分の飛行機と赤い敵の飛行機の弾が消え自分の飛行機が爆発する😊のプログラムです







//👇🌞🌞🌞赤い敵の飛行機と自分の弾が衝突したとき当たった自分の弾と赤い敵の飛行機が消滅するプログラムです


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


for (int j = 0; j < 10; j++) {


if (jibunnotama[j].life > 0)


if ((jibunnotama[j].x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < jibunnotama[j].x + 15) && (jibunnotama[j].y < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < jibunnotama[j].y + 5)) {


jibunnotama[j].life = 0;


akaitekinohikouki[i].life = akaitekinohikouki[i].life - 1;


//👆🌞自分の弾と赤い敵の飛行機が衝突すると自分の弾は消滅しakaitekinohikouki[i].lifeに格納されている値は1減ることになります akaitekinohikouki[i].lifeに格納されている値が0になると赤い敵の飛行機は消滅することになります


akaitekinohikoukiwooouhikari.x = akaitekinohikouki[i].x;


akaitekinohikoukiwooouhikari.y = akaitekinohikouki[i].y;


//🌞🌞🌞自分の弾と赤い敵の飛行機がぶつかると赤い敵の飛行機の位置座標がakaitekinohikoukiwooouhikari.x, akaitekinohikoukiwooouhikari.yに代入されます


akaitekinohikoukiwooouhikari.life = 5;






if (akaitekinohikouki[i].life == 0) {


akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;


akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[i].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].life, akaitekinohikoukinobakuhatunohonoo[1].life, akaitekinohikoukinobakuhatunohonoo[2].life, akaitekinohikoukinobakuhatunohonoo[3].life, akaitekinohikoukinobakuhatunohonoo[4].life, akaitekinohikoukinobakuhatunohonoo[5].life, akaitekinohikoukinobakuhatunohonoo[6].life, akaitekinohikoukinobakuhatunohonoo[7].life, akaitekinohikoukinobakuhatunohonoo[8].life, akaitekinohikoukinobakuhatunohonoo[9].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞赤い敵の飛行機と自分の弾が衝突したとき当たった自分の弾と赤い敵の飛行機が消滅するプログラムです



//👇🌞🌞🌞赤い敵の飛行機と自分のレーザー弾が衝突したとき当たった自分のレーザー弾は消滅し赤い敵の飛行機のライフが1減るプログラムです


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


for (int j = 0; j < 10; j++) {


if (jibunnotama_lazer[j].life > 0)


if ((jibunnotama_lazer[j].x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < jibunnotama_lazer[j].x + 15) && (jibunnotama_lazer[j].y < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < jibunnotama_lazer[j].y + 5)) {


jibunnotama_lazer[j].life = 0;


akaitekinohikouki[i].life = 0;


//👆🌞自分のレーザー弾と赤い敵の飛行機が衝突すると自分のレーザー弾は消滅しakaitekinohikouki[i].lifeに格納されている値は1減ることになります akaitekinohikouki[i].lifeに格納されている値が0になると赤い敵の飛行機は消滅することになります


akaitekinohikoukiwooouhikari.x = akaitekinohikouki[i].x;


akaitekinohikoukiwooouhikari.y = akaitekinohikouki[i].y;


//🌞🌞🌞自分のレーザー弾と赤い敵の飛行機がぶつかると敵の飛行機の位置座標がakaitekinohikoukiwooouhikari.x, akaitekinohikoukiwooouhikari.yに代入されます


akaitekinohikoukiwooouhikari.life = 5;






if (akaitekinohikouki[i].life == 0) {


akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;


akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[i].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].life, akaitekinohikoukinobakuhatunohonoo[1].life, akaitekinohikoukinobakuhatunohonoo[2].life, akaitekinohikoukinobakuhatunohonoo[3].life, akaitekinohikoukinobakuhatunohonoo[4].life, akaitekinohikoukinobakuhatunohonoo[5].life, akaitekinohikoukinobakuhatunohonoo[6].life, akaitekinohikoukinobakuhatunohonoo[7].life, akaitekinohikoukinobakuhatunohonoo[8].life, akaitekinohikoukinobakuhatunohonoo[9].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞赤い敵の飛行機と自分のレーザー弾が衝突したとき当たった自分のレーザー弾は消滅し赤い敵の飛行機のライフが1減るプログラムです














//🌞🌞🌞👇オプション猫と赤い敵の飛行機がぶつかったときオプション猫と赤い敵の飛行機が消滅するプログラムはこちらです



if (option_neko.life > 0)


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


if ((option_neko.x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < option_neko.x + 35) && (option_neko.y + 7 < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < option_neko.y + 20))

{


option_neko.life = 0;


akaitekinohikouki[i].life = 0;


//👆🌞オプション猫と赤い敵の飛行機が衝突すると共に消滅することになります



akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;



akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[0].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています




option_nekonobakuhatunohonoo.x = option_neko.x;


option_nekonobakuhatunohonoo.y = option_neko.y;


option_nekonobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 option_nekonobakuhatunohonoo.lifeに0以上の値を代入しました option_nekonobakuhatunohonoo.lifeにランダムに異なる値を代入することによりオプション猫が爆発する時間をランダムに変化させています



}

}


}

//🌞🌞🌞👆オプション猫と赤い敵の飛行機がぶつかったときオプション猫と赤い敵の飛行機が消滅するプログラムはこちらです




//👇🌞🌞🌞オプション猫と赤い敵の飛行機の弾が衝突したとき当たったオプション猫と赤い敵の飛行機の弾が消えオプション猫が爆発する😊のプログラムです



for (int i = 0; i < 10; i++) {


for (int j = 0; j < 10; j++) {


if (akaitekinohikoukinotama[i][j].life > 0)


if (option_neko.life > 0) {


if ((option_neko.x < akaitekinohikoukinotama[i][j].x + 10) && (akaitekinohikoukinotama[i][j].x < option_neko.x + 35) && (option_neko.y + 7 < akaitekinohikoukinotama[i][j].y + 10) && (akaitekinohikoukinotama[i][j].y < option_neko.y + 20)) {


option_neko.life = option_neko.life - 1;


akaitekinohikoukinotama[i][j].life = 0;


//👆🌞オプション猫と赤い敵の飛行機の弾が衝突すると敵の弾だけが消滅することになります




option_nekowooouhikari.x = option_neko.x;


option_nekowooouhikari.y = option_neko.y;


//🌞🌞🌞 赤い敵の飛行機の弾とオプション猫がぶつかると、そのときのオプション猫の位置座標がoption_nekowooouhikari.x, option_nekowooouhikari.yに代入されます


option_nekowooouhikari.life = 5;






if (option_neko.life == 0) {


option_nekonobakuhatunohonoo.x = option_neko.x;


option_nekonobakuhatunohonoo.y = option_neko.y;


option_nekonobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 option_nekonobakuhatunohonoo.lifeに0以上の値を代入しました option_nekonobakuhatunohonoo.lifeにランダムに異なる値を代入することによりオプション猫が爆発する時間をランダムに変化させています

}



}

}


}


}


//👆🌞🌞🌞オプション猫と赤い敵の飛行機の弾が衝突したとき当たったオプション猫と赤い敵の飛行機の弾が消え自分の飛行機が爆発する😊のプログラムです







//👇🌞🌞🌞赤い敵の飛行機とオプション猫の弾が衝突したとき当たったオプション猫の弾と赤い敵の飛行機が消滅するプログラムです


for (int i = 0; i < 10; i++) {


if (option_neko.life > 0) {


for (int j = 0; j < 10; j++) {


if (option_nekonotama[j].life > 0)


if ((option_nekonotama[j].x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < option_nekonotama[j].x + 15) && (option_nekonotama[j].y < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < option_nekonotama[j].y + 5)) {


option_nekonotama[j].life = 0;


akaitekinohikouki[i].life = akaitekinohikouki[i].life - 1;


//👆🌞オプション猫と赤い敵の飛行機が衝突するとオプション猫の弾は消滅しakaitekinohikouki[i].lifeに格納されている値は1減ることになります akaitekinohikouki[i].lifeに格納されている値が0になると赤い敵の飛行機は消滅することになります


akaitekinohikoukiwooouhikari.x = akaitekinohikouki[i].x;


akaitekinohikoukiwooouhikari.y = akaitekinohikouki[i].y;


//🌞🌞🌞オプション猫の弾と赤い敵の飛行機がぶつかると赤い敵の飛行機の位置座標がakaitekinohikoukiwooouhikari.x, akaitekinohikoukiwooouhikari.yに代入されます


akaitekinohikoukiwooouhikari.life = 5;






if (akaitekinohikouki[i].life == 0) {


akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;


akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[i].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].life, akaitekinohikoukinobakuhatunohonoo[1].life, akaitekinohikoukinobakuhatunohonoo[2].life, akaitekinohikoukinobakuhatunohonoo[3].life, akaitekinohikoukinobakuhatunohonoo[4].life, akaitekinohikoukinobakuhatunohonoo[5].life, akaitekinohikoukinobakuhatunohonoo[6].life, akaitekinohikoukinobakuhatunohonoo[7].life, akaitekinohikoukinobakuhatunohonoo[8].life, akaitekinohikoukinobakuhatunohonoo[9].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞赤い敵の飛行機とオプション猫の弾が衝突したとき当たったオプション猫の弾と赤い敵の飛行機が消滅するプログラムです



//👇🌞🌞🌞赤い敵の飛行機とオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾は消滅し赤い敵の飛行機のライフが1減るプログラムです


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


for (int j = 0; j < 10; j++) {


if (option_nekonotama_lazer[j].life > 0)


if ((option_nekonotama_lazer[j].x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < option_nekonotama_lazer[j].x + 15) && (option_nekonotama_lazer[j].y < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < option_nekonotama_lazer[j].y + 5)) {


option_nekonotama_lazer[j].life = 0;


akaitekinohikouki[i].life = 0;


//👆🌞オプション猫のレーザー弾と赤い敵の飛行機が衝突するとオプション猫のレーザー弾は消滅しakaitekinohikouki[i].lifeに格納されている値は1減ることになります akaitekinohikouki[i].lifeに格納されている値が0になると赤い敵の飛行機は消滅することになります


akaitekinohikoukiwooouhikari.x = akaitekinohikouki[i].x;


akaitekinohikoukiwooouhikari.y = akaitekinohikouki[i].y;


//🌞🌞🌞オプション猫のレーザー弾と赤い敵の飛行機がぶつかると敵の飛行機の位置座標がakaitekinohikoukiwooouhikari.x, akaitekinohikoukiwooouhikari.yに代入されます


akaitekinohikoukiwooouhikari.life = 5;






if (akaitekinohikouki[i].life == 0) {


akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;


akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[i].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].life, akaitekinohikoukinobakuhatunohonoo[1].life, akaitekinohikoukinobakuhatunohonoo[2].life, akaitekinohikoukinobakuhatunohonoo[3].life, akaitekinohikoukinobakuhatunohonoo[4].life, akaitekinohikoukinobakuhatunohonoo[5].life, akaitekinohikoukinobakuhatunohonoo[6].life, akaitekinohikoukinobakuhatunohonoo[7].life, akaitekinohikoukinobakuhatunohonoo[8].life, akaitekinohikoukinobakuhatunohonoo[9].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞赤い敵の飛行機とオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾は消滅し赤い敵の飛行機のライフが1減るプログラムです





if (akaitekinohikoukiwooouhikari.life > 0) {



SetDrawBlendMode(DX_BLENDMODE_ALPHA, 200);


//👆🌞🌞🌞描画ブレンドモードがアルファブレンドになっています


DrawGraph(akaitekinohikoukiwooouhikari.x, akaitekinohikoukiwooouhikari.y, akaitekinohikoukiwooouhikari.graphichandle[0], TRUE);



SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);

akaitekinohikoukiwooouhikari.life = akaitekinohikoukiwooouhikari.life - 1;


// 👆🌞🌞🌞描画ブレンドモードをノーブレンドにして描画ブレンドモードを解除しています

}



//👆🌞🌞🌞赤い敵の飛行機を覆う光の画像が描かれます akaitekinohikoukiwooouhikari.lifeに格納されている値が0になると赤い敵の飛行機を覆う光の画像が描かれることはありません


for (int i = 0; i < 10; i++) {


if (akaitekinohikoukinobakuhatunohonoo[i].life > 0) {


DrawGraph(akaitekinohikoukinobakuhatunohonoo[i].x, akaitekinohikoukinobakuhatunohonoo[i].y, akaitekinohikoukinobakuhatunohonoo[i].graphichandle[(akaitekinohikoukinobakuhatunohonoo[i].graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞 akaitekinohikoukinobakuhatunohonoo[i].graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞

akaitekinohikoukinobakuhatunohonoo[i].graphicnumber = akaitekinohikoukinobakuhatunohonoo[i].graphicnumber + 1;

//👆🌞🌞🌞爆発の炎がアニメーションするよう設定が行われています



akaitekinohikoukinobakuhatunohonoo[i].life = akaitekinohikoukinobakuhatunohonoo[i].life - 1;



}


//👆 akaitekinohikoukinobakuhatunohonoo[i].lifeに格納されている値が1なら爆発の炎の画像を描きます

//👆 akaitekinohikoukinobakuhatunohonoo[i].lifeに格納されている値が0なら爆発の炎の画像が描かれることはありません


}






//👇🌞🌞🌞新型 赤い敵の飛行機10体から敵の弾が10連射されるプログラムです





for (int i = 0; i < 10; i = i + 1) {



if (akaitekinohikouki[i].life > 1 && GetRand(15) == 0 && akaitekinohikoukinotama[i][0].life == 0 && hassyasareru_akaitekinohikoukinotama[i] == 0) {


akaitekinohikoukinotama[i][0].x = akaitekinohikouki[i].x - 10;


akaitekinohikoukinotama[i][0].y = akaitekinohikouki[i].y + 10;


akaitekinohikoukinotama_tsix[i][0] = akaitekinohikoukinotama[i][0].x;


akaitekinohikoukinotama[i][0].life = 1;


hassyasareru_akaitekinohikoukinotama[i] = 1;


akaitekinohikoukinotama_count[i][0] = 20 + GetRand(25);//👈🌞🌞🌞赤い敵akaitekinohikouki[i]から10連射される最初の弾akaitekinohikoukinotama[i][0]と次弾akaitekinohikoukinotama[i][1]の間隔を調整することができます



}




for (int j = 0; j < 9; j++) {


if (akaitekinohikoukinotama_count[i][j] > 0) { akaitekinohikoukinotama_count[i][j] = akaitekinohikoukinotama_count[i][j] - 1; }



if (akaitekinohikoukinotama_count[i][j] == 0 && hassyasareru_akaitekinohikoukinotama[i] == j + 1) {


if (akaitekinohikoukinotama[i][j + 1].life == 0) {


akaitekinohikoukinotama[i][j + 1].x = akaitekinohikouki[i].x - 10;


akaitekinohikoukinotama[i][j + 1].y = akaitekinohikouki[i].y + 10;


akaitekinohikoukinotama_tsix[i][j + 1] = akaitekinohikoukinotama[i][j + 1].x;




akaitekinohikoukinotama[i][j + 1].life = 1;


hassyasareru_akaitekinohikoukinotama[i] = j + 2;


akaitekinohikoukinotama_count[i][j + 1] = 20 + GetRand(25);//👈🌞🌞🌞赤い敵の飛行機akaitekinohikouki[i]から10連射される敵の弾akaitekinohikoukinotama[i][j + 1]と次に発射される弾akaitekinohikoukinotama[i][j + 2]の間隔を調整することができます


}


}


}




if (akaitekinohikoukinotama_count[i][9] > 0) { akaitekinohikoukinotama_count[i][9] = akaitekinohikoukinotama_count[i][9] - 1; }




if (akaitekinohikoukinotama_count[i][9] == 0 && hassyasareru_akaitekinohikoukinotama[i] == 10) {


hassyasareru_akaitekinohikoukinotama[i] = 0;


}


for (int j = 0; j < 10; j = j + 1) {


if (akaitekinohikoukinotama[i][j].life == 1) {

//🌞🌞🌞 akaitekinohikoukinotama[i][j].lifeに1が代入されていると赤い敵の飛行機から発射される弾akaitekinohikoukinotama[i][j]がゲーム画面に表示されることになります akaitekinohikoukinotama[i][j].lifeに0が代入されていると赤い敵の飛行機から発射される弾 akaitekinohikoukinotama[i][j]がゲーム画面に表示されることはありません

DrawGraph(akaitekinohikoukinotama[i][j].x, akaitekinohikoukinotama[i][j].y, akaitekinohikoukinotama[i][j].graphichandle[0], TRUE);


akaitekinohikoukinotama[i][j].x = akaitekinohikoukinotama[i][j].x - 1;


if (akaitekinohikoukinotama_tsix[i][j] - akaitekinohikoukinotama[i][j].x > 1000)

//🌞🌞🌞 赤い敵の飛行機から発射された弾akaitekinohikoukinotama[i][j]の位置のx座標が発射されたときの最初の位置のx座標から🍑左へ🍑640を超えて離れると条件式akaitekinohikoukinotama_tsix[i][j] - akaitekinohikoukinotama[i][j].xは真の値1をとることになります

//🌞🌞🌞🌞🌞👆 akaitekinohikoukinotama_tsix[i][j]には赤い敵の飛行機から発射される弾akaitekinohikoukinotama[i][j]が発射されるときのakaitekinohikoukinotama[i][j]のいる位置のx座標が代入されます。赤い敵の飛行機から発射された弾のx座標akaitekinohikoukinotama[i][j].xが赤い敵の飛行機から発射されたときの敵の弾akaitekinohikoukinotama[i][j]のいる位置からx方向へ640ドット離れた時、条件式akaitekinohikoukinotama_tsix[i][j] - akaitekinohikoukinotama[i][j].x > 640は真の値1を持つことになります

akaitekinohikoukinotama[i][j].life = 0;


}


}


}



//👆🌞🌞🌞赤い敵の飛行機10体の挙動の設定の部分です




//💖💖💖ここで赤い敵の飛行機10体の設定の部分と敵の飛行機ルルの挙動の設定に分けられます💖💖💖







//👇🌞🌞🌞敵の飛行機ルルの挙動の設定です


if (framecounter >= 2000) {


if (RuRu_repeat > 0) {


for (int i = 0; i < 1; i++) {


if (RuRu[i].life > 0) {


RuRu[i].x = RuRu[i].x + RuRunoidoupattern[RuRu_m][1];


RuRu[i].y = RuRu[i].y + RuRunoidoupattern[RuRu_m][2];

}



}


RuRu_repeat = RuRu_repeat - 1;

}


if (RuRu_repeat == 0) {


if (RuRu_m < 4) {


RuRu_repeat = RuRunoidoupattern[RuRu_m][0];


RuRu_m = RuRu_m + 1;

}




if (RuRu_m == 4) {

RuRu_m = 0;

RuRu_repeat = RuRunoidoupattern[RuRu_m][0];


}


}



for (int i = 0; i < 1; i++) {


if (RuRu[i].life > 0) {



DrawGraph(RuRu[i].x, RuRu[i].y, RuRu[i].graphichandle[(RuRu[i].graphicnumber) / 128 % 7], TRUE);


RuRu[i].graphicnumber = RuRu[i].graphicnumber + 1;


//🌞🌞🌞 (RuRu[i].graphicnumber)を128で割っているので通常のアニメーション速度の128分の1の速度で画像が切り替わります

//👆🌞🌞🌞ただし 今はルルの画像は1枚しか用意されていないのでアニメーションしません


}


}






//🌞🌞🌞👇自分の飛行機と敵の飛行機ルルがぶつかったとき自分の飛行機と敵の飛行機ルルが消滅するプログラムはこちらです


if (jibunnohikouki.life > 0)


for (int i = 0; i < 1; i++) {


if (RuRu[i].life > 0) {


if ((jibunnohikouki.x < RuRu[i].x + 320) && (RuRu[i].x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < RuRu[i].y + 240) && (RuRu[i].y < jibunnohikouki.y + 20))

{


jibunnohikouki.life = 0;


RuRu[i].life = 0;


//👆🌞自分の飛行機と敵の飛行機ルルが衝突すると共に消滅することになります



RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;



RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[0].lifeに0以上の値を代入しました RuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています




jibunnohikoukinobakuhatunohonoo.x = jibunnohikouki.x;


jibunnohikoukinobakuhatunohonoo.y = jibunnohikouki.y;


jibunnohikoukinobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 jibunnohikoukinobakuhatunohonoo.lifeに0以上の値を代入しました jibunnohikoukinobakuhatunohonoo.lifeにランダムに異なる値を代入することにより自分の飛行機が爆発する時間をランダムに変化させています



}

}


}

//🌞🌞🌞👆自分の飛行機と敵の飛行機ルルがぶつかったとき自分の飛行機と敵の飛行機が消滅するプログラムはこちらです




//👇🌞🌞🌞自分の飛行機と敵の飛行機ルルの弾が衝突したとき当たった自分の飛行機と敵の飛行機ルルの弾が消え自分の飛行機が爆発するプログラムです



for (int i = 0; i < 1; i++) {


for (int j = 0; j < 10; j++) {


if (RuRunotama[i][j].life > 0)


if (jibunnohikouki.life > 0) {


if ((jibunnohikouki.x < RuRunotama[i][j].x + 10) && (RuRunotama[i][j].x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < RuRunotama[i][j].y + 10) && (RuRunotama[i][j].y < jibunnohikouki.y + 20)) {


jibunnohikouki.life = jibunnohikouki.life - 1;


RuRunotama[i][j].life = 0;


//👆🌞自分の飛行機と敵の弾が衝突するとjibunnohikouki.lifeに格納される値が1減り敵の弾は消滅することになります。jibunnohikouki.lifeに格納される値が0になると自分の飛行機が消滅することになります




jibunnohikoukiwooouhikari.x = jibunnohikouki.x;


jibunnohikoukiwooouhikari.y = jibunnohikouki.y;


//🌞🌞🌞自分の飛行機と敵の弾がぶつかると自分の飛行機の位置座標がjibunnohikoukiwooouhikari.x , jibunnohikoukiwooouhikari.yに代入されます


jibunnohikoukiwooouhikari.life = 3;








if (jibunnohikouki.life == 0) {


jibunnohikoukinobakuhatunohonoo.x = jibunnohikouki.x;


jibunnohikoukinobakuhatunohonoo.y = jibunnohikouki.y;


jibunnohikoukinobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 jibunnohikoukinobakuhatunohonoo.lifeに0以上の値を代入しました jibunnohikoukinobakuhatunohonoo.lifeにランダムに異なる値を代入することにより自分の飛行機が爆発する時間をランダムに変化させています


}

}

}


}


}


//👆🌞🌞🌞自分の飛行機と敵の飛行機ルルの弾が衝突したとき当たった自分の飛行機と敵の弾が消え自分の飛行機が爆発するプログラムです







//👇🌞🌞🌞敵の飛行機ルルと自分の弾が衝突したとき当たった自分の弾と敵の飛行機ルルが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (RuRu[i].life > 0) {





for (int j = 0; j < 10; j++) {


if (jibunnotama[j].life > 0)


if ((jibunnotama[j].x < RuRu[i].x + 320) && (RuRu[i].x < jibunnotama[j].x + 15) && (jibunnotama[j].y < RuRu[i].y + 240) && (RuRu[i].y < jibunnotama[j].y + 5)) {


jibunnotama[j].life = 0;


RuRu[i].life = RuRu[i].life - 1;


//👆🌞自分の弾と敵の飛行機ルルが衝突すると自分の弾は消滅しtekinohikouki[i].lifeに格納されている値は1減ることになります RuRu[i].lifeに格納されている値が0になると敵の飛行機ルルは消滅することになります


RuRuwooouhikari.x = RuRu[i].x;


RuRuwooouhikari.y = RuRu[i].y;


//🌞🌞🌞自分の弾と敵の飛行機ルルがぶつかると敵の飛行機ルルの位置座標がRuRuwooouhikari.x, RuRuwooouhikari.yに代入されます


RuRuwooouhikari.life = 10;






if (RuRu[i].life == 0) {


RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;


RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[i].lifeに0以上の値を代入しましたRuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞敵の飛行機ルルと自分の弾が衝突したとき当たった自分の弾と敵の飛行機ルルが消滅するプログラムです



//👇🌞🌞🌞敵の飛行機ルルと自分のレーザー弾が衝突したとき当たった自分のレーザー弾と敵の飛行機ルルが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (RuRu[i].life > 0) {



for (int j = 0; j < 10; j++) {


if (jibunnotama_lazer[j].life > 0)


if ((jibunnotama_lazer[j].x < RuRu[i].x + 320) && (RuRu[i].x < jibunnotama_lazer[j].x + 15) && (jibunnotama_lazer[j].y < RuRu[i].y + 240) && (RuRu[i].y < jibunnotama_lazer[j].y + 5)) {


jibunnotama_lazer[j].life = 0;


RuRu[i].life = RuRu[i].life - 1;


//👆🌞自分のレーザー弾と敵の飛行機ルルが衝突すると自分のレーザー弾は消滅しRuRu[i].lifeに格納されている値は1減ることになります RuRu[i].lifeに格納されている値が0になると敵の飛行機ルルは消滅することになります


RuRuwooouhikari.x = RuRu[i].x;


RuRuwooouhikari.y = RuRu[i].y;


//🌞🌞🌞自分のレーザー弾と敵の飛行機ルルがぶつかると敵の飛行機ルルの位置座標がRuRuwooouhikari.x, RuRuwooouhikari.yに代入されます


RuRuwooouhikari.life = 10;






if (RuRu[i].life == 0) {


RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;


RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[i].lifeに0以上の値を代入しましたRuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞敵の飛行機ルルと自分のレーザー弾が衝突したとき当たった自分のレーザー弾と敵の飛行機ルルが消滅するプログラムです










//🌞🌞🌞👇オプション猫と敵の飛行機ルルがぶつかったときオプション猫と敵の飛行機ルルが消滅するプログラムはこちらです


if (option_neko.life > 0)


for (int i = 0; i < 1; i++) {


if (RuRu[i].life > 0) {


if ((option_neko.x < RuRu[i].x + 320) && (RuRu[i].x < option_neko.x + 35) && (option_neko.y + 7 < RuRu[i].y + 240) && (RuRu[i].y < option_neko.y + 20))

{


option_neko.life = 0;


RuRu[i].life = 0;


//👆🌞オプション猫と敵の飛行機ルルが衝突すると共に消滅することになります



RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;



RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[0].lifeに0以上の値を代入しました RuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています




option_nekonobakuhatunohonoo.x = option_neko.x;


option_nekonobakuhatunohonoo.y = option_neko.y;


option_nekonobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞option_nekonobakuhatunohonoo.lifeに0以上の値を代入しましたoption_nekonobakuhatunohonoo.lifeにランダムに異なる値を代入することによりオプション猫が爆発する時間をランダムに変化させています



}

}


}

//🌞🌞🌞👆オプション猫と敵の飛行機ルルがぶつかったときオプション猫と敵の飛行機が消滅するプログラムはこちらです




//👇🌞🌞🌞オプション猫と敵の飛行機ルルの弾が衝突したとき当たったオプション猫と敵の飛行機ルルの弾が消え自分の飛行機が爆発するプログラムです



for (int i = 0; i < 1; i++) {


for (int j = 0; j < 10; j++) {


if (RuRunotama[i][j].life > 0)


if (option_neko.life > 0) {


if ((option_neko.x < RuRunotama[i][j].x + 10) && (RuRunotama[i][j].x < option_neko.x + 35) && (option_neko.y + 7 < RuRunotama[i][j].y + 10) && (RuRunotama[i][j].y < option_neko.y + 20)) {


option_neko.life = option_neko.life - 1;


RuRunotama[i][j].life = 0;


//👆🌞オプション猫と敵の弾が衝突するとoption_neko.lifeに格納される値が1減り敵の弾は消滅することになります。option_neko.lifeに格納される値が0になるとオプション猫が消滅することになります




option_nekowooouhikari.x = option_neko.x;


option_nekowooouhikari.y = option_neko.y;


//🌞🌞🌞オプション猫と敵の弾がぶつかるとオプション猫の位置座標がoption_nekowooouhikari.x ,option_nekowooouhikari.yに代入されます


option_nekowooouhikari.life = 3;








if (option_neko.life == 0) {


option_nekonobakuhatunohonoo.x = option_neko.x;


option_nekonobakuhatunohonoo.y = option_neko.y;


option_nekonobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 option_nekonobakuhatunohonoo.lifeに0以上の値を代入しましたoption_nekonobakuhatunohonoo.lifeにランダムに異なる値を代入することによりオプション猫が爆発する時間をランダムに変化させています


}

}

}


}


}


//👆🌞🌞🌞オプション猫と敵の飛行機ルルの弾が衝突したとき当たったオプション猫と敵の弾が消えオプション猫が爆発するプログラムです







//👇🌞🌞🌞敵の飛行機ルルとオプション猫の弾が衝突したとき当たったオプション猫の弾と敵の飛行機ルルが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (RuRu[i].life > 0) {





for (int j = 0; j < 10; j++) {


if (option_nekonotama[j].life > 0)


if ((option_nekonotama[j].x < RuRu[i].x + 320) && (RuRu[i].x < option_nekonotama[j].x + 15) && (option_nekonotama[j].y < RuRu[i].y + 240) && (RuRu[i].y < option_nekonotama[j].y + 5)) {


option_nekonotama[j].life = 0;


RuRu[i].life = RuRu[i].life - 1;


//👆🌞オプション猫の弾と敵の飛行機ルルが衝突するとオプション猫の弾は消滅しtekinohikouki[i].lifeに格納されている値は1減ることになります RuRu[i].lifeに格納されている値が0になると敵の飛行機ルルは消滅することになります


RuRuwooouhikari.x = RuRu[i].x;


RuRuwooouhikari.y = RuRu[i].y;


//🌞🌞🌞オプション猫の弾と敵の飛行機ルルがぶつかると敵の飛行機ルルの位置座標がRuRuwooouhikari.x, RuRuwooouhikari.yに代入されます


RuRuwooouhikari.life = 10;






if (RuRu[i].life == 0) {


RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;


RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[i].lifeに0以上の値を代入しましたRuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞敵の飛行機ルルとオプション猫の弾が衝突したとき当たったオプション猫の弾と敵の飛行機ルルが消滅するプログラムです



//👇🌞🌞🌞敵の飛行機ルルとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾と敵の飛行機ルルが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (RuRu[i].life > 0) {



for (int j = 0; j < 10; j++) {


if (option_nekonotama_lazer[j].life > 0)


if ((option_nekonotama_lazer[j].x < RuRu[i].x + 320) && (RuRu[i].x < option_nekonotama_lazer[j].x + 15) && (option_nekonotama_lazer[j].y < RuRu[i].y + 240) && (RuRu[i].y < option_nekonotama_lazer[j].y + 5)) {


option_nekonotama_lazer[j].life = 0;


RuRu[i].life = RuRu[i].life - 1;


//👆🌞オプション猫のレーザー弾と敵の飛行機ルルが衝突するとオプション猫のレーザー弾は消滅しRuRu[i].lifeに格納されている値は1減ることになります RuRu[i].lifeに格納されている値が0になると敵の飛行機ルルは消滅することになります


RuRuwooouhikari.x = RuRu[i].x;


RuRuwooouhikari.y = RuRu[i].y;


//🌞🌞🌞オプション猫のレーザー弾と敵の飛行機ルルがぶつかると敵の飛行機ルルの位置座標がRuRuwooouhikari.x, RuRuwooouhikari.yに代入されます


RuRuwooouhikari.life = 10;






if (RuRu[i].life == 0) {


RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;


RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[i].lifeに0以上の値を代入しましたRuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞敵の飛行機ルルとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾と敵の飛行機ルルが消滅するプログラムです








if (RuRuwooouhikari.life > 0) {





DrawGraph(RuRuwooouhikari.x, RuRuwooouhikari.y, RuRuwooouhikari.graphichandle[0], TRUE);




RuRuwooouhikari.life = RuRuwooouhikari.life - 1;



}



//👆🌞🌞🌞敵の飛行機ルルを覆う光の画像が描かれます RuRuwooouhikari.lifeに格納されている値が0になると敵の飛行機ルルを覆う光の画像が描かれることはありません


for (int i = 0; i < 1; i++) {


if (RuRunobakuhatunohonoo[i].life > 0) {


DrawGraph(RuRunobakuhatunohonoo[i].x, RuRunobakuhatunohonoo[i].y, RuRunobakuhatunohonoo[i].graphichandle[(RuRunobakuhatunohonoo[i].graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞RuRunobakuhatunohonoo[i].graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞

RuRunobakuhatunohonoo[i].graphicnumber = RuRunobakuhatunohonoo[i].graphicnumber + 1;

//👆🌞🌞🌞爆発の炎がアニメーションするよう設定が行われています



RuRunobakuhatunohonoo[i].life = RuRunobakuhatunohonoo[i].life - 1;



}


//👆 RuRunobakuhatunohonoo[i].lifeに格納されている値が1なら爆発の炎の画像を描きます

//👆 RuRunobakuhatunohonoo[i].lifeに格納されている値が0なら爆発の炎の画像が描かれることはありません


}







//👇🌞🌞🌞新型 敵の飛行機ルルから敵の飛行機ルルの弾が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]のいた位置から640ドット離れた時、条件式RuRunotama_tsix[i][j] - RuRunotama[i][j].x > 640は真の値1を持つことになります

RuRunotama[i][j].life = 0;


}


}


}



}



//👆🌞🌞🌞敵の飛行機ルルの挙動の設定です



//👇🌞🌞🌞敵キャラ ミミの挙動の設定です



if (((500 <= framecounter) && (framecounter <= 1500)) || ((2500 <= framecounter) && (framecounter <= 3500)))

{


if (MiMi.life > 0) {



DrawGraph(MiMi.x, MiMi.y, MiMi.graphichandle[0], TRUE);



}


}



//👆🌞🌞🌞敵キャラ ミミの挙動の設定です



//👇🌞🌞🌞オレンジリング10体の挙動の設定の部分です



for (int i = 0; i < 10; i++) {


if (orange_ring[i].life > 0) {



DrawGraph(orange_ring[i].x, orange_ring[i].y, orange_ring[i].graphichandle[(orange_ring[i].graphicnumber) / 128 % 7], TRUE);



}


}




for (int j = 9; j > 0; j = j - 1) {



orange_ring[j].x = orange_ring[j - 1].x;

orange_ring[j].y = orange_ring[j - 1].y;


}




//👇😊😊😊先頭のオレンジリングだけを動かしています


if (orange_ring_repeat > 0) {


for (int i = 0; i < 1; i++) {


if (orange_ring[i].life > 0) {


orange_ring[i].x = orange_ring[i].x + orange_ringnoidoupattern[orange_ring_m][1];


orange_ring[i].y = orange_ring[i].y + orange_ringnoidoupattern[orange_ring_m][2];

}



}


orange_ring_repeat = orange_ring_repeat - 1;

}


if (orange_ring_repeat == 0) {


if (orange_ring_m < 3) {



orange_ring_m = orange_ring_m + 1;


orange_ring_repeat = orange_ringnoidoupattern[orange_ring_m][0];

}


}




if (orange_ring_repeat == 0) {


if (orange_ring_m == 3) {

orange_ring_m = 0;

orange_ring_repeat = orange_ringnoidoupattern[orange_ring_m][0];


}


}



//👆😊😊😊先頭のオレンジリングだけを動かしています



//👆🌞🌞🌞オレンジリング10体の挙動の設定の部分です










//👇🌞🌞🌞レーザーマークの挙動の設定です


if (framecounter % 1000 == 0)

{



lazermark.life = 1;


lazermark.x = 640;


lazermark.y = 240;


}



//👆🌞🌞🌞ここです framecounterが1000になったとき時lazermark.life に1が代入されることになります







if (lazermark_repeat > 0) {


for (int i = 0; i < 1; i++) {


if (lazermark.life > 0) {


lazermark.x = lazermark.x + lazermarknoidoupattern[lazermark_m][1];


lazermark.y = lazermark.y + lazermarknoidoupattern[lazermark_m][2];

}



}


lazermark_repeat = lazermark_repeat - 1;

}


if (lazermark_repeat == 0) {


if (lazermark_m < 4) {


lazermark_repeat = lazermarknoidoupattern[lazermark_m][0];


lazermark_m = lazermark_m + 1;

}




if (lazermark_m == 4) {

lazermark_m = 0;

lazermark_repeat = lazermarknoidoupattern[lazermark_m][0];


}


}



for (int i = 0; i < 1; i++) {


if (lazermark.life > 0) {



DrawGraph(lazermark.x, lazermark.y, lazermark.graphichandle[(lazermark.graphicnumber) / 128 % 7], TRUE);


lazermark.graphicnumber = lazermark.graphicnumber + 1;


//🌞🌞🌞 (lazermark.graphicnumber)を128で割っているので通常のアニメーション速度の128分の1の速度で画像が切り替わります

//👆🌞🌞🌞レーザーマークをアニメーションさせる設定です ただし 今は一枚しかレーザーマークの画像を用意していないのでレーザーマークはアニメーションしません


}


}




if (lazermark.x < 0) {


lazermark.life = 0;



}


//👆💖💖💖ここです レーザー弾が画面の外に消えた時、すなわちlazermark.xが0より小さいマイナスの値をもったときlazermark.lifeに0が代入されることになりレーザー弾は左方向に進まなくなりますのx座標




//🌞🌞🌞👇自分の飛行機とレーザーマークがぶつかったときレーザーマークが消滅するプログラムはこちらです


if (jibunnohikouki.life > 0)


for (int i = 0; i < 1; i++) {


if (lazermark.life > 0) {


if ((jibunnohikouki.x < lazermark.x + 30) && (lazermark.x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < lazermark.y + 30) && (lazermark.y < jibunnohikouki.y + 20))

{



lazermark.life = 0;


//👆🌞自分の飛行機とレーザーマークが衝突するとレーザーマークが消滅することになります

jibunnotamamode = 1;



//👆🌞自分の飛行機とレーザーマークが衝突するとjibunnotamamodeに1が代入されレーザー発射モードになります


}

}


}

//🌞🌞🌞👆自分の飛行機とレーザーマークがぶつかったときレーザーマークが消滅するプログラムはこちらです








//👇🌞🌞🌞レーザーマークと自分の弾が衝突したとき当たった自分の弾とレーザーマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (lazermark.life > 0) {





for (int j = 0; j < 10; j++) {


if (jibunnotama[j].life > 0)


if ((jibunnotama[j].x < lazermark.x + 30) && (lazermark.x < jibunnotama[j].x + 15) && (jibunnotama[j].y < lazermark.y + 30) && (lazermark.y < jibunnotama[j].y + 5)) {


jibunnotama[j].life = 0;


lazermark.life = lazermark.life - 1;


//👆🌞自分の弾とレーザーマークが衝突すると自分の弾は消滅しlazermark.lifeに格納されている値は1減ることになります lazermark.lifeに格納されている値が0になるとレーザーマークは消滅することになります




}

}


}

}





//👆🌞🌞🌞レーザーマークと自分の弾が衝突したとき当たった自分の弾とレーザーマークが消滅するプログラムです



//👇🌞🌞🌞レーザーマークと自分のレーザー弾が衝突したとき当たった自分のレーザー弾とレーザーマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (lazermark.life > 0) {



for (int j = 0; j < 10; j++) {


if (jibunnotama_lazer[j].life > 0)


if ((jibunnotama_lazer[j].x < lazermark.x + 30) && (lazermark.x < jibunnotama_lazer[j].x + 15) && (jibunnotama_lazer[j].y < lazermark.y + 30) && (lazermark.y < jibunnotama_lazer[j].y + 5)) {


jibunnotama_lazer[j].life = 0;


lazermark.life = lazermark.life - 1;


//👆🌞自分のレーザー弾とレーザーマークが衝突すると自分のレーザー弾は消滅しlazermark.lifeに格納されている値は1減ることになります lazermark.lifeに格納されている値が0になるとレーザーマークは消滅することになります




}


}

}


}



//👆🌞🌞🌞レーザーマークと自分のレーザー弾が衝突したとき当たった自分のレーザー弾とレーザーマークが消滅するプログラムです




//👆🌞🌞🌞レーザーマークの挙動の設定です


//👇🌞🌞🌞ミサイルマークの挙動の設定です


if (framecounter % 1500 == 0) {



misslemark.life = 1;


misslemark.x = 640;


misslemark.y = 240;




}


if (misslemark_repeat > 0) {


for (int i = 0; i < 1; i++) {


if (misslemark.life > 0) {


misslemark.x = misslemark.x + misslemarknoidoupattern[misslemark_m][1];


misslemark.y = misslemark.y + misslemarknoidoupattern[misslemark_m][2];

}



}


misslemark_repeat = misslemark_repeat - 1;

}


if (misslemark_repeat == 0) {


if (misslemark_m < 4) {


misslemark_repeat = misslemarknoidoupattern[misslemark_m][0];


misslemark_m = misslemark_m + 1;

}




if (misslemark_m == 4) {

misslemark_m = 0;

misslemark_repeat = misslemarknoidoupattern[misslemark_m][0];


}


}



for (int i = 0; i < 1; i++) {


if (misslemark.life > 0) {



DrawGraph(misslemark.x, misslemark.y, misslemark.graphichandle[(misslemark.graphicnumber) / 128 % 7], TRUE);


misslemark.graphicnumber = misslemark.graphicnumber + 1;


//🌞🌞🌞 (misslemark.graphicnumber)を128で割っているので通常のアニメーション速度の128分の1の速度で画像が切り替わります

//👆🌞🌞🌞ミサイルマークをアニメーションさせる設定です ただし 今は一枚しかミサイルマークの画像を用意していないのでミサイルマークはアニメーションしません


}


}






if (misslemark.x < 0) {


misslemark.life = 0;



}


//👆💖💖💖ここです ミサイル弾が画面の外に消えた時、すなわちmisslemark.xが0より小さいマイナスの値をもったときmisslemark.lifeに0が代入されることになりレーザー弾は左方向に進まなくなります







//🌞🌞🌞👇自分の飛行機とミサイルマークがぶつかったときミサイルマークが消滅するプログラムはこちらです


if (jibunnohikouki.life > 0)


for (int i = 0; i < 1; i++) {


if (misslemark.life > 0) {


if ((jibunnohikouki.x < misslemark.x + 30) && (misslemark.x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < misslemark.y + 30) && (misslemark.y < jibunnohikouki.y + 20))

{



misslemark.life = 0;


//👆🌞自分の飛行機とミサイルマークが衝突するとミサイルマークが消滅することになります


jibunnotamamode = 0;//👈🌞🌞🌞普通の弾が発射されるようにjibunnotamamodeに0を代入します


}

}


}

//🌞🌞🌞👆自分の飛行機とミサイルマークがぶつかったときミサイルマークが消滅するプログラムはこちらです








//👇🌞🌞🌞ミサイルマークと自分の弾が衝突したとき当たった自分の弾とミサイルマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (misslemark.life > 0) {





for (int j = 0; j < 10; j++) {


if (jibunnotama[j].life > 0)


if ((jibunnotama[j].x < misslemark.x + 30) && (misslemark.x < jibunnotama[j].x + 15) && (jibunnotama[j].y < misslemark.y + 30) && (misslemark.y < jibunnotama[j].y + 5)) {


jibunnotama[j].life = 0;


misslemark.life = misslemark.life - 1;


//👆🌞自分の弾とミサイルマークが衝突すると自分の弾は消滅しmisslemark.lifeに格納されている値は1減ることになります misslemark.lifeに格納されている値が0になるとミサイルマークは消滅することになります




}

}


}

}





//👆🌞🌞🌞ミサイルマークと自分の弾が衝突したとき当たった自分の弾とミサイルマークが消滅するプログラムです



//👇🌞🌞🌞ミサイルマークと自分のレーザー弾が衝突したとき当たった自分のレーザー弾とミサイルマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (misslemark.life > 0) {



for (int j = 0; j < 10; j++) {


if (jibunnotama_lazer[j].life > 0)


if ((jibunnotama_lazer[j].x < misslemark.x + 30) && (misslemark.x < jibunnotama_lazer[j].x + 15) && (jibunnotama_lazer[j].y < misslemark.y + 30) && (misslemark.y < jibunnotama_lazer[j].y + 5)) {


jibunnotama_lazer[j].life = 0;


misslemark.life = misslemark.life - 1;


//👆🌞自分のレーザー弾とミサイルマークが衝突すると自分のレーザー弾は消滅しmisslemark.lifeに格納されている値は1減ることになります misslemark.lifeに格納されている値が0になるとミサイルマークは消滅することになります






}

}


}

}





//👆🌞🌞🌞ミサイルマークと自分のレーザー弾が衝突したとき当たった自分のレーザー弾とミサイルマークが消滅するプログラムです




//👆🌞🌞🌞ミサイルマークの挙動の設定です






//👇🌞🌞🌞レーザーマークの挙動の設定です



//🌞🌞🌞👇オプション猫とレーザーマークがぶつかったときレーザーマークが消滅するプログラムはこちらです


if (option_neko.life > 0)


for (int i = 0; i < 1; i++) {


if (lazermark.life > 0) {


if ((option_neko.x < lazermark.x + 30) && (lazermark.x < option_neko.x + 35) && (option_neko.y + 7 < lazermark.y + 30) && (lazermark.y < option_neko.y + 20))

{



lazermark.life = 0;


//👆🌞オプション猫とレーザーマークが衝突するとレーザーマークが消滅することになります

option_nekonotamamode = 1;



//👆🌞オプション猫とレーザーマークが衝突するとoption_nekonotamamodeに1が代入されレーザー発射モードになります


}

}


}

//🌞🌞🌞👆オプション猫とレーザーマークがぶつかったときレーザーマークが消滅するプログラムはこちらです








//👇🌞🌞🌞レーザーマークとオプション猫の弾が衝突したとき当たったオプション猫の弾とレーザーマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (lazermark.life > 0) {





for (int j = 0; j < 10; j++) {


if (option_nekonotama[j].life > 0)


if ((option_nekonotama[j].x < lazermark.x + 30) && (lazermark.x < option_nekonotama[j].x + 15) && (option_nekonotama[j].y < lazermark.y + 30) && (lazermark.y < option_nekonotama[j].y + 5)) {


option_nekonotama[j].life = 0;


lazermark.life = lazermark.life - 1;


//👆🌞オプション猫の弾とレーザーマークが衝突するとオプション猫の弾は消滅しlazermark.lifeに格納されている値は1減ることになります lazermark.lifeに格納されている値が0になるとレーザーマークは消滅することになります




}

}


}

}





//👆🌞🌞🌞レーザーマークとオプション猫の弾が衝突したとき当たったオプション猫の弾とレーザーマークが消滅するプログラムです



//👇🌞🌞🌞レーザーマークとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾とレーザーマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (lazermark.life > 0) {



for (int j = 0; j < 10; j++) {


if (option_nekonotama_lazer[j].life > 0)


if ((option_nekonotama_lazer[j].x < lazermark.x + 30) && (lazermark.x < option_nekonotama_lazer[j].x + 15) && (option_nekonotama_lazer[j].y < lazermark.y + 30) && (lazermark.y < option_nekonotama_lazer[j].y + 5)) {


option_nekonotama_lazer[j].life = 0;


lazermark.life = lazermark.life - 1;


//👆🌞オプション猫のレーザー弾とレーザーマークが衝突するとオプション猫のレーザー弾は消滅しlazermark.lifeに格納されている値は1減ることになります lazermark.lifeに格納されている値が0になるとレーザーマークは消滅することになります




}


}

}


}



//👆🌞🌞🌞レーザーマークとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾とレーザーマークが消滅するプログラムです




//👆🌞🌞🌞レーザーマークの挙動の設定です




//👇🌞🌞🌞ミサイルマークの挙動の設定です








//🌞🌞🌞👇オプション猫とミサイルマークがぶつかったときミサイルマークが消滅するプログラムはこちらです


if (option_neko.life > 0)


for (int i = 0; i < 1; i++) {


if (misslemark.life > 0) {


if ((option_neko.x < misslemark.x + 30) && (misslemark.x < option_neko.x + 35) && (option_neko.y + 7 < misslemark.y + 30) && (misslemark.y < option_neko.y + 20))

{



misslemark.life = 0;


//👆🌞オプション猫とミサイルマークが衝突するとミサイルマークが消滅することになります


option_nekonotamamode = 0;//👈🌞🌞🌞普通の弾が発射されるようにoption_nekonotamamodeに0を代入します


}

}


}

//🌞🌞🌞👆オプション猫とミサイルマークがぶつかったときミサイルマークが消滅するプログラムはこちらです








//👇🌞🌞🌞ミサイルマークとオプション猫の弾が衝突したとき当たったオプション猫の弾とミサイルマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (misslemark.life > 0) {





for (int j = 0; j < 10; j++) {


if (option_nekonotama[j].life > 0)


if ((option_nekonotama[j].x < misslemark.x + 30) && (misslemark.x < option_nekonotama[j].x + 15) && (option_nekonotama[j].y < misslemark.y + 30) && (misslemark.y < option_nekonotama[j].y + 5)) {


option_nekonotama[j].life = 0;


misslemark.life = misslemark.life - 1;


//👆🌞オプション猫の弾とミサイルマークが衝突するとオプション猫の弾は消滅しmisslemark.lifeに格納されている値は1減ることになります misslemark.lifeに格納されている値が0になるとミサイルマークは消滅することになります




}

}


}

}





//👆🌞🌞🌞ミサイルマークとオプション猫の弾が衝突したとき当たったオプション猫の弾とミサイルマークが消滅するプログラムです



//👇🌞🌞🌞ミサイルマークとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾とミサイルマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (misslemark.life > 0) {



for (int j = 0; j < 10; j++) {


if (option_nekonotama_lazer[j].life > 0)


if ((option_nekonotama_lazer[j].x < misslemark.x + 30) && (misslemark.x < option_nekonotama_lazer[j].x + 15) && (option_nekonotama_lazer[j].y < misslemark.y + 30) && (misslemark.y < option_nekonotama_lazer[j].y + 5)) {


option_nekonotama_lazer[j].life = 0;


misslemark.life = misslemark.life - 1;


//👆🌞オプション猫のレーザー弾とミサイルマークが衝突するとオプション猫のレーザー弾は消滅しmisslemark.lifeに格納されている値は1減ることになります misslemark.lifeに格納されている値が0になるとミサイルマークは消滅することになります






}

}


}

}





//👆🌞🌞🌞ミサイルマークとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾とミサイルマークが消滅するプログラムです




//👆🌞🌞🌞ミサイルマークの挙動の設定です



ScreenFlip();


ClearDrawScreen();


};



DxLib_End(); // DXライブラリの使用を終了します DXライブラリの使用しているメモリ領域が解放されます


return 0; // プログラムを終了します


}


デバッグなしで実行をしてから一度プログラムを終了し

生成されたexeファイルをハードディスクから探し出しクリックする方法により得られたプログラムの実行結果はこちらです

👇


https://youtu.be/gwXhK4mZjZ8



solarplexuss「


while{}文のブロック{}内の命令文が1回繰り返し実行されるときの


オレンジリングの移動速度を


50ドットから


5ドットに変更したんだね


50ドットのときに比べて


オレンジリングの移動速度は


おそくなったので


オレンジリングの動きを見やすくなったけど・・・


う~ん


そのかわり


オレンジリングの移動速度が50ドットのときでは


オレンジリングが重なって表示されなかったけど


オレンジリングの移動速度が5ドットのときでは


オレンジリングが重なって表示されるようになったね


どうやったら


オレンジリングの移動速度が


5ドットのとき


オレンジリング10体が重ならないように表示できるかな?」




マックス「そのためには



オレンジリングの実体は10体だけ登場しているが


オレンジリングの実体を500体に増やして登場させるんだああ」


solarplexuss「ええ? 増やすの?



オレンジリングの移動速度が


5ドットなので


オレンジリングを50体から500体に増やして登場させても


もちろん


オレンジリング500体は重なって表示されることになるんじゃないのん


のん?


だって


500体の場合でも


10体の場合のときと同じように



0番目のオレンジリングの座標が


(580,200)だったら


1番目のオレンジリングの座標は


(585,200)


2番目のオレンジリングの座標は


(590,200)


3番目のオレンジリングの座標は


(595,200)


4番目のオレンジリングの座標は


(600,200)


5番目のオレンジリングの座標は


(605,200)


6番目のオレンジリングの座標は


(610,200)


7番目のオレンジリングの座標は


(615,200)


8番目のオレンジリングの座標は


(620,200)


9番目のオレンジリングの座標は


(625,200)



499番目のオレンジリングの座標は


(3075,200)



って感じになるでしょう



0番目のオレンジリングの座標が


(580,200)で



while{}文のブロック{}内の命令文が1回繰り返し実行されて


(575,200)


になったとき


1番目のオレンジリングの座標には


元の0番目のオレンジリングの座標


(580,200)



代入されて


1番目のオレンジリングの座標は


(580,200)


になる


そうなると・・・


オレンジリングの画像サイズは


幅50ドット×高さ50ドット


なので


0番目のオレンジリング

1番目のオレンジリング


は重なっちゃうってかんじになるじゃない?」



そのプログラムはこちらです

👇


#include "DxLib.h"


struct Character {

double x;

double y;

int graphichandle[7];

int graphicnumber;//👈🌞メンバ変数にgraphicnumber を追加しました

int life;

};


//👆🌞Characterの構造体宣言です



int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{



ChangeWindowMode(TRUE); // ウインドウモードに設定します


if (DxLib_Init() == -1) // DXライブラリを初期化処理しています

{

return -1; // DXライブラリの初期化に失敗したら直ちにプログラムを終了します

}




SetDrawScreen(DX_SCREEN_BACK);//👈🌞SetDrawScreen関数です 裏画面に画像を描きます printfDxで表示される文字も裏画面に描かれることになります





//👇🌞🌞🌞🌞🌞ここから自分の飛行機と赤い敵の飛行機の設定です





struct Character jibunnohikouki;

//👆🌞jibunnohikoukiの構造体変数宣言です


jibunnohikouki.x = 0;


jibunnohikouki.y = 0;


jibunnohikouki.graphichandle[0] = LoadGraph("画像データ\\ソーラーが描いた飛行機.bmp");


jibunnohikouki.graphichandle[1] = LoadGraph("画像データ\\ソーラーが描いた飛行機1.bmp");


jibunnohikouki.graphichandle[2] = LoadGraph("画像データ\\ソーラーが描いた飛行機2.bmp");


jibunnohikouki.graphichandle[3] = LoadGraph("画像データ\\ソーラーが描いた飛行機3.bmp");


jibunnohikouki.graphichandle[4] = LoadGraph("画像データ\\ソーラーが描いた飛行機4.bmp");


jibunnohikouki.graphichandle[5] = LoadGraph("画像データ\\ソーラーが描いた飛行機5.bmp");


jibunnohikouki.graphichandle[6] = LoadGraph("画像データ\\ソーラーが描いた飛行機6.bmp");


jibunnohikouki.life = 600;//👈🌞🌞🌞 jibunnohikouki.life に格納される値を600にしてみました🌞🌞🌞



jibunnohikouki.graphicnumber = 0;

//👆 jibunnohikouki.graphicnumberは😋自分の飛行機😋のアニメーションパターンをとりあつかっています


//👆🌞構造体変数jibunnohikoukiのメンバ変数の初期化を行っています

//👆 構造体変数jibunnohikoukiは😋自分の飛行機😋のデータをとりあつかっています



struct Character akaitekinohikouki[10];

//👆🌞敵の飛行機を10体登場させています


for (int i = 0; i < 10; i++) {


akaitekinohikouki[i].x = 1000;//💖ここです 1000で初期化しました


akaitekinohikouki[i].y = 35 * i;


akaitekinohikouki[i].graphichandle[0] = LoadGraph("画像データ\\赤い敵の飛行機1.8.bmp");


akaitekinohikouki[i].graphichandle[1] = LoadGraph("画像データ\\赤い敵の飛行機1.3.bmp");


akaitekinohikouki[i].graphichandle[2] = LoadGraph("画像データ\\赤い敵の飛行機2.3.bmp");


akaitekinohikouki[i].graphichandle[3] = LoadGraph("画像データ\\赤い敵の飛行機3.3.bmp");


akaitekinohikouki[i].graphichandle[4] = LoadGraph("画像データ\\赤い敵の飛行機4.3.bmp");


akaitekinohikouki[i].graphichandle[5] = LoadGraph("画像データ\\赤い敵の飛行機5.3.bmp");


akaitekinohikouki[i].graphichandle[6] = LoadGraph("画像データ\\赤い敵の飛行機6.5.bmp");




akaitekinohikouki[i].graphicnumber = 128 * GetRand(6);


//👆 akaitekinohikouki[i].graphicnumberは😋敵の飛行機😋のアニメーションパターンをとりあつかっています


//👆ここです🌞🌞🌞ここでAkai tekinohikouki[i].graphicnumberにランダムに0,128,256,384,512,640,768の値が代入されることになります




akaitekinohikouki[i].life = 100;//👈🌞🌞🌞敵の飛行機に自分の弾が100発当たると破壊されるようにしました




}


struct Character jibunnotama[11];

//🌞👆自分の弾を11個作成しています

for (int i = 0; i < 10; i = i + 1) {


jibunnotama[i].x = 0;

jibunnotama[i].y = 0;


jibunnotama[i].graphichandle[0] = LoadGraph("画像データ\\自分の弾.bmp");


jibunnotama[i].life = 0;


}


jibunnotama[10].x = 641;

jibunnotama[10].y = 0;


//🌞🌞🌞見えない弾にするために jibunnotama[10].graphichandle[0] は画像データで初期化しません

jibunnotama[10].life = 0;




struct Character jibunnotama_lazer[11];

//🌞👆自分のレーザー弾を11個作成しています

for (int i = 0; i < 10; i = i + 1) {


jibunnotama_lazer[i].x = 0;

jibunnotama_lazer[i].y = 0;


jibunnotama_lazer[i].graphichandle[0] = LoadGraph("画像データ\\レーザー.bmp");//👈🌞🌞🌞💖💖💖ここです 自分のレーザー弾の画像データを読み込みます




jibunnotama_lazer[i].life = 0;


}



jibunnotama_lazer[10].x = 641;

jibunnotama_lazer[10].y = 0;


//🌞🌞🌞見えないレーザー弾にするために jibunnotama[10].graphichandle[0] は初期化しません

jibunnotama_lazer[10].life = 0;






struct Character akaitekinohikoukinotama[10][10];


//🌞👆敵の飛行機、敵の飛行機1、敵の飛行機2、敵の飛行機3、敵の飛行機4、敵の飛行機5、敵の飛行機6、敵の飛行機7 、敵の飛行機8、敵の飛行機9、敵の飛行機10から発射される10個の敵の弾のデータをとりあつかうために100個の構造体変数を作成しています



for (int i = 0; i < 10; i = i + 1) {


for (int j = 0; j < 10; j = j + 1) {


akaitekinohikoukinotama[i][j].x = 1000;

akaitekinohikoukinotama[i][j].y = 1000;


akaitekinohikoukinotama[i][j].graphichandle[0] = LoadGraph("画像データ\\敵の飛行機の弾ハート.bmp");


akaitekinohikoukinotama[i][j].life = 0;


}


}





struct Character akaitekinohikoukinobakuhatunohonoo[10];

//👆🌞構造体変数akaitekinohikoukinobakuhatunohonoo[0], akaitekinohikoukinobakuhatunohonoo[1]… akaitekinohikoukinobakuhatunohonoo[9]を作成し爆発の炎のデータを取り扱います


for (int i = 0; i < 10; i++) {


akaitekinohikoukinobakuhatunohonoo[i].x = 0;


akaitekinohikoukinobakuhatunohonoo[i].y = 0;


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[0] = LoadGraph("画像データ\\爆発の炎.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[1] = LoadGraph("画像データ\\爆発の炎1.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[2] = LoadGraph("画像データ\\爆発の炎2.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[3] = LoadGraph("画像データ\\爆発の炎3.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[4] = LoadGraph("画像データ\\爆発の炎4.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[5] = LoadGraph("画像データ\\爆発の炎5.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[6] = LoadGraph("画像データ\\爆発の炎6.bmp");



akaitekinohikoukinobakuhatunohonoo[i].life = 0;//🌞🌞🌞 bakuhatunohonoo.lifeを初期化しています



akaitekinohikoukinobakuhatunohonoo[i].graphicnumber = 0; //🌞🌞🌞爆発の炎ごとにgraphicnumberを用意して初期化しています


}



struct Character akaitekinohikoukiwooouhikari;


akaitekinohikoukiwooouhikari.x = 0;


akaitekinohikoukiwooouhikari.y = 0;


akaitekinohikoukiwooouhikari.graphichandle[0] = LoadGraph("画像データ\\赤い敵の飛行機を覆う光.bmp");




akaitekinohikoukiwooouhikari.life = 0;




struct Character jibunnohikoukinobakuhatunohonoo;

//👆🌞構造体変数jibunnohikoukinobakuhatunohonooを作成し自分の飛行機の爆発の炎のデータを取り扱います




jibunnohikoukinobakuhatunohonoo.x = 0;


jibunnohikoukinobakuhatunohonoo.y = 0;


jibunnohikoukinobakuhatunohonoo.graphichandle[0] = LoadGraph("画像データ\\自分の飛行機の爆発の炎.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[1] = LoadGraph("画像データ\\自分の飛行機の爆発の炎1.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[2] = LoadGraph("画像データ\\自分の飛行機の爆発の炎2.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[3] = LoadGraph("画像データ\\自分の飛行機の爆発の炎3.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[4] = LoadGraph("画像データ\\自分の飛行機の爆発の炎4.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[5] = LoadGraph("画像データ\\自分の飛行機の爆発の炎5.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[6] = LoadGraph("画像データ\\自分の飛行機の爆発の炎6.bmp");



jibunnohikoukinobakuhatunohonoo.life = 0;//🌞🌞🌞 jibunnohikoukinobakuhatunohonoo.lifeを初期化しています



jibunnohikoukinobakuhatunohonoo.graphicnumber = 0; //🌞🌞🌞自分の飛行機の爆発の炎のgraphicnumberを用意して初期化しています



struct Character jibunnohikoukiwooouhikari;



jibunnohikoukiwooouhikari.x = 0;


jibunnohikoukiwooouhikari.y = 0;


jibunnohikoukiwooouhikari.graphichandle[0] = LoadGraph("画像データ\\ソーラーが描いた飛行機を覆う光.bmp");



jibunnohikoukiwooouhikari.life = 0;




int jibunnotama_tsix[11];//🌞🌞🌞jibunnotama_tsix[i]には自分の飛行機から発射される弾の最初の位置のx座標が代入されることになります tは弾、sは最初、iは位置、xはx座標を表しています


for (int i = 0; i < 11; i++) {


jibunnotama_tsix[i] = 0;


}






int jibunnotama_count[11];//🌞🌞🌞ここでint型の変数count[i](0<=i<=10)を作製し0で初期化しました


for (int i = 0; i < 11; i++) {


jibunnotama_count[i] = 0;


}




int jibunnotama_lazer_tsix[11];//🌞🌞🌞jibunnotama_lazer_tsix[i]には自分の飛行機から発射されるレーザー弾の最初の位置のx座標が代入されることになります tは弾、sは最初、iは位置、xはx座標を表しています


for (int i = 0; i < 11; i++) {


jibunnotama_lazer_tsix[i] = 0;


}






int jibunnotama_lazer_count[11];//🌞🌞🌞ここでint型の変数count[i] (0<=i<=10)を作製し0で初期化しました


for (int i = 0; i < 11; i++) {


jibunnotama_lazer_count[i] = 0;


}









int akaitekinohikoukinotama_count[10][10];


for (int i = 0; i < 10; i = i + 1) {


for (int j = 0; j < 10; j = j + 1) {


akaitekinohikoukinotama_count[i][j] = 0;


}


}


int akaitekinohikoukinotama_tsix[10][10]; //🌞🌞🌞 akaitekinohikoukinotama_tsix[i][j]には発射される敵の弾[i][j]の発射される位置のx座標が代入されることになります tは弾、sは最初、iは位置、xはx座標を表しています


for (int i = 0; i < 10; i = i + 1) {


for (int j = 0; j < 10; j = j + 1) {


akaitekinohikoukinotama_tsix[i][j] = 0;


}


}


double akaitekinohikoukinoidoupattern[4][3] = { {20,-0.1, 0.1},{20,-0.1,-0.1},{20,-0.1, 0.1},{20,-0.1,-0.1} };//👈🌞🌞🌞🌞🌞ここです。0.1、-0.1に注目です。敵の飛行機の移動速度は1ドットのときの10分の1になります



int akaitekinohikouki_m = 0;


int akaitekinohikouki_repeat = akaitekinohikoukinoidoupattern[0][0];






int hassyasareru_jibunnotama = 0;


int hassyasareru_akaitekinohikoukinotama[10];





for (int i = 0; i < 10; i++) {


hassyasareru_akaitekinohikoukinotama[i] = 0;


}


int hassyasareru_jibunnotama_lazer = 0;


//👆🌞🌞🌞🌞🌞ここまでが自分の飛行機と赤い敵の飛行機の設定です






//👇🌞🌞🌞🌞🌞ここからは敵の飛行機ルルの設定です




struct Character RuRu[1];

//👆🌞敵の飛行機ルルを1体登場させています


for (int i = 0; i < 1; i++) {


RuRu[i].x = 605;


RuRu[i].y = 200;


RuRu[i].graphichandle[0] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[1] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[2] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[3] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[4] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[5] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[6] = LoadGraph("画像データ\\ルル18.bmp");




RuRu[i].graphicnumber = 128 * GetRand(6);


//👆 RuRu[i].graphicnumberは😋敵の飛行機ルル😋のアニメーションパターンをとりあつかっています


//👆ここです🌞🌞🌞ここでRuRu[i].graphicnumberにランダムに0,128,256,384,512,640,768の値が代入されることになります




RuRu[i].life = 10000;//👈🌞🌞🌞敵の飛行機ルルに自分の弾が10000発当たると破壊されるようにしました




}





struct Character RuRunotama[1][10];



//🌞👆敵の飛行機(ルル)から発射される10個の敵の弾のデータをとりあつかうために10個の構造体変数を作成しています



for (int i = 0; i < 1; i = i + 1) {


for (int j = 0; j < 10; j = j + 1) {


RuRunotama[i][j].x = 1000;

RuRunotama[i][j].y = 1000;


RuRunotama[i][j].graphichandle[0] = LoadGraph("画像データ\\敵の飛行機の弾ハート.bmp");


RuRunotama[i][j].life = 0;


}


}


struct Character RuRuwooouhikari;


RuRuwooouhikari.x = 0;


RuRuwooouhikari.y = 0;


RuRuwooouhikari.graphichandle[0] = LoadGraph("画像データ\\ルルを覆う光0.1.bmp");//👈🌞🌞🌞💖画像をルルを覆う光0.1に変更しました




RuRuwooouhikari.life = 0;



struct Character RuRunobakuhatunohonoo[1];

//👆🌞構造体変数RuRunobakuhatunohonoo[0]を作成しルルの爆発の炎のデータを取り扱います


for (int i = 0; i < 1; i++) {


RuRunobakuhatunohonoo[i].x = 0;


RuRunobakuhatunohonoo[i].y = 0;


RuRunobakuhatunohonoo[i].graphichandle[0] = LoadGraph("画像データ\\ルルの爆発の炎0.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[1] = LoadGraph("画像データ\\ルルの爆発の炎1.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[2] = LoadGraph("画像データ\\ルルの爆発の炎2.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[3] = LoadGraph("画像データ\\ルルの爆発の炎3.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[4] = LoadGraph("画像データ\\ルルの爆発の炎4.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[5] = LoadGraph("画像データ\\ルルの爆発の炎5.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[6] = LoadGraph("画像データ\\ルルの爆発の炎6.1bmp");



RuRunobakuhatunohonoo[i].life = 0;//🌞🌞🌞 RuRunobakuhatunohonoo[0].lifeを初期化しています



RuRunobakuhatunohonoo[i].graphicnumber = 0; //🌞🌞🌞ルルの爆発の炎をアニメーションさせるためのgraphicnumberを用意して初期化しています


}





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;


}


}


double RuRunoidoupattern[4][3] = { {20,-0.1, 0.1},{20,-0.1,-0.1},{20,-0.1, 0.1},{20,-0.1,-0.1} };//👈🌞🌞🌞🌞🌞ここです。0.1,-0.1に注目。敵の飛行機ルルの移動速度は1ドットのときの10分の1になります


int RuRu_m = 0;


int RuRu_repeat = RuRunoidoupattern[0][0];




int hassyasareru_RuRunotama[1];



for (int i = 0; i < 1; i++) {


hassyasareru_RuRunotama[i] = 0;


}





//👆🌞🌞🌞🌞🌞ここまでが敵の飛行機ルルの設定です



//👇🌞🌞🌞🌞🌞ここから敵の飛行機ミミの設定です


struct Character MiMi;

//👆🌞MiMiの構造体変数宣言です


MiMi.x = 340;


MiMi.y = 200;


MiMi.graphichandle[0] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[1] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[2] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[3] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[4] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[5] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[6] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.life = 5;//👈🌞🌞🌞 MiMi.life に格納される値を5にしてみました🌞🌞🌞



MiMi.graphicnumber = 0;

//👆 MiMi.graphicnumberは😋ミミ😋のアニメーションパターンをとりあつかっています


//👆🌞構造体変数MiMiのメンバ変数の初期化を行っています

//👆 構造体変数MiMiは😋ミミ😋のデータをとりあつかっています


//👆🌞🌞🌞🌞🌞ここまで敵の飛行機ミミの設定です





//🌞🌞🌞👇ここからがオレンジリング500体の設定です


struct Character orange_ring[500];

//👆🌞オレンジリングを500体登場させています


for (int i = 0; i < 500; i++) {


orange_ring[i].x = 590;


orange_ring[i].y = 200;


orange_ring[i].graphichandle[0] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[1] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[2] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[3] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[4] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[5] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[6] = LoadGraph("画像データ\\オレンジリング.bmp");




orange_ring[i].graphicnumber = 0;


//👆 orange_ring[i].graphicnumberは😋オレンジリング😋のアニメーションパターンをとりあつかっています


orange_ring[i].life = 100;//👈🌞🌞🌞オレンジリングに自分の弾が100発当たると破壊されるようにしました




}


double orange_ringnoidoupattern[4][3] = { {2000,-5, 0},{2000,0,-5},{2000,5, 0},{2000,0,5} };//👈🌞🌞🌞🌞🌞ここです。5、-5に注目です。オレンジリングはwhile{}文のブロック{}内の命令文が1回繰り返し実行されるたびに5ドット単位で移動することになります


int orange_ring_m = 0;


int orange_ring_repeat = orange_ringnoidoupattern[0][0];



//🌞🌞🌞👆ここまでがオレンジリング500体の設定です








//👇レーザーマークの設定を行なっています


struct Character lazermark;


//👆🌞 lazermarkの構造体変数宣言です


lazermark.x = 640;


lazermark.y = 240;


lazermark.graphichandle[0] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[1] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[2] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[3] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[4] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[5] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[6] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.life = 0;//👈🌞🌞🌞 lazermark.life に格納される値を0にしてみました🌞🌞🌞



lazermark.graphicnumber = 0;

//👆 lazermark.graphicnumberは😋レーザーマーク😋のアニメーションパターンをとりあつかっています


//👆🌞構造体変数lazermarkのメンバ変数の初期化を行っています

//👆 構造体変数lazermarkは😋レーザーマーク😋のデータをとりあつかっています


double lazermarknoidoupattern[4][3] = { {20,-1, 1},{20,-1,-1},{20,-1, 1},{20,-1,-1} };


int lazermark_m = 0;


int lazermark_repeat = lazermarknoidoupattern[0][0];


//👆レーザーマークの設定を行なっています



//👇ミサイルマークの設定を行なっています


struct Character misslemark;


//👆🌞 misslemarkの構造体変数宣言です


misslemark.x = 640;


misslemark.y = 240;


misslemark.graphichandle[0] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[1] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[2] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[3] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[4] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[5] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[6] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.life = 0;//👈🌞🌞🌞 misslemark.life に格納される値は0で初期化してみました🌞🌞🌞



misslemark.graphicnumber = 0;

//👆 misslemark.graphicnumberは😋ミサイルマーク😋のアニメーションパターンをとりあつかっています


//👆🌞構造体変数misslemarkのメンバ変数の初期化を行っています

//👆 構造体変数misslemarkは😋ミサイルマーク😋のデータをとりあつかっています


double misslemarknoidoupattern[4][3] = { {20,-1, 1},{20,-1,-1},{20,-1, 1},{20,-1,-1} };


int misslemark_m = 0;


int misslemark_repeat = misslemarknoidoupattern[0][0];


//👆ミサイルマークの設定を行なっています



int jibunnotamamode = 0;

int option_nekonotamamode = 0;

//初期設定ではjibunnotamamodeとoption_nekonotamamodeに格納されている値は0なので自分の飛行機から普通の弾が発射されます




//👇🌞オプション猫の設定です


struct Character option_neko;

//👆🌞option_nekoの構造体変数宣言です


option_neko.x = 100;//オプション猫のいる位置のx座標です


option_neko.y = 240;//オプション猫のいる位置のy座標です


option_neko.graphichandle[0] = LoadGraph("画像データ\\オプション猫.bmp");


option_neko.graphichandle[1] = LoadGraph("画像データ\\オプション猫1.bmp");


option_neko.graphichandle[2] = LoadGraph("画像データ\\オプション猫2.bmp");


option_neko.graphichandle[3] = LoadGraph("画像データ\\オプション猫3.bmp");


option_neko.graphichandle[4] = LoadGraph("画像データ\\オプション猫4.bmp");


option_neko.graphichandle[5] = LoadGraph("画像データ\\オプション猫5.bmp");


option_neko.graphichandle[6] = LoadGraph("画像データ\\オプション猫6.bmp");


option_neko.life = 600;//👈🌞🌞🌞 option_neko.life に格納される値を600にしてみました🌞🌞🌞



option_neko.graphicnumber = 0;

//👆 option_neko.graphicnumberは😋オプション猫😋のアニメーションパターンをとりあつかっています


//👆🌞構造体変数option_nekoのメンバ変数の初期化を行っています

//👆 構造体変数option_nekoは😋オプション猫😋のデータをとりあつかっています




struct Character option_nekonotama[11];

//🌞👆オプション猫の弾を11個作成しています

for (int i = 0; i < 10; i = i + 1) {


option_nekonotama[i].x = 0;

option_nekonotama[i].y = 0;


option_nekonotama[i].graphichandle[0] = LoadGraph("画像データ\\自分の弾.bmp");


option_nekonotama[i].life = 0;


}


option_nekonotama[10].x = 641;

option_nekonotama[10].y = 0;


//🌞🌞🌞見えない弾にするために option_nekonotama[10].graphichandle[0] は画像データで初期化しません

option_nekonotama[10].life = 0;


//👆🌞🌞🌞自分の飛行機とオプション猫から発射させる弾を一致させるために同じ画像データを読み込んでいます



struct Character option_nekonotama_lazer[11];

//🌞👆オプション猫のレーザー弾を11個作成しています

for (int i = 0; i < 10; i = i + 1) {


option_nekonotama_lazer[i].x = 0;

option_nekonotama_lazer[i].y = 0;


option_nekonotama_lazer[i].graphichandle[0] = LoadGraph("画像データ\\レーザー.bmp");//👈🌞🌞🌞💖💖💖ここです オプション猫のレーザー弾の画像データを読み込みます




option_nekonotama_lazer[i].life = 0;


}



option_nekonotama_lazer[10].x = 641;

option_nekonotama_lazer[10].y = 0;


//🌞🌞🌞見えないレーザー弾にするために option_nekonotama[10].graphichandle[0] は初期化しません

option_nekonotama_lazer[10].life = 0;



//👆🌞🌞🌞自分の飛行機とオプション猫から発射させる弾を一致させるために同じ画像データを読み込んでいます



struct Character option_nekonobakuhatunohonoo;

//👆🌞構造体変数option_nekonobakuhatunohonooを作成し自分の飛行機の爆発の炎のデータを取り扱います




option_nekonobakuhatunohonoo.x = 0;


option_nekonobakuhatunohonoo.y = 0;


option_nekonobakuhatunohonoo.graphichandle[0] = LoadGraph("画像データ\\自分の飛行機の爆発の炎.bmp");


option_nekonobakuhatunohonoo.graphichandle[1] = LoadGraph("画像データ\\自分の飛行機の爆発の炎1.bmp");


option_nekonobakuhatunohonoo.graphichandle[2] = LoadGraph("画像データ\\自分の飛行機の爆発の炎2.bmp");


option_nekonobakuhatunohonoo.graphichandle[3] = LoadGraph("画像データ\\自分の飛行機の爆発の炎3.bmp");


option_nekonobakuhatunohonoo.graphichandle[4] = LoadGraph("画像データ\\自分の飛行機の爆発の炎4.bmp");


option_nekonobakuhatunohonoo.graphichandle[5] = LoadGraph("画像データ\\自分の飛行機の爆発の炎5.bmp");


option_nekonobakuhatunohonoo.graphichandle[6] = LoadGraph("画像データ\\自分の飛行機の爆発の炎6.bmp");



option_nekonobakuhatunohonoo.life = 0;//🌞🌞🌞 option_nekonobakuhatunohonoo.lifeを初期化しています



option_nekonobakuhatunohonoo.graphicnumber = 0; //🌞🌞🌞自分の飛行機の爆発の炎のgraphicnumberを用意して初期化しています



struct Character option_nekowooouhikari;



option_nekowooouhikari.x = 0;


option_nekowooouhikari.y = 0;


option_nekowooouhikari.graphichandle[0] = LoadGraph("画像データ\\ニャーが表示される画像7.bmp");



option_nekowooouhikari.life = 0;




int option_nekonotama_tsix[11];//🌞🌞🌞 option_nekonotama_tsix[i]にはオプション猫の飛行機から発射される弾の最初の位置のx座標が代入されることになります tは弾、sは最初、iは位置、xはx座標を表しています


for (int i = 0; i < 11; i++) {


option_nekonotama_tsix[i] = 0;


}






int option_nekonotama_count[11];//🌞🌞🌞ここでint型の変数option_nekonotama_count[i](0<=i<=10)を作製し0で初期化しました


for (int i = 0; i < 11; i++) {


option_nekonotama_count[i] = 0;


}




int option_nekonotama_lazer_tsix[11];//🌞🌞🌞 option_nekonotama_lazer_tsix[i]にはオプション猫から発射されるレーザー弾の最初の位置のx座標が代入されることになります tは弾、sは最初、iは位置、xはx座標を表しています


for (int i = 0; i < 11; i++) {


option_nekonotama_lazer_tsix[i] = 0;


}






int option_nekonotama_lazer_count[11];//🌞🌞🌞ここでint型の変数option_nekonotama_lazer_ count[i] (0<=i<=10)を作製し0で初期化しました


for (int i = 0; i < 11; i++) {


option_nekonotama_lazer_count[i] = 0;


}



int hassyasareru_option_nekonotama = 0;


int hassyasareru_option_nekonotama_lazer = 0;


int option_neko_counter = 0;


//👆🌞🌞🌞🌞🌞ここまでがオプション猫の設定です





//👆🌞オプション猫の設定です




int FontHandle;


FontHandle = CreateFontToHandle(NULL, 10, 3);

// 👆CreateFontToHandle(NULL, 10, 3)が実行されると書体のデータ(フォント)に対応する値が戻り値としてCreateFontToHandle(NULL, 10, 3)に返されます

// 👆FontHandle に書体のデータ(フォント)に対応する値を代入しています






int FontHandle1;


FontHandle1 = CreateFontToHandle(NULL, 15, 0);

// 👆CreateFontToHandle(NULL, 15, 0)が実行されると書体のデータ(フォント)に対応する値が戻り値としてCreateFontToHandle(NULL, 15, 0)に返されます

// 👆FontHandle1に書体のデータ(フォント)に対応する値を代入しています




SetFontSize(8);



int framecounter = 0;//👈🌞🌞🌞フレームカウンターを0で初期化しています















while (CheckHitKey(KEY_INPUT_ESCAPE) == 0 && ProcessMessage() == 0) {



//👇🌞🌞🌞今 何フレーム目なのかを表示します


DrawStringToHandle(0, 0, "frame counter", GetColor(255, 255, 255), FontHandle1);//👈🌞🌞🌞FontHandle1が用いられています


framecounter = framecounter + 1;


DrawFormatString(110, 5, GetColor(255, 255, 255), "%d", framecounter);




//👆🌞🌞🌞今 何フレーム目なのかを表示します




//👇🌞🌞🌞ライフゲージの設定です


DrawBox(100, 100, 500, 300, GetColor(0, 255, 255), TRUE);



DrawBox(20, 458, 624, 472, GetColor(255, 255, 0), TRUE);


DrawBox(22, 460, 622, 470, GetColor(255, 255, 255), TRUE);//




DrawBox(22, 460, jibunnohikouki.life + 22, 470, GetColor(255, 0, 255), TRUE);




DrawStringToHandle(0, 460, "LIFE", GetColor(255, 255, 255), FontHandle);//👈🌞🌞🌞FontHandleが用いられています




DrawFormatString(625, 460, GetColor(255, 255, 255), "%d", jibunnohikouki.life);



//👆🌞🌞🌞ライフゲージの設定です




//👇🌞🌞🌞自分の飛行機の挙動の設定の部分です


int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);



if (jibunnohikouki.life > 0) {


if (4 <= jibunnohikouki.y && jibunnohikouki.y <= 460) {

if (key & PAD_INPUT_UP) jibunnohikouki.y = jibunnohikouki.y - 4;

}



if (0 <= jibunnohikouki.y && jibunnohikouki.y <= 456) {


if (key & PAD_INPUT_DOWN) jibunnohikouki.y = jibunnohikouki.y + 4;

}


if (4 <= jibunnohikouki.x && jibunnohikouki.x <= 605) {


if (key & PAD_INPUT_LEFT) jibunnohikouki.x = jibunnohikouki.x - 4;

}


if (0 <= jibunnohikouki.x && jibunnohikouki.x <= 601) {


if (key & PAD_INPUT_RIGHT) jibunnohikouki.x = jibunnohikouki.x + 4;

}


}


if (jibunnohikouki.life > 0) {


DrawGraph(jibunnohikouki.x, jibunnohikouki.y, jibunnohikouki.graphichandle[(jibunnohikouki.graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞🌞 jibunnohikouki.graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞


jibunnohikouki.graphicnumber = jibunnohikouki.graphicnumber + 1;


}


//👆 jibunnohikouki.lifeに格納されている値が0より大きければ自分の飛行機の画像を描きます

//👆jibunnohikouki.lifeに格納されている値が0なら自分の飛行機の画像が描かれることはありません



if (jibunnohikoukiwooouhikari.life > 0) {



SetDrawBlendMode(DX_BLENDMODE_ALPHA, 200);


//👆🌞🌞🌞描画ブレンドモードがアルファブレンドになっています


DrawGraph(jibunnohikoukiwooouhikari.x, jibunnohikoukiwooouhikari.y, jibunnohikoukiwooouhikari.graphichandle[0], TRUE);



SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);

jibunnohikoukiwooouhikari.life = jibunnohikoukiwooouhikari.life - 1;


// 👆🌞🌞🌞描画ブレンドモードをノーブレンドにして描画ブレンドモードを解除しています

}



//👆🌞🌞🌞自分の飛行機を覆う光の画像が描かれます jibunnohikoukiwooouhikari.lifeに格納されている値が0になると自分の飛行機を覆う光の画像が描かれることはありません




if (jibunnohikoukinobakuhatunohonoo.life > 0) {


DrawGraph(jibunnohikoukinobakuhatunohonoo.x, jibunnohikoukinobakuhatunohonoo.y, jibunnohikoukinobakuhatunohonoo.graphichandle[(jibunnohikoukinobakuhatunohonoo.graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞 jibunnohikoukinobakuhatunohonoo.graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞

jibunnohikoukinobakuhatunohonoo.graphicnumber = jibunnohikoukinobakuhatunohonoo.graphicnumber + 1;

//👆🌞🌞🌞自分の飛行機の爆発の炎がアニメーションするよう設定が行われています



jibunnohikoukinobakuhatunohonoo.life = jibunnohikoukinobakuhatunohonoo.life - 1;



}


//👆 jibunnohikoukinobakuhatunohonoo.lifeに格納されている値が1以上なら自分の飛行機の爆発の炎の画像を描きます

//👆 jibunnohikoukinobakuhatunohonoo.lifeに格納されている値が0なら自分の飛行機の爆発の炎の画像が描かれることはありません





//👇🌞🌞🌞新型 自分の飛行機から弾が10連射されるプログラムです


//👇新たに11個目の弾jibunnotama[10]の登場です


if (jibunnohikouki.life > 0)


if (jibunnotamamode == 0)


if (jibunnotama[10].x > 640)

if (key & PAD_INPUT_A) {


if (jibunnotama[0].life == 0 && hassyasareru_jibunnotama == 0) {


jibunnotama[0].x = jibunnohikouki.x + 10;


jibunnotama[0].y = jibunnohikouki.y + 10;


jibunnotama_tsix[0] = jibunnotama[0].x;


jibunnotama[0].life = 1;


hassyasareru_jibunnotama = 1;


jibunnotama_count[0] = 30;//👈連射される自分の弾の最初の弾と次弾の間隔を調整することができます


}


}




for (int i = 0; i < 10; i++) {


if (jibunnotama_count[i] > 0) { jibunnotama_count[i] = jibunnotama_count[i] - 1; }



if (jibunnotama_count[i] == 0 && hassyasareru_jibunnotama == i + 1) {


if (jibunnotama[i + 1].life == 0) {


jibunnotama[i + 1].x = jibunnohikouki.x + 10;


jibunnotama[i + 1].y = jibunnohikouki.y + 10;


jibunnotama_tsix[i + 1] = jibunnotama[i + 1].x;


jibunnotama[i + 1].life = 1;


hassyasareru_jibunnotama = i + 2;


jibunnotama_count[i + 1] = 30;


}


}


}


if (jibunnotama_count[10] > 0) { jibunnotama_count[10] = jibunnotama_count[10] - 1; }




if (jibunnotama_count[10] == 0 && hassyasareru_jibunnotama == 11) {


hassyasareru_jibunnotama = 0;


}






for (int i = 0; i < 11; i = i + 1) {


if (jibunnotama[i].life == 1) {

//🌞🌞🌞 jibunnotama[i].lifeに1が代入されていると自分の弾jibunnnotama[i]がゲーム画面に表示されることになります jibunnnotama[i].lifeに0が代入されていると自分の弾jibunnnotama[i]がゲーム画面に表示されることはありません

DrawGraph(jibunnotama[i].x, jibunnotama[i].y, jibunnotama[i].graphichandle[0], TRUE);


jibunnotama[i].x = jibunnotama[i].x + 1;


if (jibunnotama[i].x - jibunnotama_tsix[i] > 640)


//🌞🌞🌞発射された自分の弾jibunnnotama[i]の位置のx座標が最初に自分の弾jibunnnotama[i]が発射されたときのjibunnnotama[i]の位置のx座標から🍑左へ🍑640を超えて離れると条件式jibunnotama[i].x - jibunnotama_tsix[i]は真の値1をとることになります

//🌞🌞🌞🌞🌞👆 jibunnnotama_tsix[i]には自分の弾jibunnnotama[i]が発射されたときの自分の弾jibunnnotama[i]のいる位置のx座標を記憶していたのでjibunnnotama[i].xが自分の弾jibunnnotama[i]が発射されたときの自分の弾jibunnnotama[i]のいる位置から640ドットを超えて離れた時、条件式jibunnotama[i].x- jibunnotama_tsix[i] > 640は真の値1を持つことになります

jibunnotama[i].life = 0;


}


}


//👆🌞🌞🌞新型 自分の飛行機から弾が10連射されるプログラムです




//👇🌞🌞🌞新型 自分の飛行機から💖レーザー弾💖が10連射されるプログラムです


//👇新たに11個目のレーザー弾jibunnotama_lazer[10]の登場です


if (jibunnohikouki.life > 0)


if (jibunnotamamode == 1)


if (jibunnotama_lazer[10].x > 640)


if (key & PAD_INPUT_A) {


if (jibunnotama_lazer[0].life == 0 && hassyasareru_jibunnotama_lazer == 0) {


jibunnotama_lazer[0].x = jibunnohikouki.x + 10;


jibunnotama_lazer[0].y = jibunnohikouki.y + 10;


jibunnotama_lazer_tsix[0] = jibunnotama_lazer[0].x;


jibunnotama_lazer[0].life = 1;


hassyasareru_jibunnotama_lazer = 1;


jibunnotama_lazer_count[0] = 30;//👈連射される自分のレーザー弾の最初の弾と次弾の間隔を調整することができます


}


}




for (int i = 0; i < 10; i++) {


if (jibunnotama_lazer_count[i] > 0) { jibunnotama_lazer_count[i] = jibunnotama_lazer_count[i] - 1; }



if (jibunnotama_lazer_count[i] == 0 && hassyasareru_jibunnotama_lazer == i + 1) {


if (jibunnotama_lazer[i + 1].life == 0) {


jibunnotama_lazer[i + 1].x = jibunnohikouki.x + 10;


jibunnotama_lazer[i + 1].y = jibunnohikouki.y + 10;


jibunnotama_lazer_tsix[i + 1] = jibunnotama[i + 1].x;


jibunnotama_lazer[i + 1].life = 1;


hassyasareru_jibunnotama_lazer = i + 2;


jibunnotama_lazer_count[i + 1] = 30;


}


}


}


if (jibunnotama_lazer_count[10] > 0) { jibunnotama_lazer_count[10] = jibunnotama_lazer_count[10] - 1; }




if (jibunnotama_lazer_count[10] == 0 && hassyasareru_jibunnotama_lazer == 11) {


hassyasareru_jibunnotama_lazer = 0;


}






for (int i = 0; i < 11; i = i + 1) {


if (jibunnotama_lazer[i].life > 0) {

//🌞🌞🌞 jibunnotama_lazer[i].lifeに0より大きな値が代入されていると自分のレーザー弾jibunnotama_lazer[i]がゲーム画面に表示されることになります jibunnotama_lazer[i].lifeに0が代入されていると自分のレーザー弾jibunnotama_lazer[i]がゲーム画面に表示されることはありません

DrawGraph(jibunnotama_lazer[i].x, jibunnotama_lazer[i].y, jibunnotama_lazer[i].graphichandle[0], TRUE);


jibunnotama_lazer[i].x = jibunnotama_lazer[i].x + 1;


if (jibunnotama_lazer[i].x - jibunnotama_lazer_tsix[i] > 640)

//🌞🌞🌞発射された自分のレーザー弾jibunnotama_lazer[i]の位置のx座標が発射されたときの最初の自分のレーザー弾jibunnotama_lazer[i]の位置のx座標から🍑左へ🍑640を超えて離れると条件式jibunnotama_lazer[i].x - jibunnotama_lazer_tsix[i]は真の値1をとることになります

//🌞🌞🌞🌞🌞👆 jibunnotama_lazer_tsix[i]には自分のレーザー弾jibunnotama_lazer[i]が発射されたときの自分のレーザー弾jibunnotama_lazer[i]のいる位置のx座標を記憶していたのでjibunnotama_lazer[i].xが自分の弾jibunnotama_lazer[i]が発射されたときの自分のレーザー弾jibunnotama_lazer[i]のいる位置から640ドット離れた時、条件式jibunnotama_lazer[i].x- jibunnotama_lazer_tsix[i] > 640は真の値1を持つことになります

jibunnotama_lazer[i].life = 0;


}


}


//👆🌞🌞🌞新型 自分の飛行機から💖レーザー弾💖が10連射されるプログラムです





//👆🌞🌞🌞自分の飛行機の挙動の設定の部分です




//👇🌞🌞🌞オプション猫の挙動の設定の部分です


if (option_neko_counter == 0)


if (option_neko.life > 0) {


option_neko.x = jibunnohikouki.x - 30;


option_neko.y = jibunnohikouki.y + 50;


option_neko_counter = 5;



}



option_neko_counter = option_neko_counter - 1;


if (option_neko_counter >= 0)


if (option_neko.life > 0) {


DrawGraph(option_neko.x, option_neko.y, option_neko.graphichandle[(option_neko.graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞🌞 option_neko.graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞


option_neko.graphicnumber = option_neko.graphicnumber + 1;


}


//👆 option_neko.lifeに格納されている値が0より大きければオプション猫の画像を描きます

//👆 option_neko.lifeに格納されている値が0ならオプション猫の画像が描かれることはありません



if (option_nekowooouhikari.life > 0) {



SetDrawBlendMode(DX_BLENDMODE_ALPHA, 200);


//👆🌞🌞🌞描画ブレンドモードがアルファブレンドになっています


DrawGraph(option_nekowooouhikari.x, option_nekowooouhikari.y, option_nekowooouhikari.graphichandle[0], TRUE);



SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);

option_nekowooouhikari.life = option_nekowooouhikari.life - 1;


// 👆🌞🌞🌞描画ブレンドモードをノーブレンドにして描画ブレンドモードを解除しています

}



//👆🌞🌞🌞オプション猫の飛行機を覆う光の画像が描かれます option_nekowooouhikari.lifeに格納されている値が0になるとオプション猫を覆う光の画像が描かれることはありません




if (option_nekonobakuhatunohonoo.life > 0) {


DrawGraph(option_nekonobakuhatunohonoo.x, option_nekonobakuhatunohonoo.y, option_nekonobakuhatunohonoo.graphichandle[(option_nekonobakuhatunohonoo.graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞 option_nekonobakuhatunohonoo.graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞

option_nekonobakuhatunohonoo.graphicnumber = option_nekonobakuhatunohonoo.graphicnumber + 1;

//👆🌞🌞🌞オプション猫の爆発の炎がアニメーションするよう設定が行われています



option_nekonobakuhatunohonoo.life = option_nekonobakuhatunohonoo.life - 1;



}


//👆 option_nekonobakuhatunohonoo.lifeに格納されている値が0より大きければオプション猫の爆発の炎の画像を描きます

//👆 option_nekonobakuhatunohonoo.lifeに格納されている値が0ならオプション猫の爆発の炎の画像が描かれることはありません





//👇🌞🌞🌞新型 オプション猫から弾が10連射されるプログラムです


//👇新たに11個目の弾option_nekonotama[10]の登場です


if (option_neko.life > 0)


if (option_nekonotamamode == 0)


if (option_nekonotama[10].x > 640)

if (key & PAD_INPUT_A) {


if (option_nekonotama[0].life == 0 && hassyasareru_option_nekonotama == 0) {


option_nekonotama[0].x = option_neko.x + 10;


option_nekonotama[0].y = option_neko.y + 10;


option_nekonotama_tsix[0] = option_nekonotama[0].x;


option_nekonotama[0].life = 1;


hassyasareru_option_nekonotama = 1;


option_nekonotama_count[0] = 30;//👈連射されるオプション猫の弾の最初の弾と次弾の間隔を調整することができます


}


}




for (int i = 0; i < 10; i++) {


if (option_nekonotama_count[i] > 0) { option_nekonotama_count[i] = option_nekonotama_count[i] - 1; }



if (option_nekonotama_count[i] == 0 && hassyasareru_option_nekonotama == i + 1) {


if (option_nekonotama[i + 1].life == 0) {


option_nekonotama[i + 1].x = option_neko.x + 10;


option_nekonotama[i + 1].y = option_neko.y + 10;


option_nekonotama_tsix[i + 1] = option_neko.x;


option_nekonotama[i + 1].life = 1;


hassyasareru_option_nekonotama = i + 2;


option_nekonotama_count[i + 1] = 30;


}


}


}


if (option_nekonotama_count[10] > 0) { option_nekonotama_count[10] = option_nekonotama_count[10] - 1; }




if (option_nekonotama_count[10] == 0 && hassyasareru_option_nekonotama == 11) {


hassyasareru_option_nekonotama = 0;


}






for (int i = 0; i < 11; i = i + 1) {


if (option_nekonotama[i].life == 1) {

//🌞🌞🌞 option_nekonotama[i].lifeに1が代入されているとオプション猫の弾option_nekonotama[i]がゲーム画面に表示されることになります option_nekonotama[i].lifeに0が代入されているとオプション猫の弾option_nekonotama[i]がゲーム画面に表示されることはありません

DrawGraph(option_nekonotama[i].x, option_nekonotama[i].y, option_nekonotama[i].graphichandle[0], TRUE);


option_nekonotama[i].x = option_nekonotama[i].x + 1;


if (option_nekonotama[i].x - option_nekonotama_tsix[i] > 640)

//🌞🌞🌞発射されたオプション猫の弾option_nekonotama[i]の位置のx座標が最初にオプション猫の弾option_nekonotama[i]が発射されたときのoption_nekonotama[i]の位置のx座標から🍑左へ🍑640を超えて離れると条件式option_nekonotama[i].x - option_nekonotama_tsix[i]は真の値1をとることになります

//🌞🌞🌞🌞🌞👆 option_nekonotama_tsix[i]にはオプション猫の弾option_nekonotama[i]が発射されたときのオプション猫の弾option_nekonotama[i]のいる位置のx座標を記憶していたのでoption_nekonotama[i].xがオプション猫の弾option_nekonotama[i]が発射されたときのオプション猫の弾option_nekonotama[i]のいる位置から640ドットを超えて離れた時、条件式option_nekonotama[i].x- option_nekonotama_tsix[i] > 640は真の値1を持つことになります

option_nekonotama[i].life = 0;


}


}


//👆🌞🌞🌞新型 オプション猫から弾が10連射されるプログラムです




//👇🌞🌞🌞新型 オプション猫から💖レーザー弾💖が10連射されるプログラムです


//👇新たに11個目のレーザー弾option_nekonotama_lazer[10]の登場です


if (option_neko.life > 0)


if (option_nekonotamamode == 1)


if (option_nekonotama_lazer[10].x > 640)


if (key & PAD_INPUT_A) {


if (option_nekonotama_lazer[0].life == 0 && hassyasareru_option_nekonotama_lazer == 0) {


option_nekonotama_lazer[0].x = option_neko.x + 10;


option_nekonotama_lazer[0].y = option_neko.y + 10;


option_nekonotama_lazer_tsix[0] = option_nekonotama_lazer[0].x;


option_nekonotama_lazer[0].life = 1;


hassyasareru_option_nekonotama_lazer = 1;


option_nekonotama_lazer_count[0] = 30;//👈連射される自分のレーザー弾の最初の弾と次弾の間隔を調整することができます


}


}




for (int i = 0; i < 10; i++) {


if (option_nekonotama_lazer_count[i] > 0) { option_nekonotama_lazer_count[i] = option_nekonotama_lazer_count[i] - 1; }



if (option_nekonotama_lazer_count[i] == 0 && hassyasareru_option_nekonotama_lazer == i + 1) {


if (option_nekonotama_lazer[i + 1].life == 0) {


option_nekonotama_lazer[i + 1].x = option_neko.x + 10;


option_nekonotama_lazer[i + 1].y = option_neko.y + 10;


option_nekonotama_lazer_tsix[i + 1] = option_nekonotama[i + 1].x;


option_nekonotama_lazer[i + 1].life = 1;


hassyasareru_option_nekonotama_lazer = i + 2;


option_nekonotama_lazer_count[i + 1] = 30;


}


}


}


if (option_nekonotama_lazer_count[10] > 0) { option_nekonotama_lazer_count[10] = option_nekonotama_lazer_count[10] - 1; }




if (jibunnotama_lazer_count[10] == 0 && hassyasareru_option_nekonotama_lazer == 11) {


hassyasareru_option_nekonotama_lazer = 0;


}






for (int i = 0; i < 11; i = i + 1) {


if (option_nekonotama_lazer[i].life == 1) {

//🌞🌞🌞 option_nekonotama_lazer[i].lifeに1が代入されているとオプション猫のレーザー弾option_nekonotama_lazer[i]がゲーム画面に表示されることになります option_nekonotama_lazer[i].lifeに0が代入されているとオプション猫のレーザー弾option_nekonotama_lazer[i]がゲーム画面に表示されることはありません

DrawGraph(option_nekonotama_lazer[i].x, option_nekonotama_lazer[i].y, option_nekonotama_lazer[i].graphichandle[0], TRUE);


option_nekonotama_lazer[i].x = option_nekonotama_lazer[i].x + 1;


if (option_nekonotama_lazer[i].x - option_nekonotama_lazer_tsix[i] > 640)

//🌞🌞🌞発射されたオプション猫のレーザー弾option_nekonotama_lazer[i]の位置のx座標が発射されたときの最初のオプション猫のレーザー弾option_nekonotama_lazer[i]の位置のx座標から🍑左へ🍑640を超えて離れると条件式option_nekonotama_lazer[i].x - option_nekonotama_lazer_tsix[i]は真の値1をとることになります

//🌞🌞🌞🌞🌞👆 option_nekonotama_lazer_tsix[i]にはオプション猫のレーザー弾option_nekonotama_lazer[i]が発射されたときのオプション猫のレーザー弾option_nekonotama_lazer[i]のいる位置のx座標を記憶していたのでoption_nekonotama_lazer[i].xがオプション猫の弾option_nekonotama_lazer[i]が発射されたときのオプション猫のレーザー弾option_nekonotama_lazer[i]のいる位置から640ドット離れた時、条件式option_nekonotama_lazer[i].x- option_nekonotama_lazer_tsix[i] > 640は真の値1を持つことになります

option_nekonotama_lazer[i].life = 0;


}


}


//👆🌞🌞🌞新型 オプション猫から💖レーザー弾💖が10連射されるプログラムです





//👆🌞🌞🌞オプション猫の挙動の設定の部分です




//👇🌞🌞🌞赤い敵の飛行機の挙動の設定の部分です



if (akaitekinohikouki_repeat > 0) {


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


akaitekinohikouki[i].x = akaitekinohikouki[i].x + akaitekinohikoukinoidoupattern[akaitekinohikouki_m][1];


akaitekinohikouki[i].y = akaitekinohikouki[i].y + akaitekinohikoukinoidoupattern[akaitekinohikouki_m][2];

}



}


akaitekinohikouki_repeat = akaitekinohikouki_repeat - 1;

}


if (akaitekinohikouki_repeat == 0) {


if (akaitekinohikouki_m < 4) {


akaitekinohikouki_repeat = akaitekinohikoukinoidoupattern[akaitekinohikouki_m][0];


akaitekinohikouki_m = akaitekinohikouki_m + 1;

}




if (akaitekinohikouki_m == 4) {

akaitekinohikouki_m = 0;

akaitekinohikouki_repeat = akaitekinohikoukinoidoupattern[akaitekinohikouki_m][0];


}


}



for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {



DrawGraph(akaitekinohikouki[i].x, akaitekinohikouki[i].y, akaitekinohikouki[i].graphichandle[(akaitekinohikouki[i].graphicnumber) / 128 % 7], TRUE);


akaitekinohikouki[i].graphicnumber = akaitekinohikouki[i].graphicnumber + 1;


//🌞🌞🌞 (akaitekinohikouki[i].graphicnumber)を128で割っているので通常のアニメーション速度の128分の1の速度で画像が切り替わります

//👆🌞🌞🌞ここです すでにakaitekinohikouki[i].graphicnumberには0,128,256,384,512,640,768の値のうちの1つがランダムに代入されているので敵の飛行機, 敵の飛行機1・・・敵の飛行機9はそれぞれ異なるタイミングでアニメーションすることになります


}


}


//🌞🌞🌞👇自分の飛行機と赤い敵の飛行機がぶつかったとき自分の飛行機と赤い敵の飛行機が消滅するプログラムはこちらです



if (jibunnohikouki.life > 0)


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


if ((jibunnohikouki.x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < jibunnohikouki.y + 20))

{


jibunnohikouki.life = 0;


akaitekinohikouki[i].life = 0;


//👆🌞自分の飛行機と赤い敵の飛行機が衝突すると共に消滅することになります



akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;



akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[0].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています




jibunnohikoukinobakuhatunohonoo.x = jibunnohikouki.x;


jibunnohikoukinobakuhatunohonoo.y = jibunnohikouki.y;


jibunnohikoukinobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 jibunnohikoukinobakuhatunohonoo.lifeに0以上の値を代入しました jibunnohikoukinobakuhatunohonoo.lifeにランダムに異なる値を代入することにより自分の飛行機が爆発する時間をランダムに変化させています



}

}


}

//🌞🌞🌞👆自分の飛行機と赤い敵の飛行機がぶつかったとき自分の飛行機と赤い敵の飛行機が消滅するプログラムはこちらです




//👇🌞🌞🌞自分の飛行機と赤い敵の飛行機の弾が衝突したとき当たった自分の飛行機と赤い敵の飛行機の弾が消え自分の飛行機が爆発する😊のプログラムです



for (int i = 0; i < 10; i++) {


for (int j = 0; j < 10; j++) {


if (akaitekinohikoukinotama[i][j].life > 0)


if (jibunnohikouki.life > 0) {


if ((jibunnohikouki.x < akaitekinohikoukinotama[i][j].x + 10) && (akaitekinohikoukinotama[i][j].x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < akaitekinohikoukinotama[i][j].y + 10) && (akaitekinohikoukinotama[i][j].y < jibunnohikouki.y + 20)) {


jibunnohikouki.life = jibunnohikouki.life - 1;


akaitekinohikoukinotama[i][j].life = 0;


//👆🌞自分の飛行機と赤い敵の飛行機の弾が衝突すると敵の弾だけが消滅することになります




jibunnohikoukiwooouhikari.x = jibunnohikouki.x;


jibunnohikoukiwooouhikari.y = jibunnohikouki.y;


//🌞🌞🌞 赤い敵の飛行機の弾と自分の飛行機がぶつかると、そのときの自分の飛行機の位置座標がjibunnohikoukiwooouhikari.x, jibunnohikoukiwooouhikari.yに代入されます


jibunnohikoukiwooouhikari.life = 5;






if (jibunnohikouki.life == 0) {


jibunnohikoukinobakuhatunohonoo.x = jibunnohikouki.x;


jibunnohikoukinobakuhatunohonoo.y = jibunnohikouki.y;


jibunnohikoukinobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 jibunnohikoukinobakuhatunohonoo.lifeに0以上の値を代入しました jibunnohikoukinobakuhatunohonoo.lifeにランダムに異なる値を代入することにより自分の飛行機が爆発する時間をランダムに変化させています

}



}

}


}


}


//👆🌞🌞🌞自分の飛行機と赤い敵の飛行機の弾が衝突したとき当たった自分の飛行機と赤い敵の飛行機の弾が消え自分の飛行機が爆発する😊のプログラムです







//👇🌞🌞🌞赤い敵の飛行機と自分の弾が衝突したとき当たった自分の弾と赤い敵の飛行機が消滅するプログラムです


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


for (int j = 0; j < 10; j++) {


if (jibunnotama[j].life > 0)


if ((jibunnotama[j].x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < jibunnotama[j].x + 15) && (jibunnotama[j].y < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < jibunnotama[j].y + 5)) {


jibunnotama[j].life = 0;


akaitekinohikouki[i].life = akaitekinohikouki[i].life - 1;


//👆🌞自分の弾と赤い敵の飛行機が衝突すると自分の弾は消滅しakaitekinohikouki[i].lifeに格納されている値は1減ることになります akaitekinohikouki[i].lifeに格納されている値が0になると赤い敵の飛行機は消滅することになります


akaitekinohikoukiwooouhikari.x = akaitekinohikouki[i].x;


akaitekinohikoukiwooouhikari.y = akaitekinohikouki[i].y;


//🌞🌞🌞自分の弾と赤い敵の飛行機がぶつかると赤い敵の飛行機の位置座標がakaitekinohikoukiwooouhikari.x, akaitekinohikoukiwooouhikari.yに代入されます


akaitekinohikoukiwooouhikari.life = 5;






if (akaitekinohikouki[i].life == 0) {


akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;


akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[i].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].life, akaitekinohikoukinobakuhatunohonoo[1].life, akaitekinohikoukinobakuhatunohonoo[2].life, akaitekinohikoukinobakuhatunohonoo[3].life, akaitekinohikoukinobakuhatunohonoo[4].life, akaitekinohikoukinobakuhatunohonoo[5].life, akaitekinohikoukinobakuhatunohonoo[6].life, akaitekinohikoukinobakuhatunohonoo[7].life, akaitekinohikoukinobakuhatunohonoo[8].life, akaitekinohikoukinobakuhatunohonoo[9].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞赤い敵の飛行機と自分の弾が衝突したとき当たった自分の弾と赤い敵の飛行機が消滅するプログラムです



//👇🌞🌞🌞赤い敵の飛行機と自分のレーザー弾が衝突したとき当たった自分のレーザー弾は消滅し赤い敵の飛行機のライフが1減るプログラムです


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


for (int j = 0; j < 10; j++) {


if (jibunnotama_lazer[j].life > 0)


if ((jibunnotama_lazer[j].x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < jibunnotama_lazer[j].x + 15) && (jibunnotama_lazer[j].y < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < jibunnotama_lazer[j].y + 5)) {


jibunnotama_lazer[j].life = 0;


akaitekinohikouki[i].life = 0;


//👆🌞自分のレーザー弾と赤い敵の飛行機が衝突すると自分のレーザー弾は消滅しakaitekinohikouki[i].lifeに格納されている値は1減ることになります akaitekinohikouki[i].lifeに格納されている値が0になると赤い敵の飛行機は消滅することになります


akaitekinohikoukiwooouhikari.x = akaitekinohikouki[i].x;


akaitekinohikoukiwooouhikari.y = akaitekinohikouki[i].y;


//🌞🌞🌞自分のレーザー弾と赤い敵の飛行機がぶつかると敵の飛行機の位置座標がakaitekinohikoukiwooouhikari.x, akaitekinohikoukiwooouhikari.yに代入されます


akaitekinohikoukiwooouhikari.life = 5;






if (akaitekinohikouki[i].life == 0) {


akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;


akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[i].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].life, akaitekinohikoukinobakuhatunohonoo[1].life, akaitekinohikoukinobakuhatunohonoo[2].life, akaitekinohikoukinobakuhatunohonoo[3].life, akaitekinohikoukinobakuhatunohonoo[4].life, akaitekinohikoukinobakuhatunohonoo[5].life, akaitekinohikoukinobakuhatunohonoo[6].life, akaitekinohikoukinobakuhatunohonoo[7].life, akaitekinohikoukinobakuhatunohonoo[8].life, akaitekinohikoukinobakuhatunohonoo[9].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞赤い敵の飛行機と自分のレーザー弾が衝突したとき当たった自分のレーザー弾は消滅し赤い敵の飛行機のライフが1減るプログラムです














//🌞🌞🌞👇オプション猫と赤い敵の飛行機がぶつかったときオプション猫と赤い敵の飛行機が消滅するプログラムはこちらです



if (option_neko.life > 0)


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


if ((option_neko.x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < option_neko.x + 35) && (option_neko.y + 7 < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < option_neko.y + 20))

{


option_neko.life = 0;


akaitekinohikouki[i].life = 0;


//👆🌞オプション猫と赤い敵の飛行機が衝突すると共に消滅することになります



akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;



akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[0].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています




option_nekonobakuhatunohonoo.x = option_neko.x;


option_nekonobakuhatunohonoo.y = option_neko.y;


option_nekonobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 option_nekonobakuhatunohonoo.lifeに0以上の値を代入しました option_nekonobakuhatunohonoo.lifeにランダムに異なる値を代入することによりオプション猫が爆発する時間をランダムに変化させています



}

}


}

//🌞🌞🌞👆オプション猫と赤い敵の飛行機がぶつかったときオプション猫と赤い敵の飛行機が消滅するプログラムはこちらです




//👇🌞🌞🌞オプション猫と赤い敵の飛行機の弾が衝突したとき当たったオプション猫と赤い敵の飛行機の弾が消えオプション猫が爆発する😊のプログラムです



for (int i = 0; i < 10; i++) {


for (int j = 0; j < 10; j++) {


if (akaitekinohikoukinotama[i][j].life > 0)


if (option_neko.life > 0) {


if ((option_neko.x < akaitekinohikoukinotama[i][j].x + 10) && (akaitekinohikoukinotama[i][j].x < option_neko.x + 35) && (option_neko.y + 7 < akaitekinohikoukinotama[i][j].y + 10) && (akaitekinohikoukinotama[i][j].y < option_neko.y + 20)) {


option_neko.life = option_neko.life - 1;


akaitekinohikoukinotama[i][j].life = 0;


//👆🌞オプション猫と赤い敵の飛行機の弾が衝突すると敵の弾だけが消滅することになります




option_nekowooouhikari.x = option_neko.x;


option_nekowooouhikari.y = option_neko.y;


//🌞🌞🌞 赤い敵の飛行機の弾とオプション猫がぶつかると、そのときのオプション猫の位置座標がoption_nekowooouhikari.x, option_nekowooouhikari.yに代入されます


option_nekowooouhikari.life = 5;






if (option_neko.life == 0) {


option_nekonobakuhatunohonoo.x = option_neko.x;


option_nekonobakuhatunohonoo.y = option_neko.y;


option_nekonobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 option_nekonobakuhatunohonoo.lifeに0以上の値を代入しました option_nekonobakuhatunohonoo.lifeにランダムに異なる値を代入することによりオプション猫が爆発する時間をランダムに変化させています

}



}

}


}


}


//👆🌞🌞🌞オプション猫と赤い敵の飛行機の弾が衝突したとき当たったオプション猫と赤い敵の飛行機の弾が消え自分の飛行機が爆発する😊のプログラムです







//👇🌞🌞🌞赤い敵の飛行機とオプション猫の弾が衝突したとき当たったオプション猫の弾と赤い敵の飛行機が消滅するプログラムです


for (int i = 0; i < 10; i++) {


if (option_neko.life > 0) {


for (int j = 0; j < 10; j++) {


if (option_nekonotama[j].life > 0)


if ((option_nekonotama[j].x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < option_nekonotama[j].x + 15) && (option_nekonotama[j].y < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < option_nekonotama[j].y + 5)) {


option_nekonotama[j].life = 0;


akaitekinohikouki[i].life = akaitekinohikouki[i].life - 1;


//👆🌞オプション猫と赤い敵の飛行機が衝突するとオプション猫の弾は消滅しakaitekinohikouki[i].lifeに格納されている値は1減ることになります akaitekinohikouki[i].lifeに格納されている値が0になると赤い敵の飛行機は消滅することになります


akaitekinohikoukiwooouhikari.x = akaitekinohikouki[i].x;


akaitekinohikoukiwooouhikari.y = akaitekinohikouki[i].y;


//🌞🌞🌞オプション猫の弾と赤い敵の飛行機がぶつかると赤い敵の飛行機の位置座標がakaitekinohikoukiwooouhikari.x, akaitekinohikoukiwooouhikari.yに代入されます


akaitekinohikoukiwooouhikari.life = 5;






if (akaitekinohikouki[i].life == 0) {


akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;


akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[i].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].life, akaitekinohikoukinobakuhatunohonoo[1].life, akaitekinohikoukinobakuhatunohonoo[2].life, akaitekinohikoukinobakuhatunohonoo[3].life, akaitekinohikoukinobakuhatunohonoo[4].life, akaitekinohikoukinobakuhatunohonoo[5].life, akaitekinohikoukinobakuhatunohonoo[6].life, akaitekinohikoukinobakuhatunohonoo[7].life, akaitekinohikoukinobakuhatunohonoo[8].life, akaitekinohikoukinobakuhatunohonoo[9].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞赤い敵の飛行機とオプション猫の弾が衝突したとき当たったオプション猫の弾と赤い敵の飛行機が消滅するプログラムです



//👇🌞🌞🌞赤い敵の飛行機とオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾は消滅し赤い敵の飛行機のライフが1減るプログラムです


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


for (int j = 0; j < 10; j++) {


if (option_nekonotama_lazer[j].life > 0)


if ((option_nekonotama_lazer[j].x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < option_nekonotama_lazer[j].x + 15) && (option_nekonotama_lazer[j].y < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < option_nekonotama_lazer[j].y + 5)) {


option_nekonotama_lazer[j].life = 0;


akaitekinohikouki[i].life = 0;


//👆🌞オプション猫のレーザー弾と赤い敵の飛行機が衝突するとオプション猫のレーザー弾は消滅しakaitekinohikouki[i].lifeに格納されている値は1減ることになります akaitekinohikouki[i].lifeに格納されている値が0になると赤い敵の飛行機は消滅することになります


akaitekinohikoukiwooouhikari.x = akaitekinohikouki[i].x;


akaitekinohikoukiwooouhikari.y = akaitekinohikouki[i].y;


//🌞🌞🌞オプション猫のレーザー弾と赤い敵の飛行機がぶつかると敵の飛行機の位置座標がakaitekinohikoukiwooouhikari.x, akaitekinohikoukiwooouhikari.yに代入されます


akaitekinohikoukiwooouhikari.life = 5;






if (akaitekinohikouki[i].life == 0) {


akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;


akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[i].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].life, akaitekinohikoukinobakuhatunohonoo[1].life, akaitekinohikoukinobakuhatunohonoo[2].life, akaitekinohikoukinobakuhatunohonoo[3].life, akaitekinohikoukinobakuhatunohonoo[4].life, akaitekinohikoukinobakuhatunohonoo[5].life, akaitekinohikoukinobakuhatunohonoo[6].life, akaitekinohikoukinobakuhatunohonoo[7].life, akaitekinohikoukinobakuhatunohonoo[8].life, akaitekinohikoukinobakuhatunohonoo[9].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞赤い敵の飛行機とオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾は消滅し赤い敵の飛行機のライフが1減るプログラムです





if (akaitekinohikoukiwooouhikari.life > 0) {



SetDrawBlendMode(DX_BLENDMODE_ALPHA, 200);


//👆🌞🌞🌞描画ブレンドモードがアルファブレンドになっています


DrawGraph(akaitekinohikoukiwooouhikari.x, akaitekinohikoukiwooouhikari.y, akaitekinohikoukiwooouhikari.graphichandle[0], TRUE);



SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);

akaitekinohikoukiwooouhikari.life = akaitekinohikoukiwooouhikari.life - 1;


// 👆🌞🌞🌞描画ブレンドモードをノーブレンドにして描画ブレンドモードを解除しています

}



//👆🌞🌞🌞赤い敵の飛行機を覆う光の画像が描かれます akaitekinohikoukiwooouhikari.lifeに格納されている値が0になると赤い敵の飛行機を覆う光の画像が描かれることはありません


for (int i = 0; i < 10; i++) {


if (akaitekinohikoukinobakuhatunohonoo[i].life > 0) {


DrawGraph(akaitekinohikoukinobakuhatunohonoo[i].x, akaitekinohikoukinobakuhatunohonoo[i].y, akaitekinohikoukinobakuhatunohonoo[i].graphichandle[(akaitekinohikoukinobakuhatunohonoo[i].graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞 akaitekinohikoukinobakuhatunohonoo[i].graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞

akaitekinohikoukinobakuhatunohonoo[i].graphicnumber = akaitekinohikoukinobakuhatunohonoo[i].graphicnumber + 1;

//👆🌞🌞🌞爆発の炎がアニメーションするよう設定が行われています



akaitekinohikoukinobakuhatunohonoo[i].life = akaitekinohikoukinobakuhatunohonoo[i].life - 1;



}


//👆 akaitekinohikoukinobakuhatunohonoo[i].lifeに格納されている値が1なら爆発の炎の画像を描きます

//👆 akaitekinohikoukinobakuhatunohonoo[i].lifeに格納されている値が0なら爆発の炎の画像が描かれることはありません


}






//👇🌞🌞🌞新型 赤い敵の飛行機10体から敵の弾が10連射されるプログラムです





for (int i = 0; i < 10; i = i + 1) {



if (akaitekinohikouki[i].life > 1 && GetRand(15) == 0 && akaitekinohikoukinotama[i][0].life == 0 && hassyasareru_akaitekinohikoukinotama[i] == 0) {


akaitekinohikoukinotama[i][0].x = akaitekinohikouki[i].x - 10;


akaitekinohikoukinotama[i][0].y = akaitekinohikouki[i].y + 10;


akaitekinohikoukinotama_tsix[i][0] = akaitekinohikoukinotama[i][0].x;


akaitekinohikoukinotama[i][0].life = 1;


hassyasareru_akaitekinohikoukinotama[i] = 1;


akaitekinohikoukinotama_count[i][0] = 20 + GetRand(25);//👈🌞🌞🌞赤い敵akaitekinohikouki[i]から10連射される最初の弾akaitekinohikoukinotama[i][0]と次弾akaitekinohikoukinotama[i][1]の間隔を調整することができます



}




for (int j = 0; j < 9; j++) {


if (akaitekinohikoukinotama_count[i][j] > 0) { akaitekinohikoukinotama_count[i][j] = akaitekinohikoukinotama_count[i][j] - 1; }



if (akaitekinohikoukinotama_count[i][j] == 0 && hassyasareru_akaitekinohikoukinotama[i] == j + 1) {


if (akaitekinohikoukinotama[i][j + 1].life == 0) {


akaitekinohikoukinotama[i][j + 1].x = akaitekinohikouki[i].x - 10;


akaitekinohikoukinotama[i][j + 1].y = akaitekinohikouki[i].y + 10;


akaitekinohikoukinotama_tsix[i][j + 1] = akaitekinohikoukinotama[i][j + 1].x;




akaitekinohikoukinotama[i][j + 1].life = 1;


hassyasareru_akaitekinohikoukinotama[i] = j + 2;


akaitekinohikoukinotama_count[i][j + 1] = 20 + GetRand(25);//👈🌞🌞🌞赤い敵の飛行機akaitekinohikouki[i]から10連射される敵の弾akaitekinohikoukinotama[i][j + 1]と次に発射される弾akaitekinohikoukinotama[i][j + 2]の間隔を調整することができます


}


}


}




if (akaitekinohikoukinotama_count[i][9] > 0) { akaitekinohikoukinotama_count[i][9] = akaitekinohikoukinotama_count[i][9] - 1; }




if (akaitekinohikoukinotama_count[i][9] == 0 && hassyasareru_akaitekinohikoukinotama[i] == 10) {


hassyasareru_akaitekinohikoukinotama[i] = 0;


}


for (int j = 0; j < 10; j = j + 1) {


if (akaitekinohikoukinotama[i][j].life == 1) {

//🌞🌞🌞 akaitekinohikoukinotama[i][j].lifeに1が代入されていると赤い敵の飛行機から発射される弾akaitekinohikoukinotama[i][j]がゲーム画面に表示されることになります akaitekinohikoukinotama[i][j].lifeに0が代入されていると赤い敵の飛行機から発射される弾 akaitekinohikoukinotama[i][j]がゲーム画面に表示されることはありません

DrawGraph(akaitekinohikoukinotama[i][j].x, akaitekinohikoukinotama[i][j].y, akaitekinohikoukinotama[i][j].graphichandle[0], TRUE);


akaitekinohikoukinotama[i][j].x = akaitekinohikoukinotama[i][j].x - 1;


if (akaitekinohikoukinotama_tsix[i][j] - akaitekinohikoukinotama[i][j].x > 1000)

//🌞🌞🌞 赤い敵の飛行機から発射された弾akaitekinohikoukinotama[i][j]の位置のx座標が発射されたときの最初の位置のx座標から🍑左へ🍑640を超えて離れると条件式akaitekinohikoukinotama_tsix[i][j] - akaitekinohikoukinotama[i][j].xは真の値1をとることになります

//🌞🌞🌞🌞🌞👆 akaitekinohikoukinotama_tsix[i][j]には赤い敵の飛行機から発射される弾akaitekinohikoukinotama[i][j]が発射されるときのakaitekinohikoukinotama[i][j]のいる位置のx座標が代入されます。赤い敵の飛行機から発射された弾のx座標akaitekinohikoukinotama[i][j].xが赤い敵の飛行機から発射されたときの敵の弾akaitekinohikoukinotama[i][j]のいる位置からx方向へ640ドット離れた時、条件式akaitekinohikoukinotama_tsix[i][j] - akaitekinohikoukinotama[i][j].x > 640は真の値1を持つことになります

akaitekinohikoukinotama[i][j].life = 0;


}


}


}



//👆🌞🌞🌞赤い敵の飛行機10体の挙動の設定の部分です




//💖💖💖ここで赤い敵の飛行機10体の設定の部分と敵の飛行機ルルの挙動の設定に分けられます💖💖💖







//👇🌞🌞🌞敵の飛行機ルルの挙動の設定です


if (framecounter >= 2000) {


if (RuRu_repeat > 0) {


for (int i = 0; i < 1; i++) {


if (RuRu[i].life > 0) {


RuRu[i].x = RuRu[i].x + RuRunoidoupattern[RuRu_m][1];


RuRu[i].y = RuRu[i].y + RuRunoidoupattern[RuRu_m][2];

}



}


RuRu_repeat = RuRu_repeat - 1;

}


if (RuRu_repeat == 0) {


if (RuRu_m < 4) {


RuRu_repeat = RuRunoidoupattern[RuRu_m][0];


RuRu_m = RuRu_m + 1;

}




if (RuRu_m == 4) {

RuRu_m = 0;

RuRu_repeat = RuRunoidoupattern[RuRu_m][0];


}


}



for (int i = 0; i < 1; i++) {


if (RuRu[i].life > 0) {



DrawGraph(RuRu[i].x, RuRu[i].y, RuRu[i].graphichandle[(RuRu[i].graphicnumber) / 128 % 7], TRUE);


RuRu[i].graphicnumber = RuRu[i].graphicnumber + 1;


//🌞🌞🌞 (RuRu[i].graphicnumber)を128で割っているので通常のアニメーション速度の128分の1の速度で画像が切り替わります

//👆🌞🌞🌞ただし 今はルルの画像は1枚しか用意されていないのでアニメーションしません


}


}






//🌞🌞🌞👇自分の飛行機と敵の飛行機ルルがぶつかったとき自分の飛行機と敵の飛行機ルルが消滅するプログラムはこちらです


if (jibunnohikouki.life > 0)


for (int i = 0; i < 1; i++) {


if (RuRu[i].life > 0) {


if ((jibunnohikouki.x < RuRu[i].x + 320) && (RuRu[i].x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < RuRu[i].y + 240) && (RuRu[i].y < jibunnohikouki.y + 20))

{


jibunnohikouki.life = 0;


RuRu[i].life = 0;


//👆🌞自分の飛行機と敵の飛行機ルルが衝突すると共に消滅することになります



RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;



RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[0].lifeに0以上の値を代入しました RuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています




jibunnohikoukinobakuhatunohonoo.x = jibunnohikouki.x;


jibunnohikoukinobakuhatunohonoo.y = jibunnohikouki.y;


jibunnohikoukinobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 jibunnohikoukinobakuhatunohonoo.lifeに0以上の値を代入しました jibunnohikoukinobakuhatunohonoo.lifeにランダムに異なる値を代入することにより自分の飛行機が爆発する時間をランダムに変化させています



}

}


}

//🌞🌞🌞👆自分の飛行機と敵の飛行機ルルがぶつかったとき自分の飛行機と敵の飛行機が消滅するプログラムはこちらです




//👇🌞🌞🌞自分の飛行機と敵の飛行機ルルの弾が衝突したとき当たった自分の飛行機と敵の飛行機ルルの弾が消え自分の飛行機が爆発するプログラムです



for (int i = 0; i < 1; i++) {


for (int j = 0; j < 10; j++) {


if (RuRunotama[i][j].life > 0)


if (jibunnohikouki.life > 0) {


if ((jibunnohikouki.x < RuRunotama[i][j].x + 10) && (RuRunotama[i][j].x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < RuRunotama[i][j].y + 10) && (RuRunotama[i][j].y < jibunnohikouki.y + 20)) {


jibunnohikouki.life = jibunnohikouki.life - 1;


RuRunotama[i][j].life = 0;


//👆🌞自分の飛行機と敵の弾が衝突するとjibunnohikouki.lifeに格納される値が1減り敵の弾は消滅することになります。jibunnohikouki.lifeに格納される値が0になると自分の飛行機が消滅することになります




jibunnohikoukiwooouhikari.x = jibunnohikouki.x;


jibunnohikoukiwooouhikari.y = jibunnohikouki.y;


//🌞🌞🌞自分の飛行機と敵の弾がぶつかると自分の飛行機の位置座標がjibunnohikoukiwooouhikari.x , jibunnohikoukiwooouhikari.yに代入されます


jibunnohikoukiwooouhikari.life = 3;








if (jibunnohikouki.life == 0) {


jibunnohikoukinobakuhatunohonoo.x = jibunnohikouki.x;


jibunnohikoukinobakuhatunohonoo.y = jibunnohikouki.y;


jibunnohikoukinobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 jibunnohikoukinobakuhatunohonoo.lifeに0以上の値を代入しました jibunnohikoukinobakuhatunohonoo.lifeにランダムに異なる値を代入することにより自分の飛行機が爆発する時間をランダムに変化させています


}

}

}


}


}


//👆🌞🌞🌞自分の飛行機と敵の飛行機ルルの弾が衝突したとき当たった自分の飛行機と敵の弾が消え自分の飛行機が爆発するプログラムです







//👇🌞🌞🌞敵の飛行機ルルと自分の弾が衝突したとき当たった自分の弾と敵の飛行機ルルが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (RuRu[i].life > 0) {





for (int j = 0; j < 10; j++) {


if (jibunnotama[j].life > 0)


if ((jibunnotama[j].x < RuRu[i].x + 320) && (RuRu[i].x < jibunnotama[j].x + 15) && (jibunnotama[j].y < RuRu[i].y + 240) && (RuRu[i].y < jibunnotama[j].y + 5)) {


jibunnotama[j].life = 0;


RuRu[i].life = RuRu[i].life - 1;


//👆🌞自分の弾と敵の飛行機ルルが衝突すると自分の弾は消滅しtekinohikouki[i].lifeに格納されている値は1減ることになります RuRu[i].lifeに格納されている値が0になると敵の飛行機ルルは消滅することになります


RuRuwooouhikari.x = RuRu[i].x;


RuRuwooouhikari.y = RuRu[i].y;


//🌞🌞🌞自分の弾と敵の飛行機ルルがぶつかると敵の飛行機ルルの位置座標がRuRuwooouhikari.x, RuRuwooouhikari.yに代入されます


RuRuwooouhikari.life = 10;






if (RuRu[i].life == 0) {


RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;


RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[i].lifeに0以上の値を代入しましたRuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞敵の飛行機ルルと自分の弾が衝突したとき当たった自分の弾と敵の飛行機ルルが消滅するプログラムです



//👇🌞🌞🌞敵の飛行機ルルと自分のレーザー弾が衝突したとき当たった自分のレーザー弾と敵の飛行機ルルが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (RuRu[i].life > 0) {



for (int j = 0; j < 10; j++) {


if (jibunnotama_lazer[j].life > 0)


if ((jibunnotama_lazer[j].x < RuRu[i].x + 320) && (RuRu[i].x < jibunnotama_lazer[j].x + 15) && (jibunnotama_lazer[j].y < RuRu[i].y + 240) && (RuRu[i].y < jibunnotama_lazer[j].y + 5)) {


jibunnotama_lazer[j].life = 0;


RuRu[i].life = RuRu[i].life - 1;


//👆🌞自分のレーザー弾と敵の飛行機ルルが衝突すると自分のレーザー弾は消滅しRuRu[i].lifeに格納されている値は1減ることになります RuRu[i].lifeに格納されている値が0になると敵の飛行機ルルは消滅することになります


RuRuwooouhikari.x = RuRu[i].x;


RuRuwooouhikari.y = RuRu[i].y;


//🌞🌞🌞自分のレーザー弾と敵の飛行機ルルがぶつかると敵の飛行機ルルの位置座標がRuRuwooouhikari.x, RuRuwooouhikari.yに代入されます


RuRuwooouhikari.life = 10;






if (RuRu[i].life == 0) {


RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;


RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[i].lifeに0以上の値を代入しましたRuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞敵の飛行機ルルと自分のレーザー弾が衝突したとき当たった自分のレーザー弾と敵の飛行機ルルが消滅するプログラムです










//🌞🌞🌞👇オプション猫と敵の飛行機ルルがぶつかったときオプション猫と敵の飛行機ルルが消滅するプログラムはこちらです


if (option_neko.life > 0)


for (int i = 0; i < 1; i++) {


if (RuRu[i].life > 0) {


if ((option_neko.x < RuRu[i].x + 320) && (RuRu[i].x < option_neko.x + 35) && (option_neko.y + 7 < RuRu[i].y + 240) && (RuRu[i].y < option_neko.y + 20))

{


option_neko.life = 0;


RuRu[i].life = 0;


//👆🌞オプション猫と敵の飛行機ルルが衝突すると共に消滅することになります



RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;



RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[0].lifeに0以上の値を代入しました RuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています




option_nekonobakuhatunohonoo.x = option_neko.x;


option_nekonobakuhatunohonoo.y = option_neko.y;


option_nekonobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞option_nekonobakuhatunohonoo.lifeに0以上の値を代入しましたoption_nekonobakuhatunohonoo.lifeにランダムに異なる値を代入することによりオプション猫が爆発する時間をランダムに変化させています



}

}


}

//🌞🌞🌞👆オプション猫と敵の飛行機ルルがぶつかったときオプション猫と敵の飛行機が消滅するプログラムはこちらです




//👇🌞🌞🌞オプション猫と敵の飛行機ルルの弾が衝突したとき当たったオプション猫と敵の飛行機ルルの弾が消え自分の飛行機が爆発するプログラムです



for (int i = 0; i < 1; i++) {


for (int j = 0; j < 10; j++) {


if (RuRunotama[i][j].life > 0)


if (option_neko.life > 0) {


if ((option_neko.x < RuRunotama[i][j].x + 10) && (RuRunotama[i][j].x < option_neko.x + 35) && (option_neko.y + 7 < RuRunotama[i][j].y + 10) && (RuRunotama[i][j].y < option_neko.y + 20)) {


option_neko.life = option_neko.life - 1;


RuRunotama[i][j].life = 0;


//👆🌞オプション猫と敵の弾が衝突するとoption_neko.lifeに格納される値が1減り敵の弾は消滅することになります。option_neko.lifeに格納される値が0になるとオプション猫が消滅することになります




option_nekowooouhikari.x = option_neko.x;


option_nekowooouhikari.y = option_neko.y;


//🌞🌞🌞オプション猫と敵の弾がぶつかるとオプション猫の位置座標がoption_nekowooouhikari.x ,option_nekowooouhikari.yに代入されます


option_nekowooouhikari.life = 3;








if (option_neko.life == 0) {


option_nekonobakuhatunohonoo.x = option_neko.x;


option_nekonobakuhatunohonoo.y = option_neko.y;


option_nekonobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 option_nekonobakuhatunohonoo.lifeに0以上の値を代入しましたoption_nekonobakuhatunohonoo.lifeにランダムに異なる値を代入することによりオプション猫が爆発する時間をランダムに変化させています


}

}

}


}


}


//👆🌞🌞🌞オプション猫と敵の飛行機ルルの弾が衝突したとき当たったオプション猫と敵の弾が消えオプション猫が爆発するプログラムです







//👇🌞🌞🌞敵の飛行機ルルとオプション猫の弾が衝突したとき当たったオプション猫の弾と敵の飛行機ルルが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (RuRu[i].life > 0) {





for (int j = 0; j < 10; j++) {


if (option_nekonotama[j].life > 0)


if ((option_nekonotama[j].x < RuRu[i].x + 320) && (RuRu[i].x < option_nekonotama[j].x + 15) && (option_nekonotama[j].y < RuRu[i].y + 240) && (RuRu[i].y < option_nekonotama[j].y + 5)) {


option_nekonotama[j].life = 0;


RuRu[i].life = RuRu[i].life - 1;


//👆🌞オプション猫の弾と敵の飛行機ルルが衝突するとオプション猫の弾は消滅しtekinohikouki[i].lifeに格納されている値は1減ることになります RuRu[i].lifeに格納されている値が0になると敵の飛行機ルルは消滅することになります


RuRuwooouhikari.x = RuRu[i].x;


RuRuwooouhikari.y = RuRu[i].y;


//🌞🌞🌞オプション猫の弾と敵の飛行機ルルがぶつかると敵の飛行機ルルの位置座標がRuRuwooouhikari.x, RuRuwooouhikari.yに代入されます


RuRuwooouhikari.life = 10;






if (RuRu[i].life == 0) {


RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;


RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[i].lifeに0以上の値を代入しましたRuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞敵の飛行機ルルとオプション猫の弾が衝突したとき当たったオプション猫の弾と敵の飛行機ルルが消滅するプログラムです



//👇🌞🌞🌞敵の飛行機ルルとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾と敵の飛行機ルルが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (RuRu[i].life > 0) {



for (int j = 0; j < 10; j++) {


if (option_nekonotama_lazer[j].life > 0)


if ((option_nekonotama_lazer[j].x < RuRu[i].x + 320) && (RuRu[i].x < option_nekonotama_lazer[j].x + 15) && (option_nekonotama_lazer[j].y < RuRu[i].y + 240) && (RuRu[i].y < option_nekonotama_lazer[j].y + 5)) {


option_nekonotama_lazer[j].life = 0;


RuRu[i].life = RuRu[i].life - 1;


//👆🌞オプション猫のレーザー弾と敵の飛行機ルルが衝突するとオプション猫のレーザー弾は消滅しRuRu[i].lifeに格納されている値は1減ることになります RuRu[i].lifeに格納されている値が0になると敵の飛行機ルルは消滅することになります


RuRuwooouhikari.x = RuRu[i].x;


RuRuwooouhikari.y = RuRu[i].y;


//🌞🌞🌞オプション猫のレーザー弾と敵の飛行機ルルがぶつかると敵の飛行機ルルの位置座標がRuRuwooouhikari.x, RuRuwooouhikari.yに代入されます


RuRuwooouhikari.life = 10;






if (RuRu[i].life == 0) {


RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;


RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[i].lifeに0以上の値を代入しましたRuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞敵の飛行機ルルとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾と敵の飛行機ルルが消滅するプログラムです








if (RuRuwooouhikari.life > 0) {





DrawGraph(RuRuwooouhikari.x, RuRuwooouhikari.y, RuRuwooouhikari.graphichandle[0], TRUE);




RuRuwooouhikari.life = RuRuwooouhikari.life - 1;



}



//👆🌞🌞🌞敵の飛行機ルルを覆う光の画像が描かれます RuRuwooouhikari.lifeに格納されている値が0になると敵の飛行機ルルを覆う光の画像が描かれることはありません


for (int i = 0; i < 1; i++) {


if (RuRunobakuhatunohonoo[i].life > 0) {


DrawGraph(RuRunobakuhatunohonoo[i].x, RuRunobakuhatunohonoo[i].y, RuRunobakuhatunohonoo[i].graphichandle[(RuRunobakuhatunohonoo[i].graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞RuRunobakuhatunohonoo[i].graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞

RuRunobakuhatunohonoo[i].graphicnumber = RuRunobakuhatunohonoo[i].graphicnumber + 1;

//👆🌞🌞🌞爆発の炎がアニメーションするよう設定が行われています



RuRunobakuhatunohonoo[i].life = RuRunobakuhatunohonoo[i].life - 1;



}


//👆 RuRunobakuhatunohonoo[i].lifeに格納されている値が1なら爆発の炎の画像を描きます

//👆 RuRunobakuhatunohonoo[i].lifeに格納されている値が0なら爆発の炎の画像が描かれることはありません


}







//👇🌞🌞🌞新型 敵の飛行機ルルから敵の飛行機ルルの弾が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]のいた位置から640ドット離れた時、条件式RuRunotama_tsix[i][j] - RuRunotama[i][j].x > 640は真の値1を持つことになります

RuRunotama[i][j].life = 0;


}


}


}



}



//👆🌞🌞🌞敵の飛行機ルルの挙動の設定です



//👇🌞🌞🌞敵キャラ ミミの挙動の設定です



if (((500 <= framecounter) && (framecounter <= 1500)) || ((2500 <= framecounter) && (framecounter <= 3500)))

{


if (MiMi.life > 0) {



DrawGraph(MiMi.x, MiMi.y, MiMi.graphichandle[0], TRUE);



}


}



//👆🌞🌞🌞敵キャラ ミミの挙動の設定です



//👇🌞🌞🌞オレンジリング500体の挙動の設定の部分です



for (int i = 0; i < 500; i++) {


if (orange_ring[i].life > 0) {



DrawGraph(orange_ring[i].x, orange_ring[i].y, orange_ring[i].graphichandle[(orange_ring[i].graphicnumber) / 128 % 7], TRUE);



}


}




for (int j = 499; j > 0; j = j - 1) {



orange_ring[j].x = orange_ring[j - 1].x;

orange_ring[j].y = orange_ring[j - 1].y;


}




//👇😊😊😊先頭のオレンジリングだけを動かしています


if (orange_ring_repeat > 0) {


for (int i = 0; i < 1; i++) {


if (orange_ring[i].life > 0) {


orange_ring[i].x = orange_ring[i].x + orange_ringnoidoupattern[orange_ring_m][1];


orange_ring[i].y = orange_ring[i].y + orange_ringnoidoupattern[orange_ring_m][2];

}



}


orange_ring_repeat = orange_ring_repeat - 1;

}


if (orange_ring_repeat == 0) {


if (orange_ring_m < 3) {



orange_ring_m = orange_ring_m + 1;


orange_ring_repeat = orange_ringnoidoupattern[orange_ring_m][0];

}


}




if (orange_ring_repeat == 0) {


if (orange_ring_m == 3) {

orange_ring_m = 0;

orange_ring_repeat = orange_ringnoidoupattern[orange_ring_m][0];


}


}



//👆😊😊😊先頭のオレンジリングだけを動かしています



//👆🌞🌞🌞オレンジリング500体の挙動の設定の部分です










//👇🌞🌞🌞レーザーマークの挙動の設定です


if (framecounter % 1000 == 0)

{



lazermark.life = 1;


lazermark.x = 640;


lazermark.y = 240;


}



//👆🌞🌞🌞ここです framecounterが1000になったとき時lazermark.life に1が代入されることになります







if (lazermark_repeat > 0) {


for (int i = 0; i < 1; i++) {


if (lazermark.life > 0) {


lazermark.x = lazermark.x + lazermarknoidoupattern[lazermark_m][1];


lazermark.y = lazermark.y + lazermarknoidoupattern[lazermark_m][2];

}



}


lazermark_repeat = lazermark_repeat - 1;

}


if (lazermark_repeat == 0) {


if (lazermark_m < 4) {


lazermark_repeat = lazermarknoidoupattern[lazermark_m][0];


lazermark_m = lazermark_m + 1;

}




if (lazermark_m == 4) {

lazermark_m = 0;

lazermark_repeat = lazermarknoidoupattern[lazermark_m][0];


}


}



for (int i = 0; i < 1; i++) {


if (lazermark.life > 0) {



DrawGraph(lazermark.x, lazermark.y, lazermark.graphichandle[(lazermark.graphicnumber) / 128 % 7], TRUE);


lazermark.graphicnumber = lazermark.graphicnumber + 1;


//🌞🌞🌞 (lazermark.graphicnumber)を128で割っているので通常のアニメーション速度の128分の1の速度で画像が切り替わります

//👆🌞🌞🌞レーザーマークをアニメーションさせる設定です ただし 今は一枚しかレーザーマークの画像を用意していないのでレーザーマークはアニメーションしません


}


}




if (lazermark.x < 0) {


lazermark.life = 0;



}


//👆💖💖💖ここです レーザー弾が画面の外に消えた時、すなわちlazermark.xが0より小さいマイナスの値をもったときlazermark.lifeに0が代入されることになりレーザー弾は左方向に進まなくなりますのx座標




//🌞🌞🌞👇自分の飛行機とレーザーマークがぶつかったときレーザーマークが消滅するプログラムはこちらです


if (jibunnohikouki.life > 0)


for (int i = 0; i < 1; i++) {


if (lazermark.life > 0) {


if ((jibunnohikouki.x < lazermark.x + 30) && (lazermark.x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < lazermark.y + 30) && (lazermark.y < jibunnohikouki.y + 20))

{



lazermark.life = 0;


//👆🌞自分の飛行機とレーザーマークが衝突するとレーザーマークが消滅することになります

jibunnotamamode = 1;



//👆🌞自分の飛行機とレーザーマークが衝突するとjibunnotamamodeに1が代入されレーザー発射モードになります


}

}


}

//🌞🌞🌞👆自分の飛行機とレーザーマークがぶつかったときレーザーマークが消滅するプログラムはこちらです








//👇🌞🌞🌞レーザーマークと自分の弾が衝突したとき当たった自分の弾とレーザーマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (lazermark.life > 0) {





for (int j = 0; j < 10; j++) {


if (jibunnotama[j].life > 0)


if ((jibunnotama[j].x < lazermark.x + 30) && (lazermark.x < jibunnotama[j].x + 15) && (jibunnotama[j].y < lazermark.y + 30) && (lazermark.y < jibunnotama[j].y + 5)) {


jibunnotama[j].life = 0;


lazermark.life = lazermark.life - 1;


//👆🌞自分の弾とレーザーマークが衝突すると自分の弾は消滅しlazermark.lifeに格納されている値は1減ることになります lazermark.lifeに格納されている値が0になるとレーザーマークは消滅することになります




}

}


}

}





//👆🌞🌞🌞レーザーマークと自分の弾が衝突したとき当たった自分の弾とレーザーマークが消滅するプログラムです



//👇🌞🌞🌞レーザーマークと自分のレーザー弾が衝突したとき当たった自分のレーザー弾とレーザーマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (lazermark.life > 0) {



for (int j = 0; j < 10; j++) {


if (jibunnotama_lazer[j].life > 0)


if ((jibunnotama_lazer[j].x < lazermark.x + 30) && (lazermark.x < jibunnotama_lazer[j].x + 15) && (jibunnotama_lazer[j].y < lazermark.y + 30) && (lazermark.y < jibunnotama_lazer[j].y + 5)) {


jibunnotama_lazer[j].life = 0;


lazermark.life = lazermark.life - 1;


//👆🌞自分のレーザー弾とレーザーマークが衝突すると自分のレーザー弾は消滅しlazermark.lifeに格納されている値は1減ることになります lazermark.lifeに格納されている値が0になるとレーザーマークは消滅することになります




}


}

}


}



//👆🌞🌞🌞レーザーマークと自分のレーザー弾が衝突したとき当たった自分のレーザー弾とレーザーマークが消滅するプログラムです




//👆🌞🌞🌞レーザーマークの挙動の設定です


//👇🌞🌞🌞ミサイルマークの挙動の設定です


if (framecounter % 1500 == 0) {



misslemark.life = 1;


misslemark.x = 640;


misslemark.y = 240;




}


if (misslemark_repeat > 0) {


for (int i = 0; i < 1; i++) {


if (misslemark.life > 0) {


misslemark.x = misslemark.x + misslemarknoidoupattern[misslemark_m][1];


misslemark.y = misslemark.y + misslemarknoidoupattern[misslemark_m][2];

}



}


misslemark_repeat = misslemark_repeat - 1;

}


if (misslemark_repeat == 0) {


if (misslemark_m < 4) {


misslemark_repeat = misslemarknoidoupattern[misslemark_m][0];


misslemark_m = misslemark_m + 1;

}




if (misslemark_m == 4) {

misslemark_m = 0;

misslemark_repeat = misslemarknoidoupattern[misslemark_m][0];


}


}



for (int i = 0; i < 1; i++) {


if (misslemark.life > 0) {



DrawGraph(misslemark.x, misslemark.y, misslemark.graphichandle[(misslemark.graphicnumber) / 128 % 7], TRUE);


misslemark.graphicnumber = misslemark.graphicnumber + 1;


//🌞🌞🌞 (misslemark.graphicnumber)を128で割っているので通常のアニメーション速度の128分の1の速度で画像が切り替わります

//👆🌞🌞🌞ミサイルマークをアニメーションさせる設定です ただし 今は一枚しかミサイルマークの画像を用意していないのでミサイルマークはアニメーションしません


}


}






if (misslemark.x < 0) {


misslemark.life = 0;



}


//👆💖💖💖ここです ミサイル弾が画面の外に消えた時、すなわちmisslemark.xが0より小さいマイナスの値をもったときmisslemark.lifeに0が代入されることになりレーザー弾は左方向に進まなくなります







//🌞🌞🌞👇自分の飛行機とミサイルマークがぶつかったときミサイルマークが消滅するプログラムはこちらです


if (jibunnohikouki.life > 0)


for (int i = 0; i < 1; i++) {


if (misslemark.life > 0) {


if ((jibunnohikouki.x < misslemark.x + 30) && (misslemark.x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < misslemark.y + 30) && (misslemark.y < jibunnohikouki.y + 20))

{



misslemark.life = 0;


//👆🌞自分の飛行機とミサイルマークが衝突するとミサイルマークが消滅することになります


jibunnotamamode = 0;//👈🌞🌞🌞普通の弾が発射されるようにjibunnotamamodeに0を代入します


}

}


}

//🌞🌞🌞👆自分の飛行機とミサイルマークがぶつかったときミサイルマークが消滅するプログラムはこちらです








//👇🌞🌞🌞ミサイルマークと自分の弾が衝突したとき当たった自分の弾とミサイルマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (misslemark.life > 0) {





for (int j = 0; j < 10; j++) {


if (jibunnotama[j].life > 0)


if ((jibunnotama[j].x < misslemark.x + 30) && (misslemark.x < jibunnotama[j].x + 15) && (jibunnotama[j].y < misslemark.y + 30) && (misslemark.y < jibunnotama[j].y + 5)) {


jibunnotama[j].life = 0;


misslemark.life = misslemark.life - 1;


//👆🌞自分の弾とミサイルマークが衝突すると自分の弾は消滅しmisslemark.lifeに格納されている値は1減ることになります misslemark.lifeに格納されている値が0になるとミサイルマークは消滅することになります




}

}


}

}





//👆🌞🌞🌞ミサイルマークと自分の弾が衝突したとき当たった自分の弾とミサイルマークが消滅するプログラムです



//👇🌞🌞🌞ミサイルマークと自分のレーザー弾が衝突したとき当たった自分のレーザー弾とミサイルマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (misslemark.life > 0) {



for (int j = 0; j < 10; j++) {


if (jibunnotama_lazer[j].life > 0)


if ((jibunnotama_lazer[j].x < misslemark.x + 30) && (misslemark.x < jibunnotama_lazer[j].x + 15) && (jibunnotama_lazer[j].y < misslemark.y + 30) && (misslemark.y < jibunnotama_lazer[j].y + 5)) {


jibunnotama_lazer[j].life = 0;


misslemark.life = misslemark.life - 1;


//👆🌞自分のレーザー弾とミサイルマークが衝突すると自分のレーザー弾は消滅しmisslemark.lifeに格納されている値は1減ることになります misslemark.lifeに格納されている値が0になるとミサイルマークは消滅することになります






}

}


}

}





//👆🌞🌞🌞ミサイルマークと自分のレーザー弾が衝突したとき当たった自分のレーザー弾とミサイルマークが消滅するプログラムです




//👆🌞🌞🌞ミサイルマークの挙動の設定です






//👇🌞🌞🌞レーザーマークの挙動の設定です



//🌞🌞🌞👇オプション猫とレーザーマークがぶつかったときレーザーマークが消滅するプログラムはこちらです


if (option_neko.life > 0)


for (int i = 0; i < 1; i++) {


if (lazermark.life > 0) {


if ((option_neko.x < lazermark.x + 30) && (lazermark.x < option_neko.x + 35) && (option_neko.y + 7 < lazermark.y + 30) && (lazermark.y < option_neko.y + 20))

{



lazermark.life = 0;


//👆🌞オプション猫とレーザーマークが衝突するとレーザーマークが消滅することになります

option_nekonotamamode = 1;



//👆🌞オプション猫とレーザーマークが衝突するとoption_nekonotamamodeに1が代入されレーザー発射モードになります


}

}


}

//🌞🌞🌞👆オプション猫とレーザーマークがぶつかったときレーザーマークが消滅するプログラムはこちらです








//👇🌞🌞🌞レーザーマークとオプション猫の弾が衝突したとき当たったオプション猫の弾とレーザーマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (lazermark.life > 0) {





for (int j = 0; j < 10; j++) {


if (option_nekonotama[j].life > 0)


if ((option_nekonotama[j].x < lazermark.x + 30) && (lazermark.x < option_nekonotama[j].x + 15) && (option_nekonotama[j].y < lazermark.y + 30) && (lazermark.y < option_nekonotama[j].y + 5)) {


option_nekonotama[j].life = 0;


lazermark.life = lazermark.life - 1;


//👆🌞オプション猫の弾とレーザーマークが衝突するとオプション猫の弾は消滅しlazermark.lifeに格納されている値は1減ることになります lazermark.lifeに格納されている値が0になるとレーザーマークは消滅することになります




}

}


}

}





//👆🌞🌞🌞レーザーマークとオプション猫の弾が衝突したとき当たったオプション猫の弾とレーザーマークが消滅するプログラムです



//👇🌞🌞🌞レーザーマークとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾とレーザーマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (lazermark.life > 0) {



for (int j = 0; j < 10; j++) {


if (option_nekonotama_lazer[j].life > 0)


if ((option_nekonotama_lazer[j].x < lazermark.x + 30) && (lazermark.x < option_nekonotama_lazer[j].x + 15) && (option_nekonotama_lazer[j].y < lazermark.y + 30) && (lazermark.y < option_nekonotama_lazer[j].y + 5)) {


option_nekonotama_lazer[j].life = 0;


lazermark.life = lazermark.life - 1;


//👆🌞オプション猫のレーザー弾とレーザーマークが衝突するとオプション猫のレーザー弾は消滅しlazermark.lifeに格納されている値は1減ることになります lazermark.lifeに格納されている値が0になるとレーザーマークは消滅することになります




}


}

}


}



//👆🌞🌞🌞レーザーマークとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾とレーザーマークが消滅するプログラムです




//👆🌞🌞🌞レーザーマークの挙動の設定です




//👇🌞🌞🌞ミサイルマークの挙動の設定です








//🌞🌞🌞👇オプション猫とミサイルマークがぶつかったときミサイルマークが消滅するプログラムはこちらです


if (option_neko.life > 0)


for (int i = 0; i < 1; i++) {


if (misslemark.life > 0) {


if ((option_neko.x < misslemark.x + 30) && (misslemark.x < option_neko.x + 35) && (option_neko.y + 7 < misslemark.y + 30) && (misslemark.y < option_neko.y + 20))

{



misslemark.life = 0;


//👆🌞オプション猫とミサイルマークが衝突するとミサイルマークが消滅することになります


option_nekonotamamode = 0;//👈🌞🌞🌞普通の弾が発射されるようにoption_nekonotamamodeに0を代入します


}

}


}

//🌞🌞🌞👆オプション猫とミサイルマークがぶつかったときミサイルマークが消滅するプログラムはこちらです








//👇🌞🌞🌞ミサイルマークとオプション猫の弾が衝突したとき当たったオプション猫の弾とミサイルマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (misslemark.life > 0) {





for (int j = 0; j < 10; j++) {


if (option_nekonotama[j].life > 0)


if ((option_nekonotama[j].x < misslemark.x + 30) && (misslemark.x < option_nekonotama[j].x + 15) && (option_nekonotama[j].y < misslemark.y + 30) && (misslemark.y < option_nekonotama[j].y + 5)) {


option_nekonotama[j].life = 0;


misslemark.life = misslemark.life - 1;


//👆🌞オプション猫の弾とミサイルマークが衝突するとオプション猫の弾は消滅しmisslemark.lifeに格納されている値は1減ることになります misslemark.lifeに格納されている値が0になるとミサイルマークは消滅することになります




}

}


}

}





//👆🌞🌞🌞ミサイルマークとオプション猫の弾が衝突したとき当たったオプション猫の弾とミサイルマークが消滅するプログラムです



//👇🌞🌞🌞ミサイルマークとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾とミサイルマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (misslemark.life > 0) {



for (int j = 0; j < 10; j++) {


if (option_nekonotama_lazer[j].life > 0)


if ((option_nekonotama_lazer[j].x < misslemark.x + 30) && (misslemark.x < option_nekonotama_lazer[j].x + 15) && (option_nekonotama_lazer[j].y < misslemark.y + 30) && (misslemark.y < option_nekonotama_lazer[j].y + 5)) {


option_nekonotama_lazer[j].life = 0;


misslemark.life = misslemark.life - 1;


//👆🌞オプション猫のレーザー弾とミサイルマークが衝突するとオプション猫のレーザー弾は消滅しmisslemark.lifeに格納されている値は1減ることになります misslemark.lifeに格納されている値が0になるとミサイルマークは消滅することになります






}

}


}

}





//👆🌞🌞🌞ミサイルマークとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾とミサイルマークが消滅するプログラムです




//👆🌞🌞🌞ミサイルマークの挙動の設定です



ScreenFlip();


ClearDrawScreen();


};



DxLib_End(); // DXライブラリの使用を終了します DXライブラリの使用しているメモリ領域が解放されます


return 0; // プログラムを終了します


}


デバッグなしで実行をしてから一度プログラムを終了し

生成されたexeファイルをハードディスクから探し出しクリックする方法により得られたプログラムの実行結果はこちらです

👇




https://youtu.be/ikXPrw9imn4



solarplexuss「👆やっぱり


オレンジリングを50体から500体に増やしても


オレンジリングが


めっちゃ重なって表示されているうぅぅ」


マックス「ここでな



0番目

10番目

20番目

30番目

40番目

50番目

60番目

70番目

80番目

90番目

100番目

110番目

120番目

130番目

140番目

150番目

160番目

170番目

180番目

190番目

200番目

210番目

220番目

230番目

240番目

250番目

260番目

270番目

280番目

290番目

300番目

310番目

320番目

330番目

340番目

350番目

360番目

370番目

380番目

390番目

400番目

410番目

420番目

430番目

440番目

450番目

460番目

470番目

480番目

490番目


50個の


オレンジリングだけを表示すれば


オレンジリングは重なって表示されなくなるのだあ




0番目のオレンジリング

10番目のオレンジリング



例えば


0番目のオレンジリングの座標が


(580,200)


なら


10番目のオレンジリングの座標は


(630,200)


になる


つまり


オレンジリングの画像サイズが


幅50ドット×高さ50ドット



0番目のオレンジリングが表示されたとしても


10番目のオレンジリングには


重ならずに表示されるってわけだ


10番目のオレンジリング

20番目のオレンジリング


20番目のオレンジリング

30番目のオレンジリング

の場合も同様だ」


solarplexuss「わおう いいアイデア」


マックス「


0番目

10番目

20番目

30番目

40番目

50番目

60番目

70番目

80番目

90番目

100番目

110番目

120番目

130番目

140番目

150番目

160番目

170番目

180番目

190番目

200番目

210番目

220番目

230番目

240番目

250番目

260番目

270番目

280番目

290番目

300番目

310番目

320番目

330番目

340番目

350番目

360番目

370番目

380番目

390番目

400番目

410番目

420番目

430番目

440番目

450番目

460番目

470番目

480番目

490番目


50個の


オレンジリングだけを表示するには


オレンジリング500体の挙動の設定の中の

👇

for (int i = 0; i < 500; i++) {


if (orange_ring[i].life > 0) {




DrawGraph(orange_ring[i].x, orange_ring[i].y, orange_ring[i].graphichandle[(orange_ring[i].graphicnumber) / 128 % 7], TRUE);



}


}

👆


の部分を


👇

for (int i = 0; i < 500; i++) {


if (orange_ring[i].life > 0) {


if (i%10==0)//👈💖💖💖ここだよん


DrawGraph(orange_ring[i].x, orange_ring[i].y, orange_ring[i].graphichandle[(orange_ring[i].graphicnumber) / 128 % 7], TRUE);



}


}

👆


のように記述する


そうすれば


iが10の倍数をとるときだけ


iの番号を持つオレンジリングが表示されるわけだ


そうなると


0番目

10番目

20番目

30番目

40番目

50番目

60番目

70番目

80番目

90番目

100番目

110番目

120番目

130番目

140番目

150番目

160番目

170番目

180番目

190番目

200番目

210番目

220番目

230番目

240番目

250番目

260番目

270番目

280番目

290番目

300番目

310番目

320番目

330番目

340番目

350番目

360番目

370番目

380番目

390番目

400番目

410番目

420番目

430番目

440番目

450番目

460番目

470番目

480番目

490番目


50個の


オレンジリングは重なって表示されなくなる」



solarplexuss「オレンジリング本体の数は500体のまま


減らすことなく


表示されるオレンジリングの画像を


500体から50体に減らすなんて頭いい~~~~~~~~~」



マックス「い いや~💦


また


そうくるのか・・・」



ソーラー「それでは


オレンジリング本体の数は500体のまま


減らすことなく


表示されるオレンジリングの画像を


500体から50体に減らしてみましょう


ちゃんと


オレンジリングが重ならないよう表示されるかな


そのプログラムはこちらです

👇

#include "DxLib.h"


struct Character {

double x;

double y;

int graphichandle[7];

int graphicnumber;//👈🌞メンバ変数にgraphicnumber を追加しました

int life;

};


//👆🌞Characterの構造体宣言です



int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{



ChangeWindowMode(TRUE); // ウインドウモードに設定します


if (DxLib_Init() == -1) // DXライブラリを初期化処理しています

{

return -1; // DXライブラリの初期化に失敗したら直ちにプログラムを終了します

}




SetDrawScreen(DX_SCREEN_BACK);//👈🌞SetDrawScreen関数です 裏画面に画像を描きます printfDxで表示される文字も裏画面に描かれることになります





//👇🌞🌞🌞🌞🌞ここから自分の飛行機と赤い敵の飛行機の設定です





struct Character jibunnohikouki;

//👆🌞jibunnohikoukiの構造体変数宣言です


jibunnohikouki.x = 0;


jibunnohikouki.y = 0;


jibunnohikouki.graphichandle[0] = LoadGraph("画像データ\\ソーラーが描いた飛行機.bmp");


jibunnohikouki.graphichandle[1] = LoadGraph("画像データ\\ソーラーが描いた飛行機1.bmp");


jibunnohikouki.graphichandle[2] = LoadGraph("画像データ\\ソーラーが描いた飛行機2.bmp");


jibunnohikouki.graphichandle[3] = LoadGraph("画像データ\\ソーラーが描いた飛行機3.bmp");


jibunnohikouki.graphichandle[4] = LoadGraph("画像データ\\ソーラーが描いた飛行機4.bmp");


jibunnohikouki.graphichandle[5] = LoadGraph("画像データ\\ソーラーが描いた飛行機5.bmp");


jibunnohikouki.graphichandle[6] = LoadGraph("画像データ\\ソーラーが描いた飛行機6.bmp");


jibunnohikouki.life = 600;//👈🌞🌞🌞 jibunnohikouki.life に格納される値を600にしてみました🌞🌞🌞



jibunnohikouki.graphicnumber = 0;

//👆 jibunnohikouki.graphicnumberは😋自分の飛行機😋のアニメーションパターンをとりあつかっています


//👆🌞構造体変数jibunnohikoukiのメンバ変数の初期化を行っています

//👆 構造体変数jibunnohikoukiは😋自分の飛行機😋のデータをとりあつかっています



struct Character akaitekinohikouki[10];

//👆🌞敵の飛行機を10体登場させています


for (int i = 0; i < 10; i++) {


akaitekinohikouki[i].x = 1000;//💖ここです 1000で初期化しました


akaitekinohikouki[i].y = 35 * i;


akaitekinohikouki[i].graphichandle[0] = LoadGraph("画像データ\\赤い敵の飛行機1.8.bmp");


akaitekinohikouki[i].graphichandle[1] = LoadGraph("画像データ\\赤い敵の飛行機1.3.bmp");


akaitekinohikouki[i].graphichandle[2] = LoadGraph("画像データ\\赤い敵の飛行機2.3.bmp");


akaitekinohikouki[i].graphichandle[3] = LoadGraph("画像データ\\赤い敵の飛行機3.3.bmp");


akaitekinohikouki[i].graphichandle[4] = LoadGraph("画像データ\\赤い敵の飛行機4.3.bmp");


akaitekinohikouki[i].graphichandle[5] = LoadGraph("画像データ\\赤い敵の飛行機5.3.bmp");


akaitekinohikouki[i].graphichandle[6] = LoadGraph("画像データ\\赤い敵の飛行機6.5.bmp");




akaitekinohikouki[i].graphicnumber = 128 * GetRand(6);


//👆 akaitekinohikouki[i].graphicnumberは😋敵の飛行機😋のアニメーションパターンをとりあつかっています


//👆ここです🌞🌞🌞ここでAkai tekinohikouki[i].graphicnumberにランダムに0,128,256,384,512,640,768の値が代入されることになります




akaitekinohikouki[i].life = 100;//👈🌞🌞🌞敵の飛行機に自分の弾が100発当たると破壊されるようにしました




}


struct Character jibunnotama[11];

//🌞👆自分の弾を11個作成しています

for (int i = 0; i < 10; i = i + 1) {


jibunnotama[i].x = 0;

jibunnotama[i].y = 0;


jibunnotama[i].graphichandle[0] = LoadGraph("画像データ\\自分の弾.bmp");


jibunnotama[i].life = 0;


}


jibunnotama[10].x = 641;

jibunnotama[10].y = 0;


//🌞🌞🌞見えない弾にするために jibunnotama[10].graphichandle[0] は画像データで初期化しません

jibunnotama[10].life = 0;




struct Character jibunnotama_lazer[11];

//🌞👆自分のレーザー弾を11個作成しています

for (int i = 0; i < 10; i = i + 1) {


jibunnotama_lazer[i].x = 0;

jibunnotama_lazer[i].y = 0;


jibunnotama_lazer[i].graphichandle[0] = LoadGraph("画像データ\\レーザー.bmp");//👈🌞🌞🌞💖💖💖ここです 自分のレーザー弾の画像データを読み込みます




jibunnotama_lazer[i].life = 0;


}



jibunnotama_lazer[10].x = 641;

jibunnotama_lazer[10].y = 0;


//🌞🌞🌞見えないレーザー弾にするために jibunnotama[10].graphichandle[0] は初期化しません

jibunnotama_lazer[10].life = 0;






struct Character akaitekinohikoukinotama[10][10];


//🌞👆敵の飛行機、敵の飛行機1、敵の飛行機2、敵の飛行機3、敵の飛行機4、敵の飛行機5、敵の飛行機6、敵の飛行機7 、敵の飛行機8、敵の飛行機9、敵の飛行機10から発射される10個の敵の弾のデータをとりあつかうために100個の構造体変数を作成しています



for (int i = 0; i < 10; i = i + 1) {


for (int j = 0; j < 10; j = j + 1) {


akaitekinohikoukinotama[i][j].x = 1000;

akaitekinohikoukinotama[i][j].y = 1000;


akaitekinohikoukinotama[i][j].graphichandle[0] = LoadGraph("画像データ\\敵の飛行機の弾ハート.bmp");


akaitekinohikoukinotama[i][j].life = 0;


}


}





struct Character akaitekinohikoukinobakuhatunohonoo[10];

//👆🌞構造体変数akaitekinohikoukinobakuhatunohonoo[0], akaitekinohikoukinobakuhatunohonoo[1]… akaitekinohikoukinobakuhatunohonoo[9]を作成し爆発の炎のデータを取り扱います


for (int i = 0; i < 10; i++) {


akaitekinohikoukinobakuhatunohonoo[i].x = 0;


akaitekinohikoukinobakuhatunohonoo[i].y = 0;


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[0] = LoadGraph("画像データ\\爆発の炎.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[1] = LoadGraph("画像データ\\爆発の炎1.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[2] = LoadGraph("画像データ\\爆発の炎2.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[3] = LoadGraph("画像データ\\爆発の炎3.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[4] = LoadGraph("画像データ\\爆発の炎4.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[5] = LoadGraph("画像データ\\爆発の炎5.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[6] = LoadGraph("画像データ\\爆発の炎6.bmp");



akaitekinohikoukinobakuhatunohonoo[i].life = 0;//🌞🌞🌞 bakuhatunohonoo.lifeを初期化しています



akaitekinohikoukinobakuhatunohonoo[i].graphicnumber = 0; //🌞🌞🌞爆発の炎ごとにgraphicnumberを用意して初期化しています


}



struct Character akaitekinohikoukiwooouhikari;


akaitekinohikoukiwooouhikari.x = 0;


akaitekinohikoukiwooouhikari.y = 0;


akaitekinohikoukiwooouhikari.graphichandle[0] = LoadGraph("画像データ\\赤い敵の飛行機を覆う光.bmp");




akaitekinohikoukiwooouhikari.life = 0;




struct Character jibunnohikoukinobakuhatunohonoo;

//👆🌞構造体変数jibunnohikoukinobakuhatunohonooを作成し自分の飛行機の爆発の炎のデータを取り扱います




jibunnohikoukinobakuhatunohonoo.x = 0;


jibunnohikoukinobakuhatunohonoo.y = 0;


jibunnohikoukinobakuhatunohonoo.graphichandle[0] = LoadGraph("画像データ\\自分の飛行機の爆発の炎.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[1] = LoadGraph("画像データ\\自分の飛行機の爆発の炎1.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[2] = LoadGraph("画像データ\\自分の飛行機の爆発の炎2.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[3] = LoadGraph("画像データ\\自分の飛行機の爆発の炎3.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[4] = LoadGraph("画像データ\\自分の飛行機の爆発の炎4.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[5] = LoadGraph("画像データ\\自分の飛行機の爆発の炎5.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[6] = LoadGraph("画像データ\\自分の飛行機の爆発の炎6.bmp");



jibunnohikoukinobakuhatunohonoo.life = 0;//🌞🌞🌞 jibunnohikoukinobakuhatunohonoo.lifeを初期化しています



jibunnohikoukinobakuhatunohonoo.graphicnumber = 0; //🌞🌞🌞自分の飛行機の爆発の炎のgraphicnumberを用意して初期化しています



struct Character jibunnohikoukiwooouhikari;



jibunnohikoukiwooouhikari.x = 0;


jibunnohikoukiwooouhikari.y = 0;


jibunnohikoukiwooouhikari.graphichandle[0] = LoadGraph("画像データ\\ソーラーが描いた飛行機を覆う光.bmp");



jibunnohikoukiwooouhikari.life = 0;




int jibunnotama_tsix[11];//🌞🌞🌞jibunnotama_tsix[i]には自分の飛行機から発射される弾の最初の位置のx座標が代入されることになります tは弾、sは最初、iは位置、xはx座標を表しています


for (int i = 0; i < 11; i++) {


jibunnotama_tsix[i] = 0;


}






int jibunnotama_count[11];//🌞🌞🌞ここでint型の変数count[i](0<=i<=10)を作製し0で初期化しました


for (int i = 0; i < 11; i++) {


jibunnotama_count[i] = 0;


}




int jibunnotama_lazer_tsix[11];//🌞🌞🌞jibunnotama_lazer_tsix[i]には自分の飛行機から発射されるレーザー弾の最初の位置のx座標が代入されることになります tは弾、sは最初、iは位置、xはx座標を表しています


for (int i = 0; i < 11; i++) {


jibunnotama_lazer_tsix[i] = 0;


}






int jibunnotama_lazer_count[11];//🌞🌞🌞ここでint型の変数count[i] (0<=i<=10)を作製し0で初期化しました


for (int i = 0; i < 11; i++) {


jibunnotama_lazer_count[i] = 0;


}









int akaitekinohikoukinotama_count[10][10];


for (int i = 0; i < 10; i = i + 1) {


for (int j = 0; j < 10; j = j + 1) {


akaitekinohikoukinotama_count[i][j] = 0;


}


}


int akaitekinohikoukinotama_tsix[10][10]; //🌞🌞🌞 akaitekinohikoukinotama_tsix[i][j]には発射される敵の弾[i][j]の発射される位置のx座標が代入されることになります tは弾、sは最初、iは位置、xはx座標を表しています


for (int i = 0; i < 10; i = i + 1) {


for (int j = 0; j < 10; j = j + 1) {


akaitekinohikoukinotama_tsix[i][j] = 0;


}


}


double akaitekinohikoukinoidoupattern[4][3] = { {20,-0.1, 0.1},{20,-0.1,-0.1},{20,-0.1, 0.1},{20,-0.1,-0.1} };//👈🌞🌞🌞🌞🌞ここです。0.1、-0.1に注目です。敵の飛行機の移動速度は1ドットのときの10分の1になります



int akaitekinohikouki_m = 0;


int akaitekinohikouki_repeat = akaitekinohikoukinoidoupattern[0][0];






int hassyasareru_jibunnotama = 0;


int hassyasareru_akaitekinohikoukinotama[10];





for (int i = 0; i < 10; i++) {


hassyasareru_akaitekinohikoukinotama[i] = 0;


}


int hassyasareru_jibunnotama_lazer = 0;


//👆🌞🌞🌞🌞🌞ここまでが自分の飛行機と赤い敵の飛行機の設定です






//👇🌞🌞🌞🌞🌞ここからは敵の飛行機ルルの設定です




struct Character RuRu[1];

//👆🌞敵の飛行機ルルを1体登場させています


for (int i = 0; i < 1; i++) {


RuRu[i].x = 605;


RuRu[i].y = 200;


RuRu[i].graphichandle[0] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[1] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[2] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[3] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[4] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[5] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[6] = LoadGraph("画像データ\\ルル18.bmp");




RuRu[i].graphicnumber = 128 * GetRand(6);


//👆 RuRu[i].graphicnumberは😋敵の飛行機ルル😋のアニメーションパターンをとりあつかっています


//👆ここです🌞🌞🌞ここでRuRu[i].graphicnumberにランダムに0,128,256,384,512,640,768の値が代入されることになります




RuRu[i].life = 10000;//👈🌞🌞🌞敵の飛行機ルルに自分の弾が10000発当たると破壊されるようにしました




}





struct Character RuRunotama[1][10];



//🌞👆敵の飛行機(ルル)から発射される10個の敵の弾のデータをとりあつかうために10個の構造体変数を作成しています



for (int i = 0; i < 1; i = i + 1) {


for (int j = 0; j < 10; j = j + 1) {


RuRunotama[i][j].x = 1000;

RuRunotama[i][j].y = 1000;


RuRunotama[i][j].graphichandle[0] = LoadGraph("画像データ\\敵の飛行機の弾ハート.bmp");


RuRunotama[i][j].life = 0;


}


}


struct Character RuRuwooouhikari;


RuRuwooouhikari.x = 0;


RuRuwooouhikari.y = 0;


RuRuwooouhikari.graphichandle[0] = LoadGraph("画像データ\\ルルを覆う光0.1.bmp");//👈🌞🌞🌞💖画像をルルを覆う光0.1に変更しました




RuRuwooouhikari.life = 0;



struct Character RuRunobakuhatunohonoo[1];

//👆🌞構造体変数RuRunobakuhatunohonoo[0]を作成しルルの爆発の炎のデータを取り扱います


for (int i = 0; i < 1; i++) {


RuRunobakuhatunohonoo[i].x = 0;


RuRunobakuhatunohonoo[i].y = 0;


RuRunobakuhatunohonoo[i].graphichandle[0] = LoadGraph("画像データ\\ルルの爆発の炎0.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[1] = LoadGraph("画像データ\\ルルの爆発の炎1.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[2] = LoadGraph("画像データ\\ルルの爆発の炎2.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[3] = LoadGraph("画像データ\\ルルの爆発の炎3.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[4] = LoadGraph("画像データ\\ルルの爆発の炎4.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[5] = LoadGraph("画像データ\\ルルの爆発の炎5.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[6] = LoadGraph("画像データ\\ルルの爆発の炎6.1bmp");



RuRunobakuhatunohonoo[i].life = 0;//🌞🌞🌞 RuRunobakuhatunohonoo[0].lifeを初期化しています



RuRunobakuhatunohonoo[i].graphicnumber = 0; //🌞🌞🌞ルルの爆発の炎をアニメーションさせるためのgraphicnumberを用意して初期化しています


}





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;


}


}


double RuRunoidoupattern[4][3] = { {20,-0.1, 0.1},{20,-0.1,-0.1},{20,-0.1, 0.1},{20,-0.1,-0.1} };//👈🌞🌞🌞🌞🌞ここです。0.1,-0.1に注目。敵の飛行機ルルの移動速度は1ドットのときの10分の1になります


int RuRu_m = 0;


int RuRu_repeat = RuRunoidoupattern[0][0];




int hassyasareru_RuRunotama[1];



for (int i = 0; i < 1; i++) {


hassyasareru_RuRunotama[i] = 0;


}





//👆🌞🌞🌞🌞🌞ここまでが敵の飛行機ルルの設定です



//👇🌞🌞🌞🌞🌞ここから敵の飛行機ミミの設定です


struct Character MiMi;

//👆🌞MiMiの構造体変数宣言です


MiMi.x = 340;


MiMi.y = 200;


MiMi.graphichandle[0] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[1] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[2] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[3] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[4] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[5] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[6] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.life = 5;//👈🌞🌞🌞 MiMi.life に格納される値を5にしてみました🌞🌞🌞



MiMi.graphicnumber = 0;

//👆 MiMi.graphicnumberは😋ミミ😋のアニメーションパターンをとりあつかっています


//👆🌞構造体変数MiMiのメンバ変数の初期化を行っています

//👆 構造体変数MiMiは😋ミミ😋のデータをとりあつかっています


//👆🌞🌞🌞🌞🌞ここまで敵の飛行機ミミの設定です





//🌞🌞🌞👇ここからがオレンジリング500体の設定です


struct Character orange_ring[500];

//👆🌞オレンジリングを500体登場させています


for (int i = 0; i < 500; i++) {


orange_ring[i].x = 590;


orange_ring[i].y = 200;


orange_ring[i].graphichandle[0] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[1] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[2] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[3] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[4] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[5] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[6] = LoadGraph("画像データ\\オレンジリング.bmp");




orange_ring[i].graphicnumber = 0;


//👆 orange_ring[i].graphicnumberは😋オレンジリング😋のアニメーションパターンをとりあつかっています


orange_ring[i].life = 100;//👈🌞🌞🌞オレンジリングに自分の弾が100発当たると破壊されるようにしました




}


double orange_ringnoidoupattern[4][3] = { {2000,-5, 0},{2000,0,-5},{2000,5, 0},{2000,0,5} };//👈🌞🌞🌞🌞🌞ここです。5、-5に注目です。オレンジリングはwhile{}文のブロック{}内の命令文が1回繰り返し実行されるたびに5ドット単位で移動することになります


int orange_ring_m = 0;


int orange_ring_repeat = orange_ringnoidoupattern[0][0];



//🌞🌞🌞👆ここまでがオレンジリング500体の設定です








//👇レーザーマークの設定を行なっています


struct Character lazermark;


//👆🌞 lazermarkの構造体変数宣言です


lazermark.x = 640;


lazermark.y = 240;


lazermark.graphichandle[0] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[1] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[2] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[3] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[4] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[5] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[6] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.life = 0;//👈🌞🌞🌞 lazermark.life に格納される値を0にしてみました🌞🌞🌞



lazermark.graphicnumber = 0;

//👆 lazermark.graphicnumberは😋レーザーマーク😋のアニメーションパターンをとりあつかっています


//👆🌞構造体変数lazermarkのメンバ変数の初期化を行っています

//👆 構造体変数lazermarkは😋レーザーマーク😋のデータをとりあつかっています


double lazermarknoidoupattern[4][3] = { {20,-1, 1},{20,-1,-1},{20,-1, 1},{20,-1,-1} };


int lazermark_m = 0;


int lazermark_repeat = lazermarknoidoupattern[0][0];


//👆レーザーマークの設定を行なっています



//👇ミサイルマークの設定を行なっています


struct Character misslemark;


//👆🌞 misslemarkの構造体変数宣言です


misslemark.x = 640;


misslemark.y = 240;


misslemark.graphichandle[0] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[1] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[2] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[3] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[4] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[5] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[6] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.life = 0;//👈🌞🌞🌞 misslemark.life に格納される値は0で初期化してみました🌞🌞🌞



misslemark.graphicnumber = 0;

//👆 misslemark.graphicnumberは😋ミサイルマーク😋のアニメーションパターンをとりあつかっています


//👆🌞構造体変数misslemarkのメンバ変数の初期化を行っています

//👆 構造体変数misslemarkは😋ミサイルマーク😋のデータをとりあつかっています


double misslemarknoidoupattern[4][3] = { {20,-1, 1},{20,-1,-1},{20,-1, 1},{20,-1,-1} };


int misslemark_m = 0;


int misslemark_repeat = misslemarknoidoupattern[0][0];


//👆ミサイルマークの設定を行なっています



int jibunnotamamode = 0;

int option_nekonotamamode = 0;

//初期設定ではjibunnotamamodeとoption_nekonotamamodeに格納されている値は0なので自分の飛行機から普通の弾が発射されます




//👇🌞オプション猫の設定です


struct Character option_neko;

//👆🌞option_nekoの構造体変数宣言です


option_neko.x = 100;//オプション猫のいる位置のx座標です


option_neko.y = 240;//オプション猫のいる位置のy座標です


option_neko.graphichandle[0] = LoadGraph("画像データ\\オプション猫.bmp");


option_neko.graphichandle[1] = LoadGraph("画像データ\\オプション猫1.bmp");


option_neko.graphichandle[2] = LoadGraph("画像データ\\オプション猫2.bmp");


option_neko.graphichandle[3] = LoadGraph("画像データ\\オプション猫3.bmp");


option_neko.graphichandle[4] = LoadGraph("画像データ\\オプション猫4.bmp");


option_neko.graphichandle[5] = LoadGraph("画像データ\\オプション猫5.bmp");


option_neko.graphichandle[6] = LoadGraph("画像データ\\オプション猫6.bmp");


option_neko.life = 600;//👈🌞🌞🌞 option_neko.life に格納される値を600にしてみました🌞🌞🌞



option_neko.graphicnumber = 0;

//👆 option_neko.graphicnumberは😋オプション猫😋のアニメーションパターンをとりあつかっています


//👆🌞構造体変数option_nekoのメンバ変数の初期化を行っています

//👆 構造体変数option_nekoは😋オプション猫😋のデータをとりあつかっています




struct Character option_nekonotama[11];

//🌞👆オプション猫の弾を11個作成しています

for (int i = 0; i < 10; i = i + 1) {


option_nekonotama[i].x = 0;

option_nekonotama[i].y = 0;


option_nekonotama[i].graphichandle[0] = LoadGraph("画像データ\\自分の弾.bmp");


option_nekonotama[i].life = 0;


}


option_nekonotama[10].x = 641;

option_nekonotama[10].y = 0;


//🌞🌞🌞見えない弾にするために option_nekonotama[10].graphichandle[0] は画像データで初期化しません

option_nekonotama[10].life = 0;


//👆🌞🌞🌞自分の飛行機とオプション猫から発射させる弾を一致させるために同じ画像データを読み込んでいます



struct Character option_nekonotama_lazer[11];

//🌞👆オプション猫のレーザー弾を11個作成しています

for (int i = 0; i < 10; i = i + 1) {


option_nekonotama_lazer[i].x = 0;

option_nekonotama_lazer[i].y = 0;


option_nekonotama_lazer[i].graphichandle[0] = LoadGraph("画像データ\\レーザー.bmp");//👈🌞🌞🌞💖💖💖ここです オプション猫のレーザー弾の画像データを読み込みます




option_nekonotama_lazer[i].life = 0;


}



option_nekonotama_lazer[10].x = 641;

option_nekonotama_lazer[10].y = 0;


//🌞🌞🌞見えないレーザー弾にするために option_nekonotama[10].graphichandle[0] は初期化しません

option_nekonotama_lazer[10].life = 0;



//👆🌞🌞🌞自分の飛行機とオプション猫から発射させる弾を一致させるために同じ画像データを読み込んでいます



struct Character option_nekonobakuhatunohonoo;

//👆🌞構造体変数option_nekonobakuhatunohonooを作成し自分の飛行機の爆発の炎のデータを取り扱います




option_nekonobakuhatunohonoo.x = 0;


option_nekonobakuhatunohonoo.y = 0;


option_nekonobakuhatunohonoo.graphichandle[0] = LoadGraph("画像データ\\自分の飛行機の爆発の炎.bmp");


option_nekonobakuhatunohonoo.graphichandle[1] = LoadGraph("画像データ\\自分の飛行機の爆発の炎1.bmp");


option_nekonobakuhatunohonoo.graphichandle[2] = LoadGraph("画像データ\\自分の飛行機の爆発の炎2.bmp");


option_nekonobakuhatunohonoo.graphichandle[3] = LoadGraph("画像データ\\自分の飛行機の爆発の炎3.bmp");


option_nekonobakuhatunohonoo.graphichandle[4] = LoadGraph("画像データ\\自分の飛行機の爆発の炎4.bmp");


option_nekonobakuhatunohonoo.graphichandle[5] = LoadGraph("画像データ\\自分の飛行機の爆発の炎5.bmp");


option_nekonobakuhatunohonoo.graphichandle[6] = LoadGraph("画像データ\\自分の飛行機の爆発の炎6.bmp");



option_nekonobakuhatunohonoo.life = 0;//🌞🌞🌞 option_nekonobakuhatunohonoo.lifeを初期化しています



option_nekonobakuhatunohonoo.graphicnumber = 0; //🌞🌞🌞自分の飛行機の爆発の炎のgraphicnumberを用意して初期化しています



struct Character option_nekowooouhikari;



option_nekowooouhikari.x = 0;


option_nekowooouhikari.y = 0;


option_nekowooouhikari.graphichandle[0] = LoadGraph("画像データ\\ニャーが表示される画像7.bmp");



option_nekowooouhikari.life = 0;




int option_nekonotama_tsix[11];//🌞🌞🌞 option_nekonotama_tsix[i]にはオプション猫の飛行機から発射される弾の最初の位置のx座標が代入されることになります tは弾、sは最初、iは位置、xはx座標を表しています


for (int i = 0; i < 11; i++) {


option_nekonotama_tsix[i] = 0;


}






int option_nekonotama_count[11];//🌞🌞🌞ここでint型の変数option_nekonotama_count[i](0<=i<=10)を作製し0で初期化しました


for (int i = 0; i < 11; i++) {


option_nekonotama_count[i] = 0;


}




int option_nekonotama_lazer_tsix[11];//🌞🌞🌞 option_nekonotama_lazer_tsix[i]にはオプション猫から発射されるレーザー弾の最初の位置のx座標が代入されることになります tは弾、sは最初、iは位置、xはx座標を表しています


for (int i = 0; i < 11; i++) {


option_nekonotama_lazer_tsix[i] = 0;


}






int option_nekonotama_lazer_count[11];//🌞🌞🌞ここでint型の変数option_nekonotama_lazer_ count[i] (0<=i<=10)を作製し0で初期化しました


for (int i = 0; i < 11; i++) {


option_nekonotama_lazer_count[i] = 0;


}



int hassyasareru_option_nekonotama = 0;


int hassyasareru_option_nekonotama_lazer = 0;


int option_neko_counter = 0;


//👆🌞🌞🌞🌞🌞ここまでがオプション猫の設定です





//👆🌞オプション猫の設定です




int FontHandle;


FontHandle = CreateFontToHandle(NULL, 10, 3);

// 👆CreateFontToHandle(NULL, 10, 3)が実行されると書体のデータ(フォント)に対応する値が戻り値としてCreateFontToHandle(NULL, 10, 3)に返されます

// 👆FontHandle に書体のデータ(フォント)に対応する値を代入しています






int FontHandle1;


FontHandle1 = CreateFontToHandle(NULL, 15, 0);

// 👆CreateFontToHandle(NULL, 15, 0)が実行されると書体のデータ(フォント)に対応する値が戻り値としてCreateFontToHandle(NULL, 15, 0)に返されます

// 👆FontHandle1に書体のデータ(フォント)に対応する値を代入しています




SetFontSize(8);



int framecounter = 0;//👈🌞🌞🌞フレームカウンターを0で初期化しています















while (CheckHitKey(KEY_INPUT_ESCAPE) == 0 && ProcessMessage() == 0) {



//👇🌞🌞🌞今 何フレーム目なのかを表示します


DrawStringToHandle(0, 0, "frame counter", GetColor(255, 255, 255), FontHandle1);//👈🌞🌞🌞FontHandle1が用いられています


framecounter = framecounter + 1;


DrawFormatString(110, 5, GetColor(255, 255, 255), "%d", framecounter);




//👆🌞🌞🌞今 何フレーム目なのかを表示します




//👇🌞🌞🌞ライフゲージの設定です


DrawBox(100, 100, 500, 300, GetColor(0, 255, 255), TRUE);



DrawBox(20, 458, 624, 472, GetColor(255, 255, 0), TRUE);


DrawBox(22, 460, 622, 470, GetColor(255, 255, 255), TRUE);//




DrawBox(22, 460, jibunnohikouki.life + 22, 470, GetColor(255, 0, 255), TRUE);




DrawStringToHandle(0, 460, "LIFE", GetColor(255, 255, 255), FontHandle);//👈🌞🌞🌞FontHandleが用いられています




DrawFormatString(625, 460, GetColor(255, 255, 255), "%d", jibunnohikouki.life);



//👆🌞🌞🌞ライフゲージの設定です




//👇🌞🌞🌞自分の飛行機の挙動の設定の部分です


int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);



if (jibunnohikouki.life > 0) {


if (4 <= jibunnohikouki.y && jibunnohikouki.y <= 460) {

if (key & PAD_INPUT_UP) jibunnohikouki.y = jibunnohikouki.y - 4;

}



if (0 <= jibunnohikouki.y && jibunnohikouki.y <= 456) {


if (key & PAD_INPUT_DOWN) jibunnohikouki.y = jibunnohikouki.y + 4;

}


if (4 <= jibunnohikouki.x && jibunnohikouki.x <= 605) {


if (key & PAD_INPUT_LEFT) jibunnohikouki.x = jibunnohikouki.x - 4;

}


if (0 <= jibunnohikouki.x && jibunnohikouki.x <= 601) {


if (key & PAD_INPUT_RIGHT) jibunnohikouki.x = jibunnohikouki.x + 4;

}


}


if (jibunnohikouki.life > 0) {


DrawGraph(jibunnohikouki.x, jibunnohikouki.y, jibunnohikouki.graphichandle[(jibunnohikouki.graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞🌞 jibunnohikouki.graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞


jibunnohikouki.graphicnumber = jibunnohikouki.graphicnumber + 1;


}


//👆 jibunnohikouki.lifeに格納されている値が0より大きければ自分の飛行機の画像を描きます

//👆jibunnohikouki.lifeに格納されている値が0なら自分の飛行機の画像が描かれることはありません



if (jibunnohikoukiwooouhikari.life > 0) {



SetDrawBlendMode(DX_BLENDMODE_ALPHA, 200);


//👆🌞🌞🌞描画ブレンドモードがアルファブレンドになっています


DrawGraph(jibunnohikoukiwooouhikari.x, jibunnohikoukiwooouhikari.y, jibunnohikoukiwooouhikari.graphichandle[0], TRUE);



SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);

jibunnohikoukiwooouhikari.life = jibunnohikoukiwooouhikari.life - 1;


// 👆🌞🌞🌞描画ブレンドモードをノーブレンドにして描画ブレンドモードを解除しています

}



//👆🌞🌞🌞自分の飛行機を覆う光の画像が描かれます jibunnohikoukiwooouhikari.lifeに格納されている値が0になると自分の飛行機を覆う光の画像が描かれることはありません




if (jibunnohikoukinobakuhatunohonoo.life > 0) {


DrawGraph(jibunnohikoukinobakuhatunohonoo.x, jibunnohikoukinobakuhatunohonoo.y, jibunnohikoukinobakuhatunohonoo.graphichandle[(jibunnohikoukinobakuhatunohonoo.graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞 jibunnohikoukinobakuhatunohonoo.graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞

jibunnohikoukinobakuhatunohonoo.graphicnumber = jibunnohikoukinobakuhatunohonoo.graphicnumber + 1;

//👆🌞🌞🌞自分の飛行機の爆発の炎がアニメーションするよう設定が行われています



jibunnohikoukinobakuhatunohonoo.life = jibunnohikoukinobakuhatunohonoo.life - 1;



}


//👆 jibunnohikoukinobakuhatunohonoo.lifeに格納されている値が1以上なら自分の飛行機の爆発の炎の画像を描きます

//👆 jibunnohikoukinobakuhatunohonoo.lifeに格納されている値が0なら自分の飛行機の爆発の炎の画像が描かれることはありません





//👇🌞🌞🌞新型 自分の飛行機から弾が10連射されるプログラムです


//👇新たに11個目の弾jibunnotama[10]の登場です


if (jibunnohikouki.life > 0)


if (jibunnotamamode == 0)


if (jibunnotama[10].x > 640)

if (key & PAD_INPUT_A) {


if (jibunnotama[0].life == 0 && hassyasareru_jibunnotama == 0) {


jibunnotama[0].x = jibunnohikouki.x + 10;


jibunnotama[0].y = jibunnohikouki.y + 10;


jibunnotama_tsix[0] = jibunnotama[0].x;


jibunnotama[0].life = 1;


hassyasareru_jibunnotama = 1;


jibunnotama_count[0] = 30;//👈連射される自分の弾の最初の弾と次弾の間隔を調整することができます


}


}




for (int i = 0; i < 10; i++) {


if (jibunnotama_count[i] > 0) { jibunnotama_count[i] = jibunnotama_count[i] - 1; }



if (jibunnotama_count[i] == 0 && hassyasareru_jibunnotama == i + 1) {


if (jibunnotama[i + 1].life == 0) {


jibunnotama[i + 1].x = jibunnohikouki.x + 10;


jibunnotama[i + 1].y = jibunnohikouki.y + 10;


jibunnotama_tsix[i + 1] = jibunnotama[i + 1].x;


jibunnotama[i + 1].life = 1;


hassyasareru_jibunnotama = i + 2;


jibunnotama_count[i + 1] = 30;


}


}


}


if (jibunnotama_count[10] > 0) { jibunnotama_count[10] = jibunnotama_count[10] - 1; }




if (jibunnotama_count[10] == 0 && hassyasareru_jibunnotama == 11) {


hassyasareru_jibunnotama = 0;


}






for (int i = 0; i < 11; i = i + 1) {


if (jibunnotama[i].life == 1) {

//🌞🌞🌞 jibunnotama[i].lifeに1が代入されていると自分の弾jibunnnotama[i]がゲーム画面に表示されることになります jibunnnotama[i].lifeに0が代入されていると自分の弾jibunnnotama[i]がゲーム画面に表示されることはありません

DrawGraph(jibunnotama[i].x, jibunnotama[i].y, jibunnotama[i].graphichandle[0], TRUE);


jibunnotama[i].x = jibunnotama[i].x + 1;


if (jibunnotama[i].x - jibunnotama_tsix[i] > 640)


//🌞🌞🌞発射された自分の弾jibunnnotama[i]の位置のx座標が最初に自分の弾jibunnnotama[i]が発射されたときのjibunnnotama[i]の位置のx座標から🍑左へ🍑640を超えて離れると条件式jibunnotama[i].x - jibunnotama_tsix[i]は真の値1をとることになります

//🌞🌞🌞🌞🌞👆 jibunnnotama_tsix[i]には自分の弾jibunnnotama[i]が発射されたときの自分の弾jibunnnotama[i]のいる位置のx座標を記憶していたのでjibunnnotama[i].xが自分の弾jibunnnotama[i]が発射されたときの自分の弾jibunnnotama[i]のいる位置から640ドットを超えて離れた時、条件式jibunnotama[i].x- jibunnotama_tsix[i] > 640は真の値1を持つことになります

jibunnotama[i].life = 0;


}


}


//👆🌞🌞🌞新型 自分の飛行機から弾が10連射されるプログラムです




//👇🌞🌞🌞新型 自分の飛行機から💖レーザー弾💖が10連射されるプログラムです


//👇新たに11個目のレーザー弾jibunnotama_lazer[10]の登場です


if (jibunnohikouki.life > 0)


if (jibunnotamamode == 1)


if (jibunnotama_lazer[10].x > 640)


if (key & PAD_INPUT_A) {


if (jibunnotama_lazer[0].life == 0 && hassyasareru_jibunnotama_lazer == 0) {


jibunnotama_lazer[0].x = jibunnohikouki.x + 10;


jibunnotama_lazer[0].y = jibunnohikouki.y + 10;


jibunnotama_lazer_tsix[0] = jibunnotama_lazer[0].x;


jibunnotama_lazer[0].life = 1;


hassyasareru_jibunnotama_lazer = 1;


jibunnotama_lazer_count[0] = 30;//👈連射される自分のレーザー弾の最初の弾と次弾の間隔を調整することができます


}


}




for (int i = 0; i < 10; i++) {


if (jibunnotama_lazer_count[i] > 0) { jibunnotama_lazer_count[i] = jibunnotama_lazer_count[i] - 1; }



if (jibunnotama_lazer_count[i] == 0 && hassyasareru_jibunnotama_lazer == i + 1) {


if (jibunnotama_lazer[i + 1].life == 0) {


jibunnotama_lazer[i + 1].x = jibunnohikouki.x + 10;


jibunnotama_lazer[i + 1].y = jibunnohikouki.y + 10;


jibunnotama_lazer_tsix[i + 1] = jibunnotama[i + 1].x;


jibunnotama_lazer[i + 1].life = 1;


hassyasareru_jibunnotama_lazer = i + 2;


jibunnotama_lazer_count[i + 1] = 30;


}


}


}


if (jibunnotama_lazer_count[10] > 0) { jibunnotama_lazer_count[10] = jibunnotama_lazer_count[10] - 1; }




if (jibunnotama_lazer_count[10] == 0 && hassyasareru_jibunnotama_lazer == 11) {


hassyasareru_jibunnotama_lazer = 0;


}






for (int i = 0; i < 11; i = i + 1) {


if (jibunnotama_lazer[i].life > 0) {

//🌞🌞🌞 jibunnotama_lazer[i].lifeに0より大きな値が代入されていると自分のレーザー弾jibunnotama_lazer[i]がゲーム画面に表示されることになります jibunnotama_lazer[i].lifeに0が代入されていると自分のレーザー弾jibunnotama_lazer[i]がゲーム画面に表示されることはありません

DrawGraph(jibunnotama_lazer[i].x, jibunnotama_lazer[i].y, jibunnotama_lazer[i].graphichandle[0], TRUE);


jibunnotama_lazer[i].x = jibunnotama_lazer[i].x + 1;


if (jibunnotama_lazer[i].x - jibunnotama_lazer_tsix[i] > 640)

//🌞🌞🌞発射された自分のレーザー弾jibunnotama_lazer[i]の位置のx座標が発射されたときの最初の自分のレーザー弾jibunnotama_lazer[i]の位置のx座標から🍑左へ🍑640を超えて離れると条件式jibunnotama_lazer[i].x - jibunnotama_lazer_tsix[i]は真の値1をとることになります

//🌞🌞🌞🌞🌞👆 jibunnotama_lazer_tsix[i]には自分のレーザー弾jibunnotama_lazer[i]が発射されたときの自分のレーザー弾jibunnotama_lazer[i]のいる位置のx座標を記憶していたのでjibunnotama_lazer[i].xが自分の弾jibunnotama_lazer[i]が発射されたときの自分のレーザー弾jibunnotama_lazer[i]のいる位置から640ドット離れた時、条件式jibunnotama_lazer[i].x- jibunnotama_lazer_tsix[i] > 640は真の値1を持つことになります

jibunnotama_lazer[i].life = 0;


}


}


//👆🌞🌞🌞新型 自分の飛行機から💖レーザー弾💖が10連射されるプログラムです





//👆🌞🌞🌞自分の飛行機の挙動の設定の部分です




//👇🌞🌞🌞オプション猫の挙動の設定の部分です


if (option_neko_counter == 0)


if (option_neko.life > 0) {


option_neko.x = jibunnohikouki.x - 30;


option_neko.y = jibunnohikouki.y + 50;


option_neko_counter = 5;



}



option_neko_counter = option_neko_counter - 1;


if (option_neko_counter >= 0)


if (option_neko.life > 0) {


DrawGraph(option_neko.x, option_neko.y, option_neko.graphichandle[(option_neko.graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞🌞 option_neko.graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞


option_neko.graphicnumber = option_neko.graphicnumber + 1;


}


//👆 option_neko.lifeに格納されている値が0より大きければオプション猫の画像を描きます

//👆 option_neko.lifeに格納されている値が0ならオプション猫の画像が描かれることはありません



if (option_nekowooouhikari.life > 0) {



SetDrawBlendMode(DX_BLENDMODE_ALPHA, 200);


//👆🌞🌞🌞描画ブレンドモードがアルファブレンドになっています


DrawGraph(option_nekowooouhikari.x, option_nekowooouhikari.y, option_nekowooouhikari.graphichandle[0], TRUE);



SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);

option_nekowooouhikari.life = option_nekowooouhikari.life - 1;


// 👆🌞🌞🌞描画ブレンドモードをノーブレンドにして描画ブレンドモードを解除しています

}



//👆🌞🌞🌞オプション猫の飛行機を覆う光の画像が描かれます option_nekowooouhikari.lifeに格納されている値が0になるとオプション猫を覆う光の画像が描かれることはありません




if (option_nekonobakuhatunohonoo.life > 0) {


DrawGraph(option_nekonobakuhatunohonoo.x, option_nekonobakuhatunohonoo.y, option_nekonobakuhatunohonoo.graphichandle[(option_nekonobakuhatunohonoo.graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞 option_nekonobakuhatunohonoo.graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞

option_nekonobakuhatunohonoo.graphicnumber = option_nekonobakuhatunohonoo.graphicnumber + 1;

//👆🌞🌞🌞オプション猫の爆発の炎がアニメーションするよう設定が行われています



option_nekonobakuhatunohonoo.life = option_nekonobakuhatunohonoo.life - 1;



}


//👆 option_nekonobakuhatunohonoo.lifeに格納されている値が0より大きければオプション猫の爆発の炎の画像を描きます

//👆 option_nekonobakuhatunohonoo.lifeに格納されている値が0ならオプション猫の爆発の炎の画像が描かれることはありません





//👇🌞🌞🌞新型 オプション猫から弾が10連射されるプログラムです


//👇新たに11個目の弾option_nekonotama[10]の登場です


if (option_neko.life > 0)


if (option_nekonotamamode == 0)


if (option_nekonotama[10].x > 640)

if (key & PAD_INPUT_A) {


if (option_nekonotama[0].life == 0 && hassyasareru_option_nekonotama == 0) {


option_nekonotama[0].x = option_neko.x + 10;


option_nekonotama[0].y = option_neko.y + 10;


option_nekonotama_tsix[0] = option_nekonotama[0].x;


option_nekonotama[0].life = 1;


hassyasareru_option_nekonotama = 1;


option_nekonotama_count[0] = 30;//👈連射されるオプション猫の弾の最初の弾と次弾の間隔を調整することができます


}


}




for (int i = 0; i < 10; i++) {


if (option_nekonotama_count[i] > 0) { option_nekonotama_count[i] = option_nekonotama_count[i] - 1; }



if (option_nekonotama_count[i] == 0 && hassyasareru_option_nekonotama == i + 1) {


if (option_nekonotama[i + 1].life == 0) {


option_nekonotama[i + 1].x = option_neko.x + 10;


option_nekonotama[i + 1].y = option_neko.y + 10;


option_nekonotama_tsix[i + 1] = option_neko.x;


option_nekonotama[i + 1].life = 1;


hassyasareru_option_nekonotama = i + 2;


option_nekonotama_count[i + 1] = 30;


}


}


}


if (option_nekonotama_count[10] > 0) { option_nekonotama_count[10] = option_nekonotama_count[10] - 1; }




if (option_nekonotama_count[10] == 0 && hassyasareru_option_nekonotama == 11) {


hassyasareru_option_nekonotama = 0;


}






for (int i = 0; i < 11; i = i + 1) {


if (option_nekonotama[i].life == 1) {

//🌞🌞🌞 option_nekonotama[i].lifeに1が代入されているとオプション猫の弾option_nekonotama[i]がゲーム画面に表示されることになります option_nekonotama[i].lifeに0が代入されているとオプション猫の弾option_nekonotama[i]がゲーム画面に表示されることはありません

DrawGraph(option_nekonotama[i].x, option_nekonotama[i].y, option_nekonotama[i].graphichandle[0], TRUE);


option_nekonotama[i].x = option_nekonotama[i].x + 1;


if (option_nekonotama[i].x - option_nekonotama_tsix[i] > 640)

//🌞🌞🌞発射されたオプション猫の弾option_nekonotama[i]の位置のx座標が最初にオプション猫の弾option_nekonotama[i]が発射されたときのoption_nekonotama[i]の位置のx座標から🍑左へ🍑640を超えて離れると条件式option_nekonotama[i].x - option_nekonotama_tsix[i]は真の値1をとることになります

//🌞🌞🌞🌞🌞👆 option_nekonotama_tsix[i]にはオプション猫の弾option_nekonotama[i]が発射されたときのオプション猫の弾option_nekonotama[i]のいる位置のx座標を記憶していたのでoption_nekonotama[i].xがオプション猫の弾option_nekonotama[i]が発射されたときのオプション猫の弾option_nekonotama[i]のいる位置から640ドットを超えて離れた時、条件式option_nekonotama[i].x- option_nekonotama_tsix[i] > 640は真の値1を持つことになります

option_nekonotama[i].life = 0;


}


}


//👆🌞🌞🌞新型 オプション猫から弾が10連射されるプログラムです




//👇🌞🌞🌞新型 オプション猫から💖レーザー弾💖が10連射されるプログラムです


//👇新たに11個目のレーザー弾option_nekonotama_lazer[10]の登場です


if (option_neko.life > 0)


if (option_nekonotamamode == 1)


if (option_nekonotama_lazer[10].x > 640)


if (key & PAD_INPUT_A) {


if (option_nekonotama_lazer[0].life == 0 && hassyasareru_option_nekonotama_lazer == 0) {


option_nekonotama_lazer[0].x = option_neko.x + 10;


option_nekonotama_lazer[0].y = option_neko.y + 10;


option_nekonotama_lazer_tsix[0] = option_nekonotama_lazer[0].x;


option_nekonotama_lazer[0].life = 1;


hassyasareru_option_nekonotama_lazer = 1;


option_nekonotama_lazer_count[0] = 30;//👈連射される自分のレーザー弾の最初の弾と次弾の間隔を調整することができます


}


}




for (int i = 0; i < 10; i++) {


if (option_nekonotama_lazer_count[i] > 0) { option_nekonotama_lazer_count[i] = option_nekonotama_lazer_count[i] - 1; }



if (option_nekonotama_lazer_count[i] == 0 && hassyasareru_option_nekonotama_lazer == i + 1) {


if (option_nekonotama_lazer[i + 1].life == 0) {


option_nekonotama_lazer[i + 1].x = option_neko.x + 10;


option_nekonotama_lazer[i + 1].y = option_neko.y + 10;


option_nekonotama_lazer_tsix[i + 1] = option_nekonotama[i + 1].x;


option_nekonotama_lazer[i + 1].life = 1;


hassyasareru_option_nekonotama_lazer = i + 2;


option_nekonotama_lazer_count[i + 1] = 30;


}


}


}


if (option_nekonotama_lazer_count[10] > 0) { option_nekonotama_lazer_count[10] = option_nekonotama_lazer_count[10] - 1; }




if (jibunnotama_lazer_count[10] == 0 && hassyasareru_option_nekonotama_lazer == 11) {


hassyasareru_option_nekonotama_lazer = 0;


}






for (int i = 0; i < 11; i = i + 1) {


if (option_nekonotama_lazer[i].life == 1) {

//🌞🌞🌞 option_nekonotama_lazer[i].lifeに1が代入されているとオプション猫のレーザー弾option_nekonotama_lazer[i]がゲーム画面に表示されることになります option_nekonotama_lazer[i].lifeに0が代入されているとオプション猫のレーザー弾option_nekonotama_lazer[i]がゲーム画面に表示されることはありません

DrawGraph(option_nekonotama_lazer[i].x, option_nekonotama_lazer[i].y, option_nekonotama_lazer[i].graphichandle[0], TRUE);


option_nekonotama_lazer[i].x = option_nekonotama_lazer[i].x + 1;


if (option_nekonotama_lazer[i].x - option_nekonotama_lazer_tsix[i] > 640)

//🌞🌞🌞発射されたオプション猫のレーザー弾option_nekonotama_lazer[i]の位置のx座標が発射されたときの最初のオプション猫のレーザー弾option_nekonotama_lazer[i]の位置のx座標から🍑左へ🍑640を超えて離れると条件式option_nekonotama_lazer[i].x - option_nekonotama_lazer_tsix[i]は真の値1をとることになります

//🌞🌞🌞🌞🌞👆 option_nekonotama_lazer_tsix[i]にはオプション猫のレーザー弾option_nekonotama_lazer[i]が発射されたときのオプション猫のレーザー弾option_nekonotama_lazer[i]のいる位置のx座標を記憶していたのでoption_nekonotama_lazer[i].xがオプション猫の弾option_nekonotama_lazer[i]が発射されたときのオプション猫のレーザー弾option_nekonotama_lazer[i]のいる位置から640ドット離れた時、条件式option_nekonotama_lazer[i].x- option_nekonotama_lazer_tsix[i] > 640は真の値1を持つことになります

option_nekonotama_lazer[i].life = 0;


}


}


//👆🌞🌞🌞新型 オプション猫から💖レーザー弾💖が10連射されるプログラムです





//👆🌞🌞🌞オプション猫の挙動の設定の部分です




//👇🌞🌞🌞赤い敵の飛行機の挙動の設定の部分です



if (akaitekinohikouki_repeat > 0) {


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


akaitekinohikouki[i].x = akaitekinohikouki[i].x + akaitekinohikoukinoidoupattern[akaitekinohikouki_m][1];


akaitekinohikouki[i].y = akaitekinohikouki[i].y + akaitekinohikoukinoidoupattern[akaitekinohikouki_m][2];

}



}


akaitekinohikouki_repeat = akaitekinohikouki_repeat - 1;

}


if (akaitekinohikouki_repeat == 0) {


if (akaitekinohikouki_m < 4) {


akaitekinohikouki_repeat = akaitekinohikoukinoidoupattern[akaitekinohikouki_m][0];


akaitekinohikouki_m = akaitekinohikouki_m + 1;

}




if (akaitekinohikouki_m == 4) {

akaitekinohikouki_m = 0;

akaitekinohikouki_repeat = akaitekinohikoukinoidoupattern[akaitekinohikouki_m][0];


}


}



for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {



DrawGraph(akaitekinohikouki[i].x, akaitekinohikouki[i].y, akaitekinohikouki[i].graphichandle[(akaitekinohikouki[i].graphicnumber) / 128 % 7], TRUE);


akaitekinohikouki[i].graphicnumber = akaitekinohikouki[i].graphicnumber + 1;


//🌞🌞🌞 (akaitekinohikouki[i].graphicnumber)を128で割っているので通常のアニメーション速度の128分の1の速度で画像が切り替わります

//👆🌞🌞🌞ここです すでにakaitekinohikouki[i].graphicnumberには0,128,256,384,512,640,768の値のうちの1つがランダムに代入されているので敵の飛行機, 敵の飛行機1・・・敵の飛行機9はそれぞれ異なるタイミングでアニメーションすることになります


}


}


//🌞🌞🌞👇自分の飛行機と赤い敵の飛行機がぶつかったとき自分の飛行機と赤い敵の飛行機が消滅するプログラムはこちらです



if (jibunnohikouki.life > 0)


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


if ((jibunnohikouki.x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < jibunnohikouki.y + 20))

{


jibunnohikouki.life = 0;


akaitekinohikouki[i].life = 0;


//👆🌞自分の飛行機と赤い敵の飛行機が衝突すると共に消滅することになります



akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;



akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[0].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています




jibunnohikoukinobakuhatunohonoo.x = jibunnohikouki.x;


jibunnohikoukinobakuhatunohonoo.y = jibunnohikouki.y;


jibunnohikoukinobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 jibunnohikoukinobakuhatunohonoo.lifeに0以上の値を代入しました jibunnohikoukinobakuhatunohonoo.lifeにランダムに異なる値を代入することにより自分の飛行機が爆発する時間をランダムに変化させています



}

}


}

//🌞🌞🌞👆自分の飛行機と赤い敵の飛行機がぶつかったとき自分の飛行機と赤い敵の飛行機が消滅するプログラムはこちらです




//👇🌞🌞🌞自分の飛行機と赤い敵の飛行機の弾が衝突したとき当たった自分の飛行機と赤い敵の飛行機の弾が消え自分の飛行機が爆発する😊のプログラムです



for (int i = 0; i < 10; i++) {


for (int j = 0; j < 10; j++) {


if (akaitekinohikoukinotama[i][j].life > 0)


if (jibunnohikouki.life > 0) {


if ((jibunnohikouki.x < akaitekinohikoukinotama[i][j].x + 10) && (akaitekinohikoukinotama[i][j].x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < akaitekinohikoukinotama[i][j].y + 10) && (akaitekinohikoukinotama[i][j].y < jibunnohikouki.y + 20)) {


jibunnohikouki.life = jibunnohikouki.life - 1;


akaitekinohikoukinotama[i][j].life = 0;


//👆🌞自分の飛行機と赤い敵の飛行機の弾が衝突すると敵の弾だけが消滅することになります




jibunnohikoukiwooouhikari.x = jibunnohikouki.x;


jibunnohikoukiwooouhikari.y = jibunnohikouki.y;


//🌞🌞🌞 赤い敵の飛行機の弾と自分の飛行機がぶつかると、そのときの自分の飛行機の位置座標がjibunnohikoukiwooouhikari.x, jibunnohikoukiwooouhikari.yに代入されます


jibunnohikoukiwooouhikari.life = 5;






if (jibunnohikouki.life == 0) {


jibunnohikoukinobakuhatunohonoo.x = jibunnohikouki.x;


jibunnohikoukinobakuhatunohonoo.y = jibunnohikouki.y;


jibunnohikoukinobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 jibunnohikoukinobakuhatunohonoo.lifeに0以上の値を代入しました jibunnohikoukinobakuhatunohonoo.lifeにランダムに異なる値を代入することにより自分の飛行機が爆発する時間をランダムに変化させています

}



}

}


}


}


//👆🌞🌞🌞自分の飛行機と赤い敵の飛行機の弾が衝突したとき当たった自分の飛行機と赤い敵の飛行機の弾が消え自分の飛行機が爆発する😊のプログラムです







//👇🌞🌞🌞赤い敵の飛行機と自分の弾が衝突したとき当たった自分の弾と赤い敵の飛行機が消滅するプログラムです


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


for (int j = 0; j < 10; j++) {


if (jibunnotama[j].life > 0)


if ((jibunnotama[j].x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < jibunnotama[j].x + 15) && (jibunnotama[j].y < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < jibunnotama[j].y + 5)) {


jibunnotama[j].life = 0;


akaitekinohikouki[i].life = akaitekinohikouki[i].life - 1;


//👆🌞自分の弾と赤い敵の飛行機が衝突すると自分の弾は消滅しakaitekinohikouki[i].lifeに格納されている値は1減ることになります akaitekinohikouki[i].lifeに格納されている値が0になると赤い敵の飛行機は消滅することになります


akaitekinohikoukiwooouhikari.x = akaitekinohikouki[i].x;


akaitekinohikoukiwooouhikari.y = akaitekinohikouki[i].y;


//🌞🌞🌞自分の弾と赤い敵の飛行機がぶつかると赤い敵の飛行機の位置座標がakaitekinohikoukiwooouhikari.x, akaitekinohikoukiwooouhikari.yに代入されます


akaitekinohikoukiwooouhikari.life = 5;






if (akaitekinohikouki[i].life == 0) {


akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;


akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[i].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].life, akaitekinohikoukinobakuhatunohonoo[1].life, akaitekinohikoukinobakuhatunohonoo[2].life, akaitekinohikoukinobakuhatunohonoo[3].life, akaitekinohikoukinobakuhatunohonoo[4].life, akaitekinohikoukinobakuhatunohonoo[5].life, akaitekinohikoukinobakuhatunohonoo[6].life, akaitekinohikoukinobakuhatunohonoo[7].life, akaitekinohikoukinobakuhatunohonoo[8].life, akaitekinohikoukinobakuhatunohonoo[9].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞赤い敵の飛行機と自分の弾が衝突したとき当たった自分の弾と赤い敵の飛行機が消滅するプログラムです



//👇🌞🌞🌞赤い敵の飛行機と自分のレーザー弾が衝突したとき当たった自分のレーザー弾は消滅し赤い敵の飛行機のライフが1減るプログラムです


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


for (int j = 0; j < 10; j++) {


if (jibunnotama_lazer[j].life > 0)


if ((jibunnotama_lazer[j].x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < jibunnotama_lazer[j].x + 15) && (jibunnotama_lazer[j].y < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < jibunnotama_lazer[j].y + 5)) {


jibunnotama_lazer[j].life = 0;


akaitekinohikouki[i].life = 0;


//👆🌞自分のレーザー弾と赤い敵の飛行機が衝突すると自分のレーザー弾は消滅しakaitekinohikouki[i].lifeに格納されている値は1減ることになります akaitekinohikouki[i].lifeに格納されている値が0になると赤い敵の飛行機は消滅することになります


akaitekinohikoukiwooouhikari.x = akaitekinohikouki[i].x;


akaitekinohikoukiwooouhikari.y = akaitekinohikouki[i].y;


//🌞🌞🌞自分のレーザー弾と赤い敵の飛行機がぶつかると敵の飛行機の位置座標がakaitekinohikoukiwooouhikari.x, akaitekinohikoukiwooouhikari.yに代入されます


akaitekinohikoukiwooouhikari.life = 5;






if (akaitekinohikouki[i].life == 0) {


akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;


akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[i].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].life, akaitekinohikoukinobakuhatunohonoo[1].life, akaitekinohikoukinobakuhatunohonoo[2].life, akaitekinohikoukinobakuhatunohonoo[3].life, akaitekinohikoukinobakuhatunohonoo[4].life, akaitekinohikoukinobakuhatunohonoo[5].life, akaitekinohikoukinobakuhatunohonoo[6].life, akaitekinohikoukinobakuhatunohonoo[7].life, akaitekinohikoukinobakuhatunohonoo[8].life, akaitekinohikoukinobakuhatunohonoo[9].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞赤い敵の飛行機と自分のレーザー弾が衝突したとき当たった自分のレーザー弾は消滅し赤い敵の飛行機のライフが1減るプログラムです














//🌞🌞🌞👇オプション猫と赤い敵の飛行機がぶつかったときオプション猫と赤い敵の飛行機が消滅するプログラムはこちらです



if (option_neko.life > 0)


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


if ((option_neko.x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < option_neko.x + 35) && (option_neko.y + 7 < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < option_neko.y + 20))

{


option_neko.life = 0;


akaitekinohikouki[i].life = 0;


//👆🌞オプション猫と赤い敵の飛行機が衝突すると共に消滅することになります



akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;



akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[0].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています




option_nekonobakuhatunohonoo.x = option_neko.x;


option_nekonobakuhatunohonoo.y = option_neko.y;


option_nekonobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 option_nekonobakuhatunohonoo.lifeに0以上の値を代入しました option_nekonobakuhatunohonoo.lifeにランダムに異なる値を代入することによりオプション猫が爆発する時間をランダムに変化させています



}

}


}

//🌞🌞🌞👆オプション猫と赤い敵の飛行機がぶつかったときオプション猫と赤い敵の飛行機が消滅するプログラムはこちらです




//👇🌞🌞🌞オプション猫と赤い敵の飛行機の弾が衝突したとき当たったオプション猫と赤い敵の飛行機の弾が消えオプション猫が爆発する😊のプログラムです



for (int i = 0; i < 10; i++) {


for (int j = 0; j < 10; j++) {


if (akaitekinohikoukinotama[i][j].life > 0)


if (option_neko.life > 0) {


if ((option_neko.x < akaitekinohikoukinotama[i][j].x + 10) && (akaitekinohikoukinotama[i][j].x < option_neko.x + 35) && (option_neko.y + 7 < akaitekinohikoukinotama[i][j].y + 10) && (akaitekinohikoukinotama[i][j].y < option_neko.y + 20)) {


option_neko.life = option_neko.life - 1;


akaitekinohikoukinotama[i][j].life = 0;


//👆🌞オプション猫と赤い敵の飛行機の弾が衝突すると敵の弾だけが消滅することになります




option_nekowooouhikari.x = option_neko.x;


option_nekowooouhikari.y = option_neko.y;


//🌞🌞🌞 赤い敵の飛行機の弾とオプション猫がぶつかると、そのときのオプション猫の位置座標がoption_nekowooouhikari.x, option_nekowooouhikari.yに代入されます


option_nekowooouhikari.life = 5;






if (option_neko.life == 0) {


option_nekonobakuhatunohonoo.x = option_neko.x;


option_nekonobakuhatunohonoo.y = option_neko.y;


option_nekonobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 option_nekonobakuhatunohonoo.lifeに0以上の値を代入しました option_nekonobakuhatunohonoo.lifeにランダムに異なる値を代入することによりオプション猫が爆発する時間をランダムに変化させています

}



}

}


}


}


//👆🌞🌞🌞オプション猫と赤い敵の飛行機の弾が衝突したとき当たったオプション猫と赤い敵の飛行機の弾が消え自分の飛行機が爆発する😊のプログラムです







//👇🌞🌞🌞赤い敵の飛行機とオプション猫の弾が衝突したとき当たったオプション猫の弾と赤い敵の飛行機が消滅するプログラムです


for (int i = 0; i < 10; i++) {


if (option_neko.life > 0) {


for (int j = 0; j < 10; j++) {


if (option_nekonotama[j].life > 0)


if ((option_nekonotama[j].x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < option_nekonotama[j].x + 15) && (option_nekonotama[j].y < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < option_nekonotama[j].y + 5)) {


option_nekonotama[j].life = 0;


akaitekinohikouki[i].life = akaitekinohikouki[i].life - 1;


//👆🌞オプション猫と赤い敵の飛行機が衝突するとオプション猫の弾は消滅しakaitekinohikouki[i].lifeに格納されている値は1減ることになります akaitekinohikouki[i].lifeに格納されている値が0になると赤い敵の飛行機は消滅することになります


akaitekinohikoukiwooouhikari.x = akaitekinohikouki[i].x;


akaitekinohikoukiwooouhikari.y = akaitekinohikouki[i].y;


//🌞🌞🌞オプション猫の弾と赤い敵の飛行機がぶつかると赤い敵の飛行機の位置座標がakaitekinohikoukiwooouhikari.x, akaitekinohikoukiwooouhikari.yに代入されます


akaitekinohikoukiwooouhikari.life = 5;






if (akaitekinohikouki[i].life == 0) {


akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;


akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[i].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].life, akaitekinohikoukinobakuhatunohonoo[1].life, akaitekinohikoukinobakuhatunohonoo[2].life, akaitekinohikoukinobakuhatunohonoo[3].life, akaitekinohikoukinobakuhatunohonoo[4].life, akaitekinohikoukinobakuhatunohonoo[5].life, akaitekinohikoukinobakuhatunohonoo[6].life, akaitekinohikoukinobakuhatunohonoo[7].life, akaitekinohikoukinobakuhatunohonoo[8].life, akaitekinohikoukinobakuhatunohonoo[9].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞赤い敵の飛行機とオプション猫の弾が衝突したとき当たったオプション猫の弾と赤い敵の飛行機が消滅するプログラムです



//👇🌞🌞🌞赤い敵の飛行機とオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾は消滅し赤い敵の飛行機のライフが1減るプログラムです


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


for (int j = 0; j < 10; j++) {


if (option_nekonotama_lazer[j].life > 0)


if ((option_nekonotama_lazer[j].x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < option_nekonotama_lazer[j].x + 15) && (option_nekonotama_lazer[j].y < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < option_nekonotama_lazer[j].y + 5)) {


option_nekonotama_lazer[j].life = 0;


akaitekinohikouki[i].life = 0;


//👆🌞オプション猫のレーザー弾と赤い敵の飛行機が衝突するとオプション猫のレーザー弾は消滅しakaitekinohikouki[i].lifeに格納されている値は1減ることになります akaitekinohikouki[i].lifeに格納されている値が0になると赤い敵の飛行機は消滅することになります


akaitekinohikoukiwooouhikari.x = akaitekinohikouki[i].x;


akaitekinohikoukiwooouhikari.y = akaitekinohikouki[i].y;


//🌞🌞🌞オプション猫のレーザー弾と赤い敵の飛行機がぶつかると敵の飛行機の位置座標がakaitekinohikoukiwooouhikari.x, akaitekinohikoukiwooouhikari.yに代入されます


akaitekinohikoukiwooouhikari.life = 5;






if (akaitekinohikouki[i].life == 0) {


akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;


akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[i].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].life, akaitekinohikoukinobakuhatunohonoo[1].life, akaitekinohikoukinobakuhatunohonoo[2].life, akaitekinohikoukinobakuhatunohonoo[3].life, akaitekinohikoukinobakuhatunohonoo[4].life, akaitekinohikoukinobakuhatunohonoo[5].life, akaitekinohikoukinobakuhatunohonoo[6].life, akaitekinohikoukinobakuhatunohonoo[7].life, akaitekinohikoukinobakuhatunohonoo[8].life, akaitekinohikoukinobakuhatunohonoo[9].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞赤い敵の飛行機とオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾は消滅し赤い敵の飛行機のライフが1減るプログラムです





if (akaitekinohikoukiwooouhikari.life > 0) {



SetDrawBlendMode(DX_BLENDMODE_ALPHA, 200);


//👆🌞🌞🌞描画ブレンドモードがアルファブレンドになっています


DrawGraph(akaitekinohikoukiwooouhikari.x, akaitekinohikoukiwooouhikari.y, akaitekinohikoukiwooouhikari.graphichandle[0], TRUE);



SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);

akaitekinohikoukiwooouhikari.life = akaitekinohikoukiwooouhikari.life - 1;


// 👆🌞🌞🌞描画ブレンドモードをノーブレンドにして描画ブレンドモードを解除しています

}



//👆🌞🌞🌞赤い敵の飛行機を覆う光の画像が描かれます akaitekinohikoukiwooouhikari.lifeに格納されている値が0になると赤い敵の飛行機を覆う光の画像が描かれることはありません


for (int i = 0; i < 10; i++) {


if (akaitekinohikoukinobakuhatunohonoo[i].life > 0) {


DrawGraph(akaitekinohikoukinobakuhatunohonoo[i].x, akaitekinohikoukinobakuhatunohonoo[i].y, akaitekinohikoukinobakuhatunohonoo[i].graphichandle[(akaitekinohikoukinobakuhatunohonoo[i].graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞 akaitekinohikoukinobakuhatunohonoo[i].graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞

akaitekinohikoukinobakuhatunohonoo[i].graphicnumber = akaitekinohikoukinobakuhatunohonoo[i].graphicnumber + 1;

//👆🌞🌞🌞爆発の炎がアニメーションするよう設定が行われています



akaitekinohikoukinobakuhatunohonoo[i].life = akaitekinohikoukinobakuhatunohonoo[i].life - 1;



}


//👆 akaitekinohikoukinobakuhatunohonoo[i].lifeに格納されている値が1なら爆発の炎の画像を描きます

//👆 akaitekinohikoukinobakuhatunohonoo[i].lifeに格納されている値が0なら爆発の炎の画像が描かれることはありません


}






//👇🌞🌞🌞新型 赤い敵の飛行機10体から敵の弾が10連射されるプログラムです





for (int i = 0; i < 10; i = i + 1) {



if (akaitekinohikouki[i].life > 1 && GetRand(15) == 0 && akaitekinohikoukinotama[i][0].life == 0 && hassyasareru_akaitekinohikoukinotama[i] == 0) {


akaitekinohikoukinotama[i][0].x = akaitekinohikouki[i].x - 10;


akaitekinohikoukinotama[i][0].y = akaitekinohikouki[i].y + 10;


akaitekinohikoukinotama_tsix[i][0] = akaitekinohikoukinotama[i][0].x;


akaitekinohikoukinotama[i][0].life = 1;


hassyasareru_akaitekinohikoukinotama[i] = 1;


akaitekinohikoukinotama_count[i][0] = 20 + GetRand(25);//👈🌞🌞🌞赤い敵akaitekinohikouki[i]から10連射される最初の弾akaitekinohikoukinotama[i][0]と次弾akaitekinohikoukinotama[i][1]の間隔を調整することができます



}




for (int j = 0; j < 9; j++) {


if (akaitekinohikoukinotama_count[i][j] > 0) { akaitekinohikoukinotama_count[i][j] = akaitekinohikoukinotama_count[i][j] - 1; }



if (akaitekinohikoukinotama_count[i][j] == 0 && hassyasareru_akaitekinohikoukinotama[i] == j + 1) {


if (akaitekinohikoukinotama[i][j + 1].life == 0) {


akaitekinohikoukinotama[i][j + 1].x = akaitekinohikouki[i].x - 10;


akaitekinohikoukinotama[i][j + 1].y = akaitekinohikouki[i].y + 10;


akaitekinohikoukinotama_tsix[i][j + 1] = akaitekinohikoukinotama[i][j + 1].x;




akaitekinohikoukinotama[i][j + 1].life = 1;


hassyasareru_akaitekinohikoukinotama[i] = j + 2;


akaitekinohikoukinotama_count[i][j + 1] = 20 + GetRand(25);//👈🌞🌞🌞赤い敵の飛行機akaitekinohikouki[i]から10連射される敵の弾akaitekinohikoukinotama[i][j + 1]と次に発射される弾akaitekinohikoukinotama[i][j + 2]の間隔を調整することができます


}


}


}




if (akaitekinohikoukinotama_count[i][9] > 0) { akaitekinohikoukinotama_count[i][9] = akaitekinohikoukinotama_count[i][9] - 1; }




if (akaitekinohikoukinotama_count[i][9] == 0 && hassyasareru_akaitekinohikoukinotama[i] == 10) {


hassyasareru_akaitekinohikoukinotama[i] = 0;


}


for (int j = 0; j < 10; j = j + 1) {


if (akaitekinohikoukinotama[i][j].life == 1) {

//🌞🌞🌞 akaitekinohikoukinotama[i][j].lifeに1が代入されていると赤い敵の飛行機から発射される弾akaitekinohikoukinotama[i][j]がゲーム画面に表示されることになります akaitekinohikoukinotama[i][j].lifeに0が代入されていると赤い敵の飛行機から発射される弾 akaitekinohikoukinotama[i][j]がゲーム画面に表示されることはありません

DrawGraph(akaitekinohikoukinotama[i][j].x, akaitekinohikoukinotama[i][j].y, akaitekinohikoukinotama[i][j].graphichandle[0], TRUE);


akaitekinohikoukinotama[i][j].x = akaitekinohikoukinotama[i][j].x - 1;


if (akaitekinohikoukinotama_tsix[i][j] - akaitekinohikoukinotama[i][j].x > 1000)

//🌞🌞🌞 赤い敵の飛行機から発射された弾akaitekinohikoukinotama[i][j]の位置のx座標が発射されたときの最初の位置のx座標から🍑左へ🍑640を超えて離れると条件式akaitekinohikoukinotama_tsix[i][j] - akaitekinohikoukinotama[i][j].xは真の値1をとることになります

//🌞🌞🌞🌞🌞👆 akaitekinohikoukinotama_tsix[i][j]には赤い敵の飛行機から発射される弾akaitekinohikoukinotama[i][j]が発射されるときのakaitekinohikoukinotama[i][j]のいる位置のx座標が代入されます。赤い敵の飛行機から発射された弾のx座標akaitekinohikoukinotama[i][j].xが赤い敵の飛行機から発射されたときの敵の弾akaitekinohikoukinotama[i][j]のいる位置からx方向へ640ドット離れた時、条件式akaitekinohikoukinotama_tsix[i][j] - akaitekinohikoukinotama[i][j].x > 640は真の値1を持つことになります

akaitekinohikoukinotama[i][j].life = 0;


}


}


}



//👆🌞🌞🌞赤い敵の飛行機10体の挙動の設定の部分です




//💖💖💖ここで赤い敵の飛行機10体の設定の部分と敵の飛行機ルルの挙動の設定に分けられます💖💖💖







//👇🌞🌞🌞敵の飛行機ルルの挙動の設定です


if (framecounter >= 2000) {


if (RuRu_repeat > 0) {


for (int i = 0; i < 1; i++) {


if (RuRu[i].life > 0) {


RuRu[i].x = RuRu[i].x + RuRunoidoupattern[RuRu_m][1];


RuRu[i].y = RuRu[i].y + RuRunoidoupattern[RuRu_m][2];

}



}


RuRu_repeat = RuRu_repeat - 1;

}


if (RuRu_repeat == 0) {


if (RuRu_m < 4) {


RuRu_repeat = RuRunoidoupattern[RuRu_m][0];


RuRu_m = RuRu_m + 1;

}




if (RuRu_m == 4) {

RuRu_m = 0;

RuRu_repeat = RuRunoidoupattern[RuRu_m][0];


}


}



for (int i = 0; i < 1; i++) {


if (RuRu[i].life > 0) {



DrawGraph(RuRu[i].x, RuRu[i].y, RuRu[i].graphichandle[(RuRu[i].graphicnumber) / 128 % 7], TRUE);


RuRu[i].graphicnumber = RuRu[i].graphicnumber + 1;


//🌞🌞🌞 (RuRu[i].graphicnumber)を128で割っているので通常のアニメーション速度の128分の1の速度で画像が切り替わります

//👆🌞🌞🌞ただし 今はルルの画像は1枚しか用意されていないのでアニメーションしません


}


}






//🌞🌞🌞👇自分の飛行機と敵の飛行機ルルがぶつかったとき自分の飛行機と敵の飛行機ルルが消滅するプログラムはこちらです


if (jibunnohikouki.life > 0)


for (int i = 0; i < 1; i++) {


if (RuRu[i].life > 0) {


if ((jibunnohikouki.x < RuRu[i].x + 320) && (RuRu[i].x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < RuRu[i].y + 240) && (RuRu[i].y < jibunnohikouki.y + 20))

{


jibunnohikouki.life = 0;


RuRu[i].life = 0;


//👆🌞自分の飛行機と敵の飛行機ルルが衝突すると共に消滅することになります



RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;



RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[0].lifeに0以上の値を代入しました RuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています




jibunnohikoukinobakuhatunohonoo.x = jibunnohikouki.x;


jibunnohikoukinobakuhatunohonoo.y = jibunnohikouki.y;


jibunnohikoukinobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 jibunnohikoukinobakuhatunohonoo.lifeに0以上の値を代入しました jibunnohikoukinobakuhatunohonoo.lifeにランダムに異なる値を代入することにより自分の飛行機が爆発する時間をランダムに変化させています



}

}


}

//🌞🌞🌞👆自分の飛行機と敵の飛行機ルルがぶつかったとき自分の飛行機と敵の飛行機が消滅するプログラムはこちらです




//👇🌞🌞🌞自分の飛行機と敵の飛行機ルルの弾が衝突したとき当たった自分の飛行機と敵の飛行機ルルの弾が消え自分の飛行機が爆発するプログラムです



for (int i = 0; i < 1; i++) {


for (int j = 0; j < 10; j++) {


if (RuRunotama[i][j].life > 0)


if (jibunnohikouki.life > 0) {


if ((jibunnohikouki.x < RuRunotama[i][j].x + 10) && (RuRunotama[i][j].x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < RuRunotama[i][j].y + 10) && (RuRunotama[i][j].y < jibunnohikouki.y + 20)) {


jibunnohikouki.life = jibunnohikouki.life - 1;


RuRunotama[i][j].life = 0;


//👆🌞自分の飛行機と敵の弾が衝突するとjibunnohikouki.lifeに格納される値が1減り敵の弾は消滅することになります。jibunnohikouki.lifeに格納される値が0になると自分の飛行機が消滅することになります




jibunnohikoukiwooouhikari.x = jibunnohikouki.x;


jibunnohikoukiwooouhikari.y = jibunnohikouki.y;


//🌞🌞🌞自分の飛行機と敵の弾がぶつかると自分の飛行機の位置座標がjibunnohikoukiwooouhikari.x , jibunnohikoukiwooouhikari.yに代入されます


jibunnohikoukiwooouhikari.life = 3;








if (jibunnohikouki.life == 0) {


jibunnohikoukinobakuhatunohonoo.x = jibunnohikouki.x;


jibunnohikoukinobakuhatunohonoo.y = jibunnohikouki.y;


jibunnohikoukinobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 jibunnohikoukinobakuhatunohonoo.lifeに0以上の値を代入しました jibunnohikoukinobakuhatunohonoo.lifeにランダムに異なる値を代入することにより自分の飛行機が爆発する時間をランダムに変化させています


}

}

}


}


}


//👆🌞🌞🌞自分の飛行機と敵の飛行機ルルの弾が衝突したとき当たった自分の飛行機と敵の弾が消え自分の飛行機が爆発するプログラムです







//👇🌞🌞🌞敵の飛行機ルルと自分の弾が衝突したとき当たった自分の弾と敵の飛行機ルルが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (RuRu[i].life > 0) {





for (int j = 0; j < 10; j++) {


if (jibunnotama[j].life > 0)


if ((jibunnotama[j].x < RuRu[i].x + 320) && (RuRu[i].x < jibunnotama[j].x + 15) && (jibunnotama[j].y < RuRu[i].y + 240) && (RuRu[i].y < jibunnotama[j].y + 5)) {


jibunnotama[j].life = 0;


RuRu[i].life = RuRu[i].life - 1;


//👆🌞自分の弾と敵の飛行機ルルが衝突すると自分の弾は消滅しtekinohikouki[i].lifeに格納されている値は1減ることになります RuRu[i].lifeに格納されている値が0になると敵の飛行機ルルは消滅することになります


RuRuwooouhikari.x = RuRu[i].x;


RuRuwooouhikari.y = RuRu[i].y;


//🌞🌞🌞自分の弾と敵の飛行機ルルがぶつかると敵の飛行機ルルの位置座標がRuRuwooouhikari.x, RuRuwooouhikari.yに代入されます


RuRuwooouhikari.life = 10;






if (RuRu[i].life == 0) {


RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;


RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[i].lifeに0以上の値を代入しましたRuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞敵の飛行機ルルと自分の弾が衝突したとき当たった自分の弾と敵の飛行機ルルが消滅するプログラムです



//👇🌞🌞🌞敵の飛行機ルルと自分のレーザー弾が衝突したとき当たった自分のレーザー弾と敵の飛行機ルルが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (RuRu[i].life > 0) {



for (int j = 0; j < 10; j++) {


if (jibunnotama_lazer[j].life > 0)


if ((jibunnotama_lazer[j].x < RuRu[i].x + 320) && (RuRu[i].x < jibunnotama_lazer[j].x + 15) && (jibunnotama_lazer[j].y < RuRu[i].y + 240) && (RuRu[i].y < jibunnotama_lazer[j].y + 5)) {


jibunnotama_lazer[j].life = 0;


RuRu[i].life = RuRu[i].life - 1;


//👆🌞自分のレーザー弾と敵の飛行機ルルが衝突すると自分のレーザー弾は消滅しRuRu[i].lifeに格納されている値は1減ることになります RuRu[i].lifeに格納されている値が0になると敵の飛行機ルルは消滅することになります


RuRuwooouhikari.x = RuRu[i].x;


RuRuwooouhikari.y = RuRu[i].y;


//🌞🌞🌞自分のレーザー弾と敵の飛行機ルルがぶつかると敵の飛行機ルルの位置座標がRuRuwooouhikari.x, RuRuwooouhikari.yに代入されます


RuRuwooouhikari.life = 10;






if (RuRu[i].life == 0) {


RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;


RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[i].lifeに0以上の値を代入しましたRuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞敵の飛行機ルルと自分のレーザー弾が衝突したとき当たった自分のレーザー弾と敵の飛行機ルルが消滅するプログラムです










//🌞🌞🌞👇オプション猫と敵の飛行機ルルがぶつかったときオプション猫と敵の飛行機ルルが消滅するプログラムはこちらです


if (option_neko.life > 0)


for (int i = 0; i < 1; i++) {


if (RuRu[i].life > 0) {


if ((option_neko.x < RuRu[i].x + 320) && (RuRu[i].x < option_neko.x + 35) && (option_neko.y + 7 < RuRu[i].y + 240) && (RuRu[i].y < option_neko.y + 20))

{


option_neko.life = 0;


RuRu[i].life = 0;


//👆🌞オプション猫と敵の飛行機ルルが衝突すると共に消滅することになります



RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;



RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[0].lifeに0以上の値を代入しました RuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています




option_nekonobakuhatunohonoo.x = option_neko.x;


option_nekonobakuhatunohonoo.y = option_neko.y;


option_nekonobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞option_nekonobakuhatunohonoo.lifeに0以上の値を代入しましたoption_nekonobakuhatunohonoo.lifeにランダムに異なる値を代入することによりオプション猫が爆発する時間をランダムに変化させています



}

}


}

//🌞🌞🌞👆オプション猫と敵の飛行機ルルがぶつかったときオプション猫と敵の飛行機が消滅するプログラムはこちらです




//👇🌞🌞🌞オプション猫と敵の飛行機ルルの弾が衝突したとき当たったオプション猫と敵の飛行機ルルの弾が消え自分の飛行機が爆発するプログラムです



for (int i = 0; i < 1; i++) {


for (int j = 0; j < 10; j++) {


if (RuRunotama[i][j].life > 0)


if (option_neko.life > 0) {


if ((option_neko.x < RuRunotama[i][j].x + 10) && (RuRunotama[i][j].x < option_neko.x + 35) && (option_neko.y + 7 < RuRunotama[i][j].y + 10) && (RuRunotama[i][j].y < option_neko.y + 20)) {


option_neko.life = option_neko.life - 1;


RuRunotama[i][j].life = 0;


//👆🌞オプション猫と敵の弾が衝突するとoption_neko.lifeに格納される値が1減り敵の弾は消滅することになります。option_neko.lifeに格納される値が0になるとオプション猫が消滅することになります




option_nekowooouhikari.x = option_neko.x;


option_nekowooouhikari.y = option_neko.y;


//🌞🌞🌞オプション猫と敵の弾がぶつかるとオプション猫の位置座標がoption_nekowooouhikari.x ,option_nekowooouhikari.yに代入されます


option_nekowooouhikari.life = 3;








if (option_neko.life == 0) {


option_nekonobakuhatunohonoo.x = option_neko.x;


option_nekonobakuhatunohonoo.y = option_neko.y;


option_nekonobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 option_nekonobakuhatunohonoo.lifeに0以上の値を代入しましたoption_nekonobakuhatunohonoo.lifeにランダムに異なる値を代入することによりオプション猫が爆発する時間をランダムに変化させています


}

}

}


}


}


//👆🌞🌞🌞オプション猫と敵の飛行機ルルの弾が衝突したとき当たったオプション猫と敵の弾が消えオプション猫が爆発するプログラムです







//👇🌞🌞🌞敵の飛行機ルルとオプション猫の弾が衝突したとき当たったオプション猫の弾と敵の飛行機ルルが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (RuRu[i].life > 0) {





for (int j = 0; j < 10; j++) {


if (option_nekonotama[j].life > 0)


if ((option_nekonotama[j].x < RuRu[i].x + 320) && (RuRu[i].x < option_nekonotama[j].x + 15) && (option_nekonotama[j].y < RuRu[i].y + 240) && (RuRu[i].y < option_nekonotama[j].y + 5)) {


option_nekonotama[j].life = 0;


RuRu[i].life = RuRu[i].life - 1;


//👆🌞オプション猫の弾と敵の飛行機ルルが衝突するとオプション猫の弾は消滅しtekinohikouki[i].lifeに格納されている値は1減ることになります RuRu[i].lifeに格納されている値が0になると敵の飛行機ルルは消滅することになります


RuRuwooouhikari.x = RuRu[i].x;


RuRuwooouhikari.y = RuRu[i].y;


//🌞🌞🌞オプション猫の弾と敵の飛行機ルルがぶつかると敵の飛行機ルルの位置座標がRuRuwooouhikari.x, RuRuwooouhikari.yに代入されます


RuRuwooouhikari.life = 10;






if (RuRu[i].life == 0) {


RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;


RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[i].lifeに0以上の値を代入しましたRuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞敵の飛行機ルルとオプション猫の弾が衝突したとき当たったオプション猫の弾と敵の飛行機ルルが消滅するプログラムです



//👇🌞🌞🌞敵の飛行機ルルとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾と敵の飛行機ルルが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (RuRu[i].life > 0) {



for (int j = 0; j < 10; j++) {


if (option_nekonotama_lazer[j].life > 0)


if ((option_nekonotama_lazer[j].x < RuRu[i].x + 320) && (RuRu[i].x < option_nekonotama_lazer[j].x + 15) && (option_nekonotama_lazer[j].y < RuRu[i].y + 240) && (RuRu[i].y < option_nekonotama_lazer[j].y + 5)) {


option_nekonotama_lazer[j].life = 0;


RuRu[i].life = RuRu[i].life - 1;


//👆🌞オプション猫のレーザー弾と敵の飛行機ルルが衝突するとオプション猫のレーザー弾は消滅しRuRu[i].lifeに格納されている値は1減ることになります RuRu[i].lifeに格納されている値が0になると敵の飛行機ルルは消滅することになります


RuRuwooouhikari.x = RuRu[i].x;


RuRuwooouhikari.y = RuRu[i].y;


//🌞🌞🌞オプション猫のレーザー弾と敵の飛行機ルルがぶつかると敵の飛行機ルルの位置座標がRuRuwooouhikari.x, RuRuwooouhikari.yに代入されます


RuRuwooouhikari.life = 10;






if (RuRu[i].life == 0) {


RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;


RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[i].lifeに0以上の値を代入しましたRuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞敵の飛行機ルルとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾と敵の飛行機ルルが消滅するプログラムです








if (RuRuwooouhikari.life > 0) {





DrawGraph(RuRuwooouhikari.x, RuRuwooouhikari.y, RuRuwooouhikari.graphichandle[0], TRUE);




RuRuwooouhikari.life = RuRuwooouhikari.life - 1;



}



//👆🌞🌞🌞敵の飛行機ルルを覆う光の画像が描かれます RuRuwooouhikari.lifeに格納されている値が0になると敵の飛行機ルルを覆う光の画像が描かれることはありません


for (int i = 0; i < 1; i++) {


if (RuRunobakuhatunohonoo[i].life > 0) {


DrawGraph(RuRunobakuhatunohonoo[i].x, RuRunobakuhatunohonoo[i].y, RuRunobakuhatunohonoo[i].graphichandle[(RuRunobakuhatunohonoo[i].graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞RuRunobakuhatunohonoo[i].graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞

RuRunobakuhatunohonoo[i].graphicnumber = RuRunobakuhatunohonoo[i].graphicnumber + 1;

//👆🌞🌞🌞爆発の炎がアニメーションするよう設定が行われています



RuRunobakuhatunohonoo[i].life = RuRunobakuhatunohonoo[i].life - 1;



}


//👆 RuRunobakuhatunohonoo[i].lifeに格納されている値が1なら爆発の炎の画像を描きます

//👆 RuRunobakuhatunohonoo[i].lifeに格納されている値が0なら爆発の炎の画像が描かれることはありません


}







//👇🌞🌞🌞新型 敵の飛行機ルルから敵の飛行機ルルの弾が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]のいた位置から640ドット離れた時、条件式RuRunotama_tsix[i][j] - RuRunotama[i][j].x > 640は真の値1を持つことになります

RuRunotama[i][j].life = 0;


}


}


}



}



//👆🌞🌞🌞敵の飛行機ルルの挙動の設定です



//👇🌞🌞🌞敵キャラ ミミの挙動の設定です



if (((500 <= framecounter) && (framecounter <= 1500)) || ((2500 <= framecounter) && (framecounter <= 3500)))

{


if (MiMi.life > 0) {



DrawGraph(MiMi.x, MiMi.y, MiMi.graphichandle[0], TRUE);



}


}



//👆🌞🌞🌞敵キャラ ミミの挙動の設定です



//👇🌞🌞🌞オレンジリング500体の挙動の設定の部分です



for (int i = 0; i < 500; i++) {


if (orange_ring[i].life > 0) {



if (i % 10 == 0)




DrawGraph(orange_ring[i].x, orange_ring[i].y, orange_ring[i].graphichandle[(orange_ring[i].graphicnumber) / 128 % 7], TRUE);



}


}




for (int j = 499; j > 0; j = j - 1) {



orange_ring[j].x = orange_ring[j - 1].x;

orange_ring[j].y = orange_ring[j - 1].y;


}




//👇😊😊😊先頭のオレンジリングだけを動かしています


if (orange_ring_repeat > 0) {


for (int i = 0; i < 1; i++) {


if (orange_ring[i].life > 0) {


orange_ring[i].x = orange_ring[i].x + orange_ringnoidoupattern[orange_ring_m][1];


orange_ring[i].y = orange_ring[i].y + orange_ringnoidoupattern[orange_ring_m][2];

}



}


orange_ring_repeat = orange_ring_repeat - 1;

}


if (orange_ring_repeat == 0) {


if (orange_ring_m < 3) {



orange_ring_m = orange_ring_m + 1;


orange_ring_repeat = orange_ringnoidoupattern[orange_ring_m][0];

}


}




if (orange_ring_repeat == 0) {


if (orange_ring_m == 3) {

orange_ring_m = 0;

orange_ring_repeat = orange_ringnoidoupattern[orange_ring_m][0];


}


}



//👆😊😊😊先頭のオレンジリングだけを動かしています



//👆🌞🌞🌞オレンジリング500体の挙動の設定の部分です










//👇🌞🌞🌞レーザーマークの挙動の設定です


if (framecounter % 1000 == 0)

{



lazermark.life = 1;


lazermark.x = 640;


lazermark.y = 240;


}



//👆🌞🌞🌞ここです framecounterが1000になったとき時lazermark.life に1が代入されることになります







if (lazermark_repeat > 0) {


for (int i = 0; i < 1; i++) {


if (lazermark.life > 0) {


lazermark.x = lazermark.x + lazermarknoidoupattern[lazermark_m][1];


lazermark.y = lazermark.y + lazermarknoidoupattern[lazermark_m][2];

}



}


lazermark_repeat = lazermark_repeat - 1;

}


if (lazermark_repeat == 0) {


if (lazermark_m < 4) {


lazermark_repeat = lazermarknoidoupattern[lazermark_m][0];


lazermark_m = lazermark_m + 1;

}




if (lazermark_m == 4) {

lazermark_m = 0;

lazermark_repeat = lazermarknoidoupattern[lazermark_m][0];


}


}



for (int i = 0; i < 1; i++) {


if (lazermark.life > 0) {



DrawGraph(lazermark.x, lazermark.y, lazermark.graphichandle[(lazermark.graphicnumber) / 128 % 7], TRUE);


lazermark.graphicnumber = lazermark.graphicnumber + 1;


//🌞🌞🌞 (lazermark.graphicnumber)を128で割っているので通常のアニメーション速度の128分の1の速度で画像が切り替わります

//👆🌞🌞🌞レーザーマークをアニメーションさせる設定です ただし 今は一枚しかレーザーマークの画像を用意していないのでレーザーマークはアニメーションしません


}


}




if (lazermark.x < 0) {


lazermark.life = 0;



}


//👆💖💖💖ここです レーザー弾が画面の外に消えた時、すなわちlazermark.xが0より小さいマイナスの値をもったときlazermark.lifeに0が代入されることになりレーザー弾は左方向に進まなくなりますのx座標




//🌞🌞🌞👇自分の飛行機とレーザーマークがぶつかったときレーザーマークが消滅するプログラムはこちらです


if (jibunnohikouki.life > 0)


for (int i = 0; i < 1; i++) {


if (lazermark.life > 0) {


if ((jibunnohikouki.x < lazermark.x + 30) && (lazermark.x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < lazermark.y + 30) && (lazermark.y < jibunnohikouki.y + 20))

{



lazermark.life = 0;


//👆🌞自分の飛行機とレーザーマークが衝突するとレーザーマークが消滅することになります

jibunnotamamode = 1;



//👆🌞自分の飛行機とレーザーマークが衝突するとjibunnotamamodeに1が代入されレーザー発射モードになります


}

}


}

//🌞🌞🌞👆自分の飛行機とレーザーマークがぶつかったときレーザーマークが消滅するプログラムはこちらです








//👇🌞🌞🌞レーザーマークと自分の弾が衝突したとき当たった自分の弾とレーザーマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (lazermark.life > 0) {





for (int j = 0; j < 10; j++) {


if (jibunnotama[j].life > 0)


if ((jibunnotama[j].x < lazermark.x + 30) && (lazermark.x < jibunnotama[j].x + 15) && (jibunnotama[j].y < lazermark.y + 30) && (lazermark.y < jibunnotama[j].y + 5)) {


jibunnotama[j].life = 0;


lazermark.life = lazermark.life - 1;


//👆🌞自分の弾とレーザーマークが衝突すると自分の弾は消滅しlazermark.lifeに格納されている値は1減ることになります lazermark.lifeに格納されている値が0になるとレーザーマークは消滅することになります




}

}


}

}





//👆🌞🌞🌞レーザーマークと自分の弾が衝突したとき当たった自分の弾とレーザーマークが消滅するプログラムです



//👇🌞🌞🌞レーザーマークと自分のレーザー弾が衝突したとき当たった自分のレーザー弾とレーザーマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (lazermark.life > 0) {



for (int j = 0; j < 10; j++) {


if (jibunnotama_lazer[j].life > 0)


if ((jibunnotama_lazer[j].x < lazermark.x + 30) && (lazermark.x < jibunnotama_lazer[j].x + 15) && (jibunnotama_lazer[j].y < lazermark.y + 30) && (lazermark.y < jibunnotama_lazer[j].y + 5)) {


jibunnotama_lazer[j].life = 0;


lazermark.life = lazermark.life - 1;


//👆🌞自分のレーザー弾とレーザーマークが衝突すると自分のレーザー弾は消滅しlazermark.lifeに格納されている値は1減ることになります lazermark.lifeに格納されている値が0になるとレーザーマークは消滅することになります




}


}

}


}



//👆🌞🌞🌞レーザーマークと自分のレーザー弾が衝突したとき当たった自分のレーザー弾とレーザーマークが消滅するプログラムです




//👆🌞🌞🌞レーザーマークの挙動の設定です


//👇🌞🌞🌞ミサイルマークの挙動の設定です


if (framecounter % 1500 == 0) {



misslemark.life = 1;


misslemark.x = 640;


misslemark.y = 240;




}


if (misslemark_repeat > 0) {


for (int i = 0; i < 1; i++) {


if (misslemark.life > 0) {


misslemark.x = misslemark.x + misslemarknoidoupattern[misslemark_m][1];


misslemark.y = misslemark.y + misslemarknoidoupattern[misslemark_m][2];

}



}


misslemark_repeat = misslemark_repeat - 1;

}


if (misslemark_repeat == 0) {


if (misslemark_m < 4) {


misslemark_repeat = misslemarknoidoupattern[misslemark_m][0];


misslemark_m = misslemark_m + 1;

}




if (misslemark_m == 4) {

misslemark_m = 0;

misslemark_repeat = misslemarknoidoupattern[misslemark_m][0];


}


}



for (int i = 0; i < 1; i++) {


if (misslemark.life > 0) {



DrawGraph(misslemark.x, misslemark.y, misslemark.graphichandle[(misslemark.graphicnumber) / 128 % 7], TRUE);


misslemark.graphicnumber = misslemark.graphicnumber + 1;


//🌞🌞🌞 (misslemark.graphicnumber)を128で割っているので通常のアニメーション速度の128分の1の速度で画像が切り替わります

//👆🌞🌞🌞ミサイルマークをアニメーションさせる設定です ただし 今は一枚しかミサイルマークの画像を用意していないのでミサイルマークはアニメーションしません


}


}






if (misslemark.x < 0) {


misslemark.life = 0;



}


//👆💖💖💖ここです ミサイル弾が画面の外に消えた時、すなわちmisslemark.xが0より小さいマイナスの値をもったときmisslemark.lifeに0が代入されることになりレーザー弾は左方向に進まなくなります







//🌞🌞🌞👇自分の飛行機とミサイルマークがぶつかったときミサイルマークが消滅するプログラムはこちらです


if (jibunnohikouki.life > 0)


for (int i = 0; i < 1; i++) {


if (misslemark.life > 0) {


if ((jibunnohikouki.x < misslemark.x + 30) && (misslemark.x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < misslemark.y + 30) && (misslemark.y < jibunnohikouki.y + 20))

{



misslemark.life = 0;


//👆🌞自分の飛行機とミサイルマークが衝突するとミサイルマークが消滅することになります


jibunnotamamode = 0;//👈🌞🌞🌞普通の弾が発射されるようにjibunnotamamodeに0を代入します


}

}


}

//🌞🌞🌞👆自分の飛行機とミサイルマークがぶつかったときミサイルマークが消滅するプログラムはこちらです








//👇🌞🌞🌞ミサイルマークと自分の弾が衝突したとき当たった自分の弾とミサイルマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (misslemark.life > 0) {





for (int j = 0; j < 10; j++) {


if (jibunnotama[j].life > 0)


if ((jibunnotama[j].x < misslemark.x + 30) && (misslemark.x < jibunnotama[j].x + 15) && (jibunnotama[j].y < misslemark.y + 30) && (misslemark.y < jibunnotama[j].y + 5)) {


jibunnotama[j].life = 0;


misslemark.life = misslemark.life - 1;


//👆🌞自分の弾とミサイルマークが衝突すると自分の弾は消滅しmisslemark.lifeに格納されている値は1減ることになります misslemark.lifeに格納されている値が0になるとミサイルマークは消滅することになります




}

}


}

}





//👆🌞🌞🌞ミサイルマークと自分の弾が衝突したとき当たった自分の弾とミサイルマークが消滅するプログラムです



//👇🌞🌞🌞ミサイルマークと自分のレーザー弾が衝突したとき当たった自分のレーザー弾とミサイルマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (misslemark.life > 0) {



for (int j = 0; j < 10; j++) {


if (jibunnotama_lazer[j].life > 0)


if ((jibunnotama_lazer[j].x < misslemark.x + 30) && (misslemark.x < jibunnotama_lazer[j].x + 15) && (jibunnotama_lazer[j].y < misslemark.y + 30) && (misslemark.y < jibunnotama_lazer[j].y + 5)) {


jibunnotama_lazer[j].life = 0;


misslemark.life = misslemark.life - 1;


//👆🌞自分のレーザー弾とミサイルマークが衝突すると自分のレーザー弾は消滅しmisslemark.lifeに格納されている値は1減ることになります misslemark.lifeに格納されている値が0になるとミサイルマークは消滅することになります






}

}


}

}





//👆🌞🌞🌞ミサイルマークと自分のレーザー弾が衝突したとき当たった自分のレーザー弾とミサイルマークが消滅するプログラムです




//👆🌞🌞🌞ミサイルマークの挙動の設定です






//👇🌞🌞🌞レーザーマークの挙動の設定です



//🌞🌞🌞👇オプション猫とレーザーマークがぶつかったときレーザーマークが消滅するプログラムはこちらです


if (option_neko.life > 0)


for (int i = 0; i < 1; i++) {


if (lazermark.life > 0) {


if ((option_neko.x < lazermark.x + 30) && (lazermark.x < option_neko.x + 35) && (option_neko.y + 7 < lazermark.y + 30) && (lazermark.y < option_neko.y + 20))

{



lazermark.life = 0;


//👆🌞オプション猫とレーザーマークが衝突するとレーザーマークが消滅することになります

option_nekonotamamode = 1;



//👆🌞オプション猫とレーザーマークが衝突するとoption_nekonotamamodeに1が代入されレーザー発射モードになります


}

}


}

//🌞🌞🌞👆オプション猫とレーザーマークがぶつかったときレーザーマークが消滅するプログラムはこちらです








//👇🌞🌞🌞レーザーマークとオプション猫の弾が衝突したとき当たったオプション猫の弾とレーザーマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (lazermark.life > 0) {





for (int j = 0; j < 10; j++) {


if (option_nekonotama[j].life > 0)


if ((option_nekonotama[j].x < lazermark.x + 30) && (lazermark.x < option_nekonotama[j].x + 15) && (option_nekonotama[j].y < lazermark.y + 30) && (lazermark.y < option_nekonotama[j].y + 5)) {


option_nekonotama[j].life = 0;


lazermark.life = lazermark.life - 1;


//👆🌞オプション猫の弾とレーザーマークが衝突するとオプション猫の弾は消滅しlazermark.lifeに格納されている値は1減ることになります lazermark.lifeに格納されている値が0になるとレーザーマークは消滅することになります




}

}


}

}





//👆🌞🌞🌞レーザーマークとオプション猫の弾が衝突したとき当たったオプション猫の弾とレーザーマークが消滅するプログラムです



//👇🌞🌞🌞レーザーマークとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾とレーザーマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (lazermark.life > 0) {



for (int j = 0; j < 10; j++) {


if (option_nekonotama_lazer[j].life > 0)


if ((option_nekonotama_lazer[j].x < lazermark.x + 30) && (lazermark.x < option_nekonotama_lazer[j].x + 15) && (option_nekonotama_lazer[j].y < lazermark.y + 30) && (lazermark.y < option_nekonotama_lazer[j].y + 5)) {


option_nekonotama_lazer[j].life = 0;


lazermark.life = lazermark.life - 1;


//👆🌞オプション猫のレーザー弾とレーザーマークが衝突するとオプション猫のレーザー弾は消滅しlazermark.lifeに格納されている値は1減ることになります lazermark.lifeに格納されている値が0になるとレーザーマークは消滅することになります




}


}

}


}



//👆🌞🌞🌞レーザーマークとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾とレーザーマークが消滅するプログラムです




//👆🌞🌞🌞レーザーマークの挙動の設定です




//👇🌞🌞🌞ミサイルマークの挙動の設定です








//🌞🌞🌞👇オプション猫とミサイルマークがぶつかったときミサイルマークが消滅するプログラムはこちらです


if (option_neko.life > 0)


for (int i = 0; i < 1; i++) {


if (misslemark.life > 0) {


if ((option_neko.x < misslemark.x + 30) && (misslemark.x < option_neko.x + 35) && (option_neko.y + 7 < misslemark.y + 30) && (misslemark.y < option_neko.y + 20))

{



misslemark.life = 0;


//👆🌞オプション猫とミサイルマークが衝突するとミサイルマークが消滅することになります


option_nekonotamamode = 0;//👈🌞🌞🌞普通の弾が発射されるようにoption_nekonotamamodeに0を代入します


}

}


}

//🌞🌞🌞👆オプション猫とミサイルマークがぶつかったときミサイルマークが消滅するプログラムはこちらです








//👇🌞🌞🌞ミサイルマークとオプション猫の弾が衝突したとき当たったオプション猫の弾とミサイルマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (misslemark.life > 0) {





for (int j = 0; j < 10; j++) {


if (option_nekonotama[j].life > 0)


if ((option_nekonotama[j].x < misslemark.x + 30) && (misslemark.x < option_nekonotama[j].x + 15) && (option_nekonotama[j].y < misslemark.y + 30) && (misslemark.y < option_nekonotama[j].y + 5)) {


option_nekonotama[j].life = 0;


misslemark.life = misslemark.life - 1;


//👆🌞オプション猫の弾とミサイルマークが衝突するとオプション猫の弾は消滅しmisslemark.lifeに格納されている値は1減ることになります misslemark.lifeに格納されている値が0になるとミサイルマークは消滅することになります




}

}


}

}





//👆🌞🌞🌞ミサイルマークとオプション猫の弾が衝突したとき当たったオプション猫の弾とミサイルマークが消滅するプログラムです



//👇🌞🌞🌞ミサイルマークとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾とミサイルマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (misslemark.life > 0) {



for (int j = 0; j < 10; j++) {


if (option_nekonotama_lazer[j].life > 0)


if ((option_nekonotama_lazer[j].x < misslemark.x + 30) && (misslemark.x < option_nekonotama_lazer[j].x + 15) && (option_nekonotama_lazer[j].y < misslemark.y + 30) && (misslemark.y < option_nekonotama_lazer[j].y + 5)) {


option_nekonotama_lazer[j].life = 0;


misslemark.life = misslemark.life - 1;


//👆🌞オプション猫のレーザー弾とミサイルマークが衝突するとオプション猫のレーザー弾は消滅しmisslemark.lifeに格納されている値は1減ることになります misslemark.lifeに格納されている値が0になるとミサイルマークは消滅することになります






}

}


}

}





//👆🌞🌞🌞ミサイルマークとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾とミサイルマークが消滅するプログラムです




//👆🌞🌞🌞ミサイルマークの挙動の設定です



ScreenFlip();


ClearDrawScreen();


};



DxLib_End(); // DXライブラリの使用を終了します DXライブラリの使用しているメモリ領域が解放されます


return 0; // プログラムを終了します


}



デバッグなしで実行をしてから一度プログラムを終了し

生成されたexeファイルをハードディスクから探し出しクリックする方法により得られたプログラムの実行結果はこちらです

👇

https://youtu.be/wtNU9pjYtzE













solarplexuss「かっこいい~


オレンジリング50体が重ならずに表示されるようになった


すごい発射されてる感があるね


そうこうしているうちに


8000フレーム目あたりで


1周して戻ってきたあ


いいなあ


この動き」




マックス「問題点は


登場させるオレンジリングの数が500体と多いせいかどうかわからないが


Visual Studioの警告欄に


重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態

警告 C6262 関数はスタックの '40752' バイトを使用します: /analyze:stacksize '16384' を超えています。 データの一部をヒープに移動することを考慮してください。


が表示されるようになったことか」


solarplexcuss「ほんとだ なんだろう これ?」


マックス「表示させるオレンジリングの数は


50体だが


実際に登場しているオレンジリング本体の数は500体だ


ひょっとして


登場させるオレンジリング本体の数が500体では多すぎるのか?


じゃあ


エラーが表示されなくなるように


登場させるオレンジリング本体の数を500体から100体に減らしてみるか」



そのプログラムはこちらです

👇

#include "DxLib.h"


struct Character {

double x;

double y;

int graphichandle[7];

int graphicnumber;//👈🌞メンバ変数にgraphicnumber を追加しました

int life;

};


//👆🌞Characterの構造体宣言です



int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{



ChangeWindowMode(TRUE); // ウインドウモードに設定します


if (DxLib_Init() == -1) // DXライブラリを初期化処理しています

{

return -1; // DXライブラリの初期化に失敗したら直ちにプログラムを終了します

}




SetDrawScreen(DX_SCREEN_BACK);//👈🌞SetDrawScreen関数です 裏画面に画像を描きます printfDxで表示される文字も裏画面に描かれることになります





//👇🌞🌞🌞🌞🌞ここから自分の飛行機と赤い敵の飛行機の設定です





struct Character jibunnohikouki;

//👆🌞jibunnohikoukiの構造体変数宣言です


jibunnohikouki.x = 0;


jibunnohikouki.y = 0;


jibunnohikouki.graphichandle[0] = LoadGraph("画像データ\\ソーラーが描いた飛行機.bmp");


jibunnohikouki.graphichandle[1] = LoadGraph("画像データ\\ソーラーが描いた飛行機1.bmp");


jibunnohikouki.graphichandle[2] = LoadGraph("画像データ\\ソーラーが描いた飛行機2.bmp");


jibunnohikouki.graphichandle[3] = LoadGraph("画像データ\\ソーラーが描いた飛行機3.bmp");


jibunnohikouki.graphichandle[4] = LoadGraph("画像データ\\ソーラーが描いた飛行機4.bmp");


jibunnohikouki.graphichandle[5] = LoadGraph("画像データ\\ソーラーが描いた飛行機5.bmp");


jibunnohikouki.graphichandle[6] = LoadGraph("画像データ\\ソーラーが描いた飛行機6.bmp");


jibunnohikouki.life = 600;//👈🌞🌞🌞 jibunnohikouki.life に格納される値を600にしてみました🌞🌞🌞



jibunnohikouki.graphicnumber = 0;

//👆 jibunnohikouki.graphicnumberは😋自分の飛行機😋のアニメーションパターンをとりあつかっています


//👆🌞構造体変数jibunnohikoukiのメンバ変数の初期化を行っています

//👆 構造体変数jibunnohikoukiは😋自分の飛行機😋のデータをとりあつかっています



struct Character akaitekinohikouki[10];

//👆🌞敵の飛行機を10体登場させています


for (int i = 0; i < 10; i++) {


akaitekinohikouki[i].x = 1000;//💖ここです 1000で初期化しました


akaitekinohikouki[i].y = 35 * i;


akaitekinohikouki[i].graphichandle[0] = LoadGraph("画像データ\\赤い敵の飛行機1.8.bmp");


akaitekinohikouki[i].graphichandle[1] = LoadGraph("画像データ\\赤い敵の飛行機1.3.bmp");


akaitekinohikouki[i].graphichandle[2] = LoadGraph("画像データ\\赤い敵の飛行機2.3.bmp");


akaitekinohikouki[i].graphichandle[3] = LoadGraph("画像データ\\赤い敵の飛行機3.3.bmp");


akaitekinohikouki[i].graphichandle[4] = LoadGraph("画像データ\\赤い敵の飛行機4.3.bmp");


akaitekinohikouki[i].graphichandle[5] = LoadGraph("画像データ\\赤い敵の飛行機5.3.bmp");


akaitekinohikouki[i].graphichandle[6] = LoadGraph("画像データ\\赤い敵の飛行機6.5.bmp");




akaitekinohikouki[i].graphicnumber = 128 * GetRand(6);


//👆 akaitekinohikouki[i].graphicnumberは😋敵の飛行機😋のアニメーションパターンをとりあつかっています


//👆ここです🌞🌞🌞ここでAkai tekinohikouki[i].graphicnumberにランダムに0,128,256,384,512,640,768の値が代入されることになります




akaitekinohikouki[i].life = 100;//👈🌞🌞🌞敵の飛行機に自分の弾が100発当たると破壊されるようにしました




}


struct Character jibunnotama[11];

//🌞👆自分の弾を11個作成しています

for (int i = 0; i < 10; i = i + 1) {


jibunnotama[i].x = 0;

jibunnotama[i].y = 0;


jibunnotama[i].graphichandle[0] = LoadGraph("画像データ\\自分の弾.bmp");


jibunnotama[i].life = 0;


}


jibunnotama[10].x = 641;

jibunnotama[10].y = 0;


//🌞🌞🌞見えない弾にするために jibunnotama[10].graphichandle[0] は画像データで初期化しません

jibunnotama[10].life = 0;




struct Character jibunnotama_lazer[11];

//🌞👆自分のレーザー弾を11個作成しています

for (int i = 0; i < 10; i = i + 1) {


jibunnotama_lazer[i].x = 0;

jibunnotama_lazer[i].y = 0;


jibunnotama_lazer[i].graphichandle[0] = LoadGraph("画像データ\\レーザー.bmp");//👈🌞🌞🌞💖💖💖ここです 自分のレーザー弾の画像データを読み込みます




jibunnotama_lazer[i].life = 0;


}



jibunnotama_lazer[10].x = 641;

jibunnotama_lazer[10].y = 0;


//🌞🌞🌞見えないレーザー弾にするために jibunnotama[10].graphichandle[0] は初期化しません

jibunnotama_lazer[10].life = 0;






struct Character akaitekinohikoukinotama[10][10];


//🌞👆敵の飛行機、敵の飛行機1、敵の飛行機2、敵の飛行機3、敵の飛行機4、敵の飛行機5、敵の飛行機6、敵の飛行機7 、敵の飛行機8、敵の飛行機9、敵の飛行機10から発射される10個の敵の弾のデータをとりあつかうために100個の構造体変数を作成しています



for (int i = 0; i < 10; i = i + 1) {


for (int j = 0; j < 10; j = j + 1) {


akaitekinohikoukinotama[i][j].x = 1000;

akaitekinohikoukinotama[i][j].y = 1000;


akaitekinohikoukinotama[i][j].graphichandle[0] = LoadGraph("画像データ\\敵の飛行機の弾ハート.bmp");


akaitekinohikoukinotama[i][j].life = 0;


}


}





struct Character akaitekinohikoukinobakuhatunohonoo[10];

//👆🌞構造体変数akaitekinohikoukinobakuhatunohonoo[0], akaitekinohikoukinobakuhatunohonoo[1]… akaitekinohikoukinobakuhatunohonoo[9]を作成し爆発の炎のデータを取り扱います


for (int i = 0; i < 10; i++) {


akaitekinohikoukinobakuhatunohonoo[i].x = 0;


akaitekinohikoukinobakuhatunohonoo[i].y = 0;


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[0] = LoadGraph("画像データ\\爆発の炎.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[1] = LoadGraph("画像データ\\爆発の炎1.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[2] = LoadGraph("画像データ\\爆発の炎2.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[3] = LoadGraph("画像データ\\爆発の炎3.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[4] = LoadGraph("画像データ\\爆発の炎4.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[5] = LoadGraph("画像データ\\爆発の炎5.bmp");


akaitekinohikoukinobakuhatunohonoo[i].graphichandle[6] = LoadGraph("画像データ\\爆発の炎6.bmp");



akaitekinohikoukinobakuhatunohonoo[i].life = 0;//🌞🌞🌞 bakuhatunohonoo.lifeを初期化しています



akaitekinohikoukinobakuhatunohonoo[i].graphicnumber = 0; //🌞🌞🌞爆発の炎ごとにgraphicnumberを用意して初期化しています


}



struct Character akaitekinohikoukiwooouhikari;


akaitekinohikoukiwooouhikari.x = 0;


akaitekinohikoukiwooouhikari.y = 0;


akaitekinohikoukiwooouhikari.graphichandle[0] = LoadGraph("画像データ\\赤い敵の飛行機を覆う光.bmp");




akaitekinohikoukiwooouhikari.life = 0;




struct Character jibunnohikoukinobakuhatunohonoo;

//👆🌞構造体変数jibunnohikoukinobakuhatunohonooを作成し自分の飛行機の爆発の炎のデータを取り扱います




jibunnohikoukinobakuhatunohonoo.x = 0;


jibunnohikoukinobakuhatunohonoo.y = 0;


jibunnohikoukinobakuhatunohonoo.graphichandle[0] = LoadGraph("画像データ\\自分の飛行機の爆発の炎.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[1] = LoadGraph("画像データ\\自分の飛行機の爆発の炎1.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[2] = LoadGraph("画像データ\\自分の飛行機の爆発の炎2.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[3] = LoadGraph("画像データ\\自分の飛行機の爆発の炎3.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[4] = LoadGraph("画像データ\\自分の飛行機の爆発の炎4.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[5] = LoadGraph("画像データ\\自分の飛行機の爆発の炎5.bmp");


jibunnohikoukinobakuhatunohonoo.graphichandle[6] = LoadGraph("画像データ\\自分の飛行機の爆発の炎6.bmp");



jibunnohikoukinobakuhatunohonoo.life = 0;//🌞🌞🌞 jibunnohikoukinobakuhatunohonoo.lifeを初期化しています



jibunnohikoukinobakuhatunohonoo.graphicnumber = 0; //🌞🌞🌞自分の飛行機の爆発の炎のgraphicnumberを用意して初期化しています



struct Character jibunnohikoukiwooouhikari;



jibunnohikoukiwooouhikari.x = 0;


jibunnohikoukiwooouhikari.y = 0;


jibunnohikoukiwooouhikari.graphichandle[0] = LoadGraph("画像データ\\ソーラーが描いた飛行機を覆う光.bmp");



jibunnohikoukiwooouhikari.life = 0;




int jibunnotama_tsix[11];//🌞🌞🌞jibunnotama_tsix[i]には自分の飛行機から発射される弾の最初の位置のx座標が代入されることになります tは弾、sは最初、iは位置、xはx座標を表しています


for (int i = 0; i < 11; i++) {


jibunnotama_tsix[i] = 0;


}






int jibunnotama_count[11];//🌞🌞🌞ここでint型の変数count[i](0<=i<=10)を作製し0で初期化しました


for (int i = 0; i < 11; i++) {


jibunnotama_count[i] = 0;


}




int jibunnotama_lazer_tsix[11];//🌞🌞🌞jibunnotama_lazer_tsix[i]には自分の飛行機から発射されるレーザー弾の最初の位置のx座標が代入されることになります tは弾、sは最初、iは位置、xはx座標を表しています


for (int i = 0; i < 11; i++) {


jibunnotama_lazer_tsix[i] = 0;


}






int jibunnotama_lazer_count[11];//🌞🌞🌞ここでint型の変数count[i] (0<=i<=10)を作製し0で初期化しました


for (int i = 0; i < 11; i++) {


jibunnotama_lazer_count[i] = 0;


}









int akaitekinohikoukinotama_count[10][10];


for (int i = 0; i < 10; i = i + 1) {


for (int j = 0; j < 10; j = j + 1) {


akaitekinohikoukinotama_count[i][j] = 0;


}


}


int akaitekinohikoukinotama_tsix[10][10]; //🌞🌞🌞 akaitekinohikoukinotama_tsix[i][j]には発射される敵の弾[i][j]の発射される位置のx座標が代入されることになります tは弾、sは最初、iは位置、xはx座標を表しています


for (int i = 0; i < 10; i = i + 1) {


for (int j = 0; j < 10; j = j + 1) {


akaitekinohikoukinotama_tsix[i][j] = 0;


}


}


double akaitekinohikoukinoidoupattern[4][3] = { {20,-0.1, 0.1},{20,-0.1,-0.1},{20,-0.1, 0.1},{20,-0.1,-0.1} };//👈🌞🌞🌞🌞🌞ここです。0.1、-0.1に注目です。敵の飛行機の移動速度は1ドットのときの10分の1になります



int akaitekinohikouki_m = 0;


int akaitekinohikouki_repeat = akaitekinohikoukinoidoupattern[0][0];






int hassyasareru_jibunnotama = 0;


int hassyasareru_akaitekinohikoukinotama[10];





for (int i = 0; i < 10; i++) {


hassyasareru_akaitekinohikoukinotama[i] = 0;


}


int hassyasareru_jibunnotama_lazer = 0;


//👆🌞🌞🌞🌞🌞ここまでが自分の飛行機と赤い敵の飛行機の設定です






//👇🌞🌞🌞🌞🌞ここからは敵の飛行機ルルの設定です




struct Character RuRu[1];

//👆🌞敵の飛行機ルルを1体登場させています


for (int i = 0; i < 1; i++) {


RuRu[i].x = 605;


RuRu[i].y = 200;


RuRu[i].graphichandle[0] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[1] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[2] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[3] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[4] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[5] = LoadGraph("画像データ\\ルル18.bmp");


RuRu[i].graphichandle[6] = LoadGraph("画像データ\\ルル18.bmp");




RuRu[i].graphicnumber = 128 * GetRand(6);


//👆 RuRu[i].graphicnumberは😋敵の飛行機ルル😋のアニメーションパターンをとりあつかっています


//👆ここです🌞🌞🌞ここでRuRu[i].graphicnumberにランダムに0,128,256,384,512,640,768の値が代入されることになります




RuRu[i].life = 10000;//👈🌞🌞🌞敵の飛行機ルルに自分の弾が10000発当たると破壊されるようにしました




}





struct Character RuRunotama[1][10];



//🌞👆敵の飛行機(ルル)から発射される10個の敵の弾のデータをとりあつかうために10個の構造体変数を作成しています



for (int i = 0; i < 1; i = i + 1) {


for (int j = 0; j < 10; j = j + 1) {


RuRunotama[i][j].x = 1000;

RuRunotama[i][j].y = 1000;


RuRunotama[i][j].graphichandle[0] = LoadGraph("画像データ\\敵の飛行機の弾ハート.bmp");


RuRunotama[i][j].life = 0;


}


}


struct Character RuRuwooouhikari;


RuRuwooouhikari.x = 0;


RuRuwooouhikari.y = 0;


RuRuwooouhikari.graphichandle[0] = LoadGraph("画像データ\\ルルを覆う光0.1.bmp");//👈🌞🌞🌞💖画像をルルを覆う光0.1に変更しました




RuRuwooouhikari.life = 0;



struct Character RuRunobakuhatunohonoo[1];

//👆🌞構造体変数RuRunobakuhatunohonoo[0]を作成しルルの爆発の炎のデータを取り扱います


for (int i = 0; i < 1; i++) {


RuRunobakuhatunohonoo[i].x = 0;


RuRunobakuhatunohonoo[i].y = 0;


RuRunobakuhatunohonoo[i].graphichandle[0] = LoadGraph("画像データ\\ルルの爆発の炎0.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[1] = LoadGraph("画像データ\\ルルの爆発の炎1.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[2] = LoadGraph("画像データ\\ルルの爆発の炎2.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[3] = LoadGraph("画像データ\\ルルの爆発の炎3.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[4] = LoadGraph("画像データ\\ルルの爆発の炎4.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[5] = LoadGraph("画像データ\\ルルの爆発の炎5.1.bmp");


RuRunobakuhatunohonoo[i].graphichandle[6] = LoadGraph("画像データ\\ルルの爆発の炎6.1bmp");



RuRunobakuhatunohonoo[i].life = 0;//🌞🌞🌞 RuRunobakuhatunohonoo[0].lifeを初期化しています



RuRunobakuhatunohonoo[i].graphicnumber = 0; //🌞🌞🌞ルルの爆発の炎をアニメーションさせるためのgraphicnumberを用意して初期化しています


}





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;


}


}


double RuRunoidoupattern[4][3] = { {20,-0.1, 0.1},{20,-0.1,-0.1},{20,-0.1, 0.1},{20,-0.1,-0.1} };//👈🌞🌞🌞🌞🌞ここです。0.1,-0.1に注目。敵の飛行機ルルの移動速度は1ドットのときの10分の1になります


int RuRu_m = 0;


int RuRu_repeat = RuRunoidoupattern[0][0];




int hassyasareru_RuRunotama[1];



for (int i = 0; i < 1; i++) {


hassyasareru_RuRunotama[i] = 0;


}





//👆🌞🌞🌞🌞🌞ここまでが敵の飛行機ルルの設定です



//👇🌞🌞🌞🌞🌞ここから敵の飛行機ミミの設定です


struct Character MiMi;

//👆🌞MiMiの構造体変数宣言です


MiMi.x = 340;


MiMi.y = 200;


MiMi.graphichandle[0] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[1] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[2] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[3] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[4] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[5] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.graphichandle[6] = LoadGraph("画像データ\\ミミ.bmp");


MiMi.life = 5;//👈🌞🌞🌞 MiMi.life に格納される値を5にしてみました🌞🌞🌞



MiMi.graphicnumber = 0;

//👆 MiMi.graphicnumberは😋ミミ😋のアニメーションパターンをとりあつかっています


//👆🌞構造体変数MiMiのメンバ変数の初期化を行っています

//👆 構造体変数MiMiは😋ミミ😋のデータをとりあつかっています


//👆🌞🌞🌞🌞🌞ここまで敵の飛行機ミミの設定です





//🌞🌞🌞👇ここからがオレンジリング100体の設定です


struct Character orange_ring[100];

//👆🌞オレンジリングを100体登場させています


for (int i = 0; i < 100; i++) {


orange_ring[i].x = 590;


orange_ring[i].y = 200;


orange_ring[i].graphichandle[0] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[1] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[2] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[3] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[4] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[5] = LoadGraph("画像データ\\オレンジリング.bmp");


orange_ring[i].graphichandle[6] = LoadGraph("画像データ\\オレンジリング.bmp");




orange_ring[i].graphicnumber = 0;


//👆 orange_ring[i].graphicnumberは😋オレンジリング😋のアニメーションパターンをとりあつかっています


orange_ring[i].life = 100;//👈🌞🌞🌞オレンジリングに自分の弾が100発当たると破壊されるようにしました




}


double orange_ringnoidoupattern[4][3] = { {2000,-5, 0},{2000,0,-5},{2000,5, 0},{2000,0,5} };//👈🌞🌞🌞🌞🌞ここです。5、-5に注目です。オレンジリングはwhile{}文のブロック{}内の命令文が1回繰り返し実行されるたびに5ドット単位で移動することになります


int orange_ring_m = 0;


int orange_ring_repeat = orange_ringnoidoupattern[0][0];



//🌞🌞🌞👆ここまでがオレンジリング100体の設定です








//👇レーザーマークの設定を行なっています


struct Character lazermark;


//👆🌞 lazermarkの構造体変数宣言です


lazermark.x = 640;


lazermark.y = 240;


lazermark.graphichandle[0] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[1] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[2] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[3] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[4] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[5] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.graphichandle[6] = LoadGraph("画像データ\\レーザーマーク.bmp");


lazermark.life = 0;//👈🌞🌞🌞 lazermark.life に格納される値を0にしてみました🌞🌞🌞



lazermark.graphicnumber = 0;

//👆 lazermark.graphicnumberは😋レーザーマーク😋のアニメーションパターンをとりあつかっています


//👆🌞構造体変数lazermarkのメンバ変数の初期化を行っています

//👆 構造体変数lazermarkは😋レーザーマーク😋のデータをとりあつかっています


double lazermarknoidoupattern[4][3] = { {20,-1, 1},{20,-1,-1},{20,-1, 1},{20,-1,-1} };


int lazermark_m = 0;


int lazermark_repeat = lazermarknoidoupattern[0][0];


//👆レーザーマークの設定を行なっています



//👇ミサイルマークの設定を行なっています


struct Character misslemark;


//👆🌞 misslemarkの構造体変数宣言です


misslemark.x = 640;


misslemark.y = 240;


misslemark.graphichandle[0] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[1] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[2] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[3] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[4] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[5] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.graphichandle[6] = LoadGraph("画像データ\\ミサイルマーク.bmp");


misslemark.life = 0;//👈🌞🌞🌞 misslemark.life に格納される値は0で初期化してみました🌞🌞🌞



misslemark.graphicnumber = 0;

//👆 misslemark.graphicnumberは😋ミサイルマーク😋のアニメーションパターンをとりあつかっています


//👆🌞構造体変数misslemarkのメンバ変数の初期化を行っています

//👆 構造体変数misslemarkは😋ミサイルマーク😋のデータをとりあつかっています


double misslemarknoidoupattern[4][3] = { {20,-1, 1},{20,-1,-1},{20,-1, 1},{20,-1,-1} };


int misslemark_m = 0;


int misslemark_repeat = misslemarknoidoupattern[0][0];


//👆ミサイルマークの設定を行なっています



int jibunnotamamode = 0;

int option_nekonotamamode = 0;

//初期設定ではjibunnotamamodeとoption_nekonotamamodeに格納されている値は0なので自分の飛行機から普通の弾が発射されます




//👇🌞オプション猫の設定です


struct Character option_neko;

//👆🌞option_nekoの構造体変数宣言です


option_neko.x = 100;//オプション猫のいる位置のx座標です


option_neko.y = 240;//オプション猫のいる位置のy座標です


option_neko.graphichandle[0] = LoadGraph("画像データ\\オプション猫.bmp");


option_neko.graphichandle[1] = LoadGraph("画像データ\\オプション猫1.bmp");


option_neko.graphichandle[2] = LoadGraph("画像データ\\オプション猫2.bmp");


option_neko.graphichandle[3] = LoadGraph("画像データ\\オプション猫3.bmp");


option_neko.graphichandle[4] = LoadGraph("画像データ\\オプション猫4.bmp");


option_neko.graphichandle[5] = LoadGraph("画像データ\\オプション猫5.bmp");


option_neko.graphichandle[6] = LoadGraph("画像データ\\オプション猫6.bmp");


option_neko.life = 600;//👈🌞🌞🌞 option_neko.life に格納される値を600にしてみました🌞🌞🌞



option_neko.graphicnumber = 0;

//👆 option_neko.graphicnumberは😋オプション猫😋のアニメーションパターンをとりあつかっています


//👆🌞構造体変数option_nekoのメンバ変数の初期化を行っています

//👆 構造体変数option_nekoは😋オプション猫😋のデータをとりあつかっています




struct Character option_nekonotama[11];

//🌞👆オプション猫の弾を11個作成しています

for (int i = 0; i < 10; i = i + 1) {


option_nekonotama[i].x = 0;

option_nekonotama[i].y = 0;


option_nekonotama[i].graphichandle[0] = LoadGraph("画像データ\\自分の弾.bmp");


option_nekonotama[i].life = 0;


}


option_nekonotama[10].x = 641;

option_nekonotama[10].y = 0;


//🌞🌞🌞見えない弾にするために option_nekonotama[10].graphichandle[0] は画像データで初期化しません

option_nekonotama[10].life = 0;


//👆🌞🌞🌞自分の飛行機とオプション猫から発射させる弾を一致させるために同じ画像データを読み込んでいます



struct Character option_nekonotama_lazer[11];

//🌞👆オプション猫のレーザー弾を11個作成しています

for (int i = 0; i < 10; i = i + 1) {


option_nekonotama_lazer[i].x = 0;

option_nekonotama_lazer[i].y = 0;


option_nekonotama_lazer[i].graphichandle[0] = LoadGraph("画像データ\\レーザー.bmp");//👈🌞🌞🌞💖💖💖ここです オプション猫のレーザー弾の画像データを読み込みます




option_nekonotama_lazer[i].life = 0;


}



option_nekonotama_lazer[10].x = 641;

option_nekonotama_lazer[10].y = 0;


//🌞🌞🌞見えないレーザー弾にするために option_nekonotama[10].graphichandle[0] は初期化しません

option_nekonotama_lazer[10].life = 0;



//👆🌞🌞🌞自分の飛行機とオプション猫から発射させる弾を一致させるために同じ画像データを読み込んでいます



struct Character option_nekonobakuhatunohonoo;

//👆🌞構造体変数option_nekonobakuhatunohonooを作成し自分の飛行機の爆発の炎のデータを取り扱います




option_nekonobakuhatunohonoo.x = 0;


option_nekonobakuhatunohonoo.y = 0;


option_nekonobakuhatunohonoo.graphichandle[0] = LoadGraph("画像データ\\自分の飛行機の爆発の炎.bmp");


option_nekonobakuhatunohonoo.graphichandle[1] = LoadGraph("画像データ\\自分の飛行機の爆発の炎1.bmp");


option_nekonobakuhatunohonoo.graphichandle[2] = LoadGraph("画像データ\\自分の飛行機の爆発の炎2.bmp");


option_nekonobakuhatunohonoo.graphichandle[3] = LoadGraph("画像データ\\自分の飛行機の爆発の炎3.bmp");


option_nekonobakuhatunohonoo.graphichandle[4] = LoadGraph("画像データ\\自分の飛行機の爆発の炎4.bmp");


option_nekonobakuhatunohonoo.graphichandle[5] = LoadGraph("画像データ\\自分の飛行機の爆発の炎5.bmp");


option_nekonobakuhatunohonoo.graphichandle[6] = LoadGraph("画像データ\\自分の飛行機の爆発の炎6.bmp");



option_nekonobakuhatunohonoo.life = 0;//🌞🌞🌞 option_nekonobakuhatunohonoo.lifeを初期化しています



option_nekonobakuhatunohonoo.graphicnumber = 0; //🌞🌞🌞自分の飛行機の爆発の炎のgraphicnumberを用意して初期化しています



struct Character option_nekowooouhikari;



option_nekowooouhikari.x = 0;


option_nekowooouhikari.y = 0;


option_nekowooouhikari.graphichandle[0] = LoadGraph("画像データ\\ニャーが表示される画像7.bmp");



option_nekowooouhikari.life = 0;




int option_nekonotama_tsix[11];//🌞🌞🌞 option_nekonotama_tsix[i]にはオプション猫の飛行機から発射される弾の最初の位置のx座標が代入されることになります tは弾、sは最初、iは位置、xはx座標を表しています


for (int i = 0; i < 11; i++) {


option_nekonotama_tsix[i] = 0;


}






int option_nekonotama_count[11];//🌞🌞🌞ここでint型の変数option_nekonotama_count[i](0<=i<=10)を作製し0で初期化しました


for (int i = 0; i < 11; i++) {


option_nekonotama_count[i] = 0;


}




int option_nekonotama_lazer_tsix[11];//🌞🌞🌞 option_nekonotama_lazer_tsix[i]にはオプション猫から発射されるレーザー弾の最初の位置のx座標が代入されることになります tは弾、sは最初、iは位置、xはx座標を表しています


for (int i = 0; i < 11; i++) {


option_nekonotama_lazer_tsix[i] = 0;


}






int option_nekonotama_lazer_count[11];//🌞🌞🌞ここでint型の変数option_nekonotama_lazer_ count[i] (0<=i<=10)を作製し0で初期化しました


for (int i = 0; i < 11; i++) {


option_nekonotama_lazer_count[i] = 0;


}



int hassyasareru_option_nekonotama = 0;


int hassyasareru_option_nekonotama_lazer = 0;


int option_neko_counter = 0;


//👆🌞🌞🌞🌞🌞ここまでがオプション猫の設定です





//👆🌞オプション猫の設定です




int FontHandle;


FontHandle = CreateFontToHandle(NULL, 10, 3);

// 👆CreateFontToHandle(NULL, 10, 3)が実行されると書体のデータ(フォント)に対応する値が戻り値としてCreateFontToHandle(NULL, 10, 3)に返されます

// 👆FontHandle に書体のデータ(フォント)に対応する値を代入しています






int FontHandle1;


FontHandle1 = CreateFontToHandle(NULL, 15, 0);

// 👆CreateFontToHandle(NULL, 15, 0)が実行されると書体のデータ(フォント)に対応する値が戻り値としてCreateFontToHandle(NULL, 15, 0)に返されます

// 👆FontHandle1に書体のデータ(フォント)に対応する値を代入しています




SetFontSize(8);



int framecounter = 0;//👈🌞🌞🌞フレームカウンターを0で初期化しています















while (CheckHitKey(KEY_INPUT_ESCAPE) == 0 && ProcessMessage() == 0) {



//👇🌞🌞🌞今 何フレーム目なのかを表示します


DrawStringToHandle(0, 0, "frame counter", GetColor(255, 255, 255), FontHandle1);//👈🌞🌞🌞FontHandle1が用いられています


framecounter = framecounter + 1;


DrawFormatString(110, 5, GetColor(255, 255, 255), "%d", framecounter);




//👆🌞🌞🌞今 何フレーム目なのかを表示します




//👇🌞🌞🌞ライフゲージの設定です


DrawBox(100, 100, 500, 300, GetColor(0, 255, 255), TRUE);



DrawBox(20, 458, 624, 472, GetColor(255, 255, 0), TRUE);


DrawBox(22, 460, 622, 470, GetColor(255, 255, 255), TRUE);//




DrawBox(22, 460, jibunnohikouki.life + 22, 470, GetColor(255, 0, 255), TRUE);




DrawStringToHandle(0, 460, "LIFE", GetColor(255, 255, 255), FontHandle);//👈🌞🌞🌞FontHandleが用いられています




DrawFormatString(625, 460, GetColor(255, 255, 255), "%d", jibunnohikouki.life);



//👆🌞🌞🌞ライフゲージの設定です




//👇🌞🌞🌞自分の飛行機の挙動の設定の部分です


int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);



if (jibunnohikouki.life > 0) {


if (4 <= jibunnohikouki.y && jibunnohikouki.y <= 460) {

if (key & PAD_INPUT_UP) jibunnohikouki.y = jibunnohikouki.y - 4;

}



if (0 <= jibunnohikouki.y && jibunnohikouki.y <= 456) {


if (key & PAD_INPUT_DOWN) jibunnohikouki.y = jibunnohikouki.y + 4;

}


if (4 <= jibunnohikouki.x && jibunnohikouki.x <= 605) {


if (key & PAD_INPUT_LEFT) jibunnohikouki.x = jibunnohikouki.x - 4;

}


if (0 <= jibunnohikouki.x && jibunnohikouki.x <= 601) {


if (key & PAD_INPUT_RIGHT) jibunnohikouki.x = jibunnohikouki.x + 4;

}


}


if (jibunnohikouki.life > 0) {


DrawGraph(jibunnohikouki.x, jibunnohikouki.y, jibunnohikouki.graphichandle[(jibunnohikouki.graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞🌞 jibunnohikouki.graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞


jibunnohikouki.graphicnumber = jibunnohikouki.graphicnumber + 1;


}


//👆 jibunnohikouki.lifeに格納されている値が0より大きければ自分の飛行機の画像を描きます

//👆jibunnohikouki.lifeに格納されている値が0なら自分の飛行機の画像が描かれることはありません



if (jibunnohikoukiwooouhikari.life > 0) {



SetDrawBlendMode(DX_BLENDMODE_ALPHA, 200);


//👆🌞🌞🌞描画ブレンドモードがアルファブレンドになっています


DrawGraph(jibunnohikoukiwooouhikari.x, jibunnohikoukiwooouhikari.y, jibunnohikoukiwooouhikari.graphichandle[0], TRUE);



SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);

jibunnohikoukiwooouhikari.life = jibunnohikoukiwooouhikari.life - 1;


// 👆🌞🌞🌞描画ブレンドモードをノーブレンドにして描画ブレンドモードを解除しています

}



//👆🌞🌞🌞自分の飛行機を覆う光の画像が描かれます jibunnohikoukiwooouhikari.lifeに格納されている値が0になると自分の飛行機を覆う光の画像が描かれることはありません




if (jibunnohikoukinobakuhatunohonoo.life > 0) {


DrawGraph(jibunnohikoukinobakuhatunohonoo.x, jibunnohikoukinobakuhatunohonoo.y, jibunnohikoukinobakuhatunohonoo.graphichandle[(jibunnohikoukinobakuhatunohonoo.graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞 jibunnohikoukinobakuhatunohonoo.graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞

jibunnohikoukinobakuhatunohonoo.graphicnumber = jibunnohikoukinobakuhatunohonoo.graphicnumber + 1;

//👆🌞🌞🌞自分の飛行機の爆発の炎がアニメーションするよう設定が行われています



jibunnohikoukinobakuhatunohonoo.life = jibunnohikoukinobakuhatunohonoo.life - 1;



}


//👆 jibunnohikoukinobakuhatunohonoo.lifeに格納されている値が1以上なら自分の飛行機の爆発の炎の画像を描きます

//👆 jibunnohikoukinobakuhatunohonoo.lifeに格納されている値が0なら自分の飛行機の爆発の炎の画像が描かれることはありません





//👇🌞🌞🌞新型 自分の飛行機から弾が10連射されるプログラムです


//👇新たに11個目の弾jibunnotama[10]の登場です


if (jibunnohikouki.life > 0)


if (jibunnotamamode == 0)


if (jibunnotama[10].x > 640)

if (key & PAD_INPUT_A) {


if (jibunnotama[0].life == 0 && hassyasareru_jibunnotama == 0) {


jibunnotama[0].x = jibunnohikouki.x + 10;


jibunnotama[0].y = jibunnohikouki.y + 10;


jibunnotama_tsix[0] = jibunnotama[0].x;


jibunnotama[0].life = 1;


hassyasareru_jibunnotama = 1;


jibunnotama_count[0] = 30;//👈連射される自分の弾の最初の弾と次弾の間隔を調整することができます


}


}




for (int i = 0; i < 10; i++) {


if (jibunnotama_count[i] > 0) { jibunnotama_count[i] = jibunnotama_count[i] - 1; }



if (jibunnotama_count[i] == 0 && hassyasareru_jibunnotama == i + 1) {


if (jibunnotama[i + 1].life == 0) {


jibunnotama[i + 1].x = jibunnohikouki.x + 10;


jibunnotama[i + 1].y = jibunnohikouki.y + 10;


jibunnotama_tsix[i + 1] = jibunnotama[i + 1].x;


jibunnotama[i + 1].life = 1;


hassyasareru_jibunnotama = i + 2;


jibunnotama_count[i + 1] = 30;


}


}


}


if (jibunnotama_count[10] > 0) { jibunnotama_count[10] = jibunnotama_count[10] - 1; }




if (jibunnotama_count[10] == 0 && hassyasareru_jibunnotama == 11) {


hassyasareru_jibunnotama = 0;


}






for (int i = 0; i < 11; i = i + 1) {


if (jibunnotama[i].life == 1) {

//🌞🌞🌞 jibunnotama[i].lifeに1が代入されていると自分の弾jibunnnotama[i]がゲーム画面に表示されることになります jibunnnotama[i].lifeに0が代入されていると自分の弾jibunnnotama[i]がゲーム画面に表示されることはありません

DrawGraph(jibunnotama[i].x, jibunnotama[i].y, jibunnotama[i].graphichandle[0], TRUE);


jibunnotama[i].x = jibunnotama[i].x + 1;


if (jibunnotama[i].x - jibunnotama_tsix[i] > 640)


//🌞🌞🌞発射された自分の弾jibunnnotama[i]の位置のx座標が最初に自分の弾jibunnnotama[i]が発射されたときのjibunnnotama[i]の位置のx座標から🍑左へ🍑640を超えて離れると条件式jibunnotama[i].x - jibunnotama_tsix[i]は真の値1をとることになります

//🌞🌞🌞🌞🌞👆 jibunnnotama_tsix[i]には自分の弾jibunnnotama[i]が発射されたときの自分の弾jibunnnotama[i]のいる位置のx座標を記憶していたのでjibunnnotama[i].xが自分の弾jibunnnotama[i]が発射されたときの自分の弾jibunnnotama[i]のいる位置から640ドットを超えて離れた時、条件式jibunnotama[i].x- jibunnotama_tsix[i] > 640は真の値1を持つことになります

jibunnotama[i].life = 0;


}


}


//👆🌞🌞🌞新型 自分の飛行機から弾が10連射されるプログラムです




//👇🌞🌞🌞新型 自分の飛行機から💖レーザー弾💖が10連射されるプログラムです


//👇新たに11個目のレーザー弾jibunnotama_lazer[10]の登場です


if (jibunnohikouki.life > 0)


if (jibunnotamamode == 1)


if (jibunnotama_lazer[10].x > 640)


if (key & PAD_INPUT_A) {


if (jibunnotama_lazer[0].life == 0 && hassyasareru_jibunnotama_lazer == 0) {


jibunnotama_lazer[0].x = jibunnohikouki.x + 10;


jibunnotama_lazer[0].y = jibunnohikouki.y + 10;


jibunnotama_lazer_tsix[0] = jibunnotama_lazer[0].x;


jibunnotama_lazer[0].life = 1;


hassyasareru_jibunnotama_lazer = 1;


jibunnotama_lazer_count[0] = 30;//👈連射される自分のレーザー弾の最初の弾と次弾の間隔を調整することができます


}


}




for (int i = 0; i < 10; i++) {


if (jibunnotama_lazer_count[i] > 0) { jibunnotama_lazer_count[i] = jibunnotama_lazer_count[i] - 1; }



if (jibunnotama_lazer_count[i] == 0 && hassyasareru_jibunnotama_lazer == i + 1) {


if (jibunnotama_lazer[i + 1].life == 0) {


jibunnotama_lazer[i + 1].x = jibunnohikouki.x + 10;


jibunnotama_lazer[i + 1].y = jibunnohikouki.y + 10;


jibunnotama_lazer_tsix[i + 1] = jibunnotama[i + 1].x;


jibunnotama_lazer[i + 1].life = 1;


hassyasareru_jibunnotama_lazer = i + 2;


jibunnotama_lazer_count[i + 1] = 30;


}


}


}


if (jibunnotama_lazer_count[10] > 0) { jibunnotama_lazer_count[10] = jibunnotama_lazer_count[10] - 1; }




if (jibunnotama_lazer_count[10] == 0 && hassyasareru_jibunnotama_lazer == 11) {


hassyasareru_jibunnotama_lazer = 0;


}






for (int i = 0; i < 11; i = i + 1) {


if (jibunnotama_lazer[i].life > 0) {

//🌞🌞🌞 jibunnotama_lazer[i].lifeに0より大きな値が代入されていると自分のレーザー弾jibunnotama_lazer[i]がゲーム画面に表示されることになります jibunnotama_lazer[i].lifeに0が代入されていると自分のレーザー弾jibunnotama_lazer[i]がゲーム画面に表示されることはありません

DrawGraph(jibunnotama_lazer[i].x, jibunnotama_lazer[i].y, jibunnotama_lazer[i].graphichandle[0], TRUE);


jibunnotama_lazer[i].x = jibunnotama_lazer[i].x + 1;


if (jibunnotama_lazer[i].x - jibunnotama_lazer_tsix[i] > 640)

//🌞🌞🌞発射された自分のレーザー弾jibunnotama_lazer[i]の位置のx座標が発射されたときの最初の自分のレーザー弾jibunnotama_lazer[i]の位置のx座標から🍑左へ🍑640を超えて離れると条件式jibunnotama_lazer[i].x - jibunnotama_lazer_tsix[i]は真の値1をとることになります

//🌞🌞🌞🌞🌞👆 jibunnotama_lazer_tsix[i]には自分のレーザー弾jibunnotama_lazer[i]が発射されたときの自分のレーザー弾jibunnotama_lazer[i]のいる位置のx座標を記憶していたのでjibunnotama_lazer[i].xが自分の弾jibunnotama_lazer[i]が発射されたときの自分のレーザー弾jibunnotama_lazer[i]のいる位置から640ドット離れた時、条件式jibunnotama_lazer[i].x- jibunnotama_lazer_tsix[i] > 640は真の値1を持つことになります

jibunnotama_lazer[i].life = 0;


}


}


//👆🌞🌞🌞新型 自分の飛行機から💖レーザー弾💖が10連射されるプログラムです





//👆🌞🌞🌞自分の飛行機の挙動の設定の部分です




//👇🌞🌞🌞オプション猫の挙動の設定の部分です


if (option_neko_counter == 0)


if (option_neko.life > 0) {


option_neko.x = jibunnohikouki.x - 30;


option_neko.y = jibunnohikouki.y + 50;


option_neko_counter = 5;



}



option_neko_counter = option_neko_counter - 1;


if (option_neko_counter >= 0)


if (option_neko.life > 0) {


DrawGraph(option_neko.x, option_neko.y, option_neko.graphichandle[(option_neko.graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞🌞 option_neko.graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞


option_neko.graphicnumber = option_neko.graphicnumber + 1;


}


//👆 option_neko.lifeに格納されている値が0より大きければオプション猫の画像を描きます

//👆 option_neko.lifeに格納されている値が0ならオプション猫の画像が描かれることはありません



if (option_nekowooouhikari.life > 0) {



SetDrawBlendMode(DX_BLENDMODE_ALPHA, 200);


//👆🌞🌞🌞描画ブレンドモードがアルファブレンドになっています


DrawGraph(option_nekowooouhikari.x, option_nekowooouhikari.y, option_nekowooouhikari.graphichandle[0], TRUE);



SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);

option_nekowooouhikari.life = option_nekowooouhikari.life - 1;


// 👆🌞🌞🌞描画ブレンドモードをノーブレンドにして描画ブレンドモードを解除しています

}



//👆🌞🌞🌞オプション猫の飛行機を覆う光の画像が描かれます option_nekowooouhikari.lifeに格納されている値が0になるとオプション猫を覆う光の画像が描かれることはありません




if (option_nekonobakuhatunohonoo.life > 0) {


DrawGraph(option_nekonobakuhatunohonoo.x, option_nekonobakuhatunohonoo.y, option_nekonobakuhatunohonoo.graphichandle[(option_nekonobakuhatunohonoo.graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞 option_nekonobakuhatunohonoo.graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞

option_nekonobakuhatunohonoo.graphicnumber = option_nekonobakuhatunohonoo.graphicnumber + 1;

//👆🌞🌞🌞オプション猫の爆発の炎がアニメーションするよう設定が行われています



option_nekonobakuhatunohonoo.life = option_nekonobakuhatunohonoo.life - 1;



}


//👆 option_nekonobakuhatunohonoo.lifeに格納されている値が0より大きければオプション猫の爆発の炎の画像を描きます

//👆 option_nekonobakuhatunohonoo.lifeに格納されている値が0ならオプション猫の爆発の炎の画像が描かれることはありません





//👇🌞🌞🌞新型 オプション猫から弾が10連射されるプログラムです


//👇新たに11個目の弾option_nekonotama[10]の登場です


if (option_neko.life > 0)


if (option_nekonotamamode == 0)


if (option_nekonotama[10].x > 640)

if (key & PAD_INPUT_A) {


if (option_nekonotama[0].life == 0 && hassyasareru_option_nekonotama == 0) {


option_nekonotama[0].x = option_neko.x + 10;


option_nekonotama[0].y = option_neko.y + 10;


option_nekonotama_tsix[0] = option_nekonotama[0].x;


option_nekonotama[0].life = 1;


hassyasareru_option_nekonotama = 1;


option_nekonotama_count[0] = 30;//👈連射されるオプション猫の弾の最初の弾と次弾の間隔を調整することができます


}


}




for (int i = 0; i < 10; i++) {


if (option_nekonotama_count[i] > 0) { option_nekonotama_count[i] = option_nekonotama_count[i] - 1; }



if (option_nekonotama_count[i] == 0 && hassyasareru_option_nekonotama == i + 1) {


if (option_nekonotama[i + 1].life == 0) {


option_nekonotama[i + 1].x = option_neko.x + 10;


option_nekonotama[i + 1].y = option_neko.y + 10;


option_nekonotama_tsix[i + 1] = option_neko.x;


option_nekonotama[i + 1].life = 1;


hassyasareru_option_nekonotama = i + 2;


option_nekonotama_count[i + 1] = 30;


}


}


}


if (option_nekonotama_count[10] > 0) { option_nekonotama_count[10] = option_nekonotama_count[10] - 1; }




if (option_nekonotama_count[10] == 0 && hassyasareru_option_nekonotama == 11) {


hassyasareru_option_nekonotama = 0;


}






for (int i = 0; i < 11; i = i + 1) {


if (option_nekonotama[i].life == 1) {

//🌞🌞🌞 option_nekonotama[i].lifeに1が代入されているとオプション猫の弾option_nekonotama[i]がゲーム画面に表示されることになります option_nekonotama[i].lifeに0が代入されているとオプション猫の弾option_nekonotama[i]がゲーム画面に表示されることはありません

DrawGraph(option_nekonotama[i].x, option_nekonotama[i].y, option_nekonotama[i].graphichandle[0], TRUE);


option_nekonotama[i].x = option_nekonotama[i].x + 1;


if (option_nekonotama[i].x - option_nekonotama_tsix[i] > 640)

//🌞🌞🌞発射されたオプション猫の弾option_nekonotama[i]の位置のx座標が最初にオプション猫の弾option_nekonotama[i]が発射されたときのoption_nekonotama[i]の位置のx座標から🍑左へ🍑640を超えて離れると条件式option_nekonotama[i].x - option_nekonotama_tsix[i]は真の値1をとることになります

//🌞🌞🌞🌞🌞👆 option_nekonotama_tsix[i]にはオプション猫の弾option_nekonotama[i]が発射されたときのオプション猫の弾option_nekonotama[i]のいる位置のx座標を記憶していたのでoption_nekonotama[i].xがオプション猫の弾option_nekonotama[i]が発射されたときのオプション猫の弾option_nekonotama[i]のいる位置から640ドットを超えて離れた時、条件式option_nekonotama[i].x- option_nekonotama_tsix[i] > 640は真の値1を持つことになります

option_nekonotama[i].life = 0;


}


}


//👆🌞🌞🌞新型 オプション猫から弾が10連射されるプログラムです




//👇🌞🌞🌞新型 オプション猫から💖レーザー弾💖が10連射されるプログラムです


//👇新たに11個目のレーザー弾option_nekonotama_lazer[10]の登場です


if (option_neko.life > 0)


if (option_nekonotamamode == 1)


if (option_nekonotama_lazer[10].x > 640)


if (key & PAD_INPUT_A) {


if (option_nekonotama_lazer[0].life == 0 && hassyasareru_option_nekonotama_lazer == 0) {


option_nekonotama_lazer[0].x = option_neko.x + 10;


option_nekonotama_lazer[0].y = option_neko.y + 10;


option_nekonotama_lazer_tsix[0] = option_nekonotama_lazer[0].x;


option_nekonotama_lazer[0].life = 1;


hassyasareru_option_nekonotama_lazer = 1;


option_nekonotama_lazer_count[0] = 30;//👈連射される自分のレーザー弾の最初の弾と次弾の間隔を調整することができます


}


}




for (int i = 0; i < 10; i++) {


if (option_nekonotama_lazer_count[i] > 0) { option_nekonotama_lazer_count[i] = option_nekonotama_lazer_count[i] - 1; }



if (option_nekonotama_lazer_count[i] == 0 && hassyasareru_option_nekonotama_lazer == i + 1) {


if (option_nekonotama_lazer[i + 1].life == 0) {


option_nekonotama_lazer[i + 1].x = option_neko.x + 10;


option_nekonotama_lazer[i + 1].y = option_neko.y + 10;


option_nekonotama_lazer_tsix[i + 1] = option_nekonotama[i + 1].x;


option_nekonotama_lazer[i + 1].life = 1;


hassyasareru_option_nekonotama_lazer = i + 2;


option_nekonotama_lazer_count[i + 1] = 30;


}


}


}


if (option_nekonotama_lazer_count[10] > 0) { option_nekonotama_lazer_count[10] = option_nekonotama_lazer_count[10] - 1; }




if (jibunnotama_lazer_count[10] == 0 && hassyasareru_option_nekonotama_lazer == 11) {


hassyasareru_option_nekonotama_lazer = 0;


}






for (int i = 0; i < 11; i = i + 1) {


if (option_nekonotama_lazer[i].life == 1) {

//🌞🌞🌞 option_nekonotama_lazer[i].lifeに1が代入されているとオプション猫のレーザー弾option_nekonotama_lazer[i]がゲーム画面に表示されることになります option_nekonotama_lazer[i].lifeに0が代入されているとオプション猫のレーザー弾option_nekonotama_lazer[i]がゲーム画面に表示されることはありません

DrawGraph(option_nekonotama_lazer[i].x, option_nekonotama_lazer[i].y, option_nekonotama_lazer[i].graphichandle[0], TRUE);


option_nekonotama_lazer[i].x = option_nekonotama_lazer[i].x + 1;


if (option_nekonotama_lazer[i].x - option_nekonotama_lazer_tsix[i] > 640)

//🌞🌞🌞発射されたオプション猫のレーザー弾option_nekonotama_lazer[i]の位置のx座標が発射されたときの最初のオプション猫のレーザー弾option_nekonotama_lazer[i]の位置のx座標から🍑左へ🍑640を超えて離れると条件式option_nekonotama_lazer[i].x - option_nekonotama_lazer_tsix[i]は真の値1をとることになります

//🌞🌞🌞🌞🌞👆 option_nekonotama_lazer_tsix[i]にはオプション猫のレーザー弾option_nekonotama_lazer[i]が発射されたときのオプション猫のレーザー弾option_nekonotama_lazer[i]のいる位置のx座標を記憶していたのでoption_nekonotama_lazer[i].xがオプション猫の弾option_nekonotama_lazer[i]が発射されたときのオプション猫のレーザー弾option_nekonotama_lazer[i]のいる位置から640ドット離れた時、条件式option_nekonotama_lazer[i].x- option_nekonotama_lazer_tsix[i] > 640は真の値1を持つことになります

option_nekonotama_lazer[i].life = 0;


}


}


//👆🌞🌞🌞新型 オプション猫から💖レーザー弾💖が10連射されるプログラムです





//👆🌞🌞🌞オプション猫の挙動の設定の部分です




//👇🌞🌞🌞赤い敵の飛行機の挙動の設定の部分です



if (akaitekinohikouki_repeat > 0) {


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


akaitekinohikouki[i].x = akaitekinohikouki[i].x + akaitekinohikoukinoidoupattern[akaitekinohikouki_m][1];


akaitekinohikouki[i].y = akaitekinohikouki[i].y + akaitekinohikoukinoidoupattern[akaitekinohikouki_m][2];

}



}


akaitekinohikouki_repeat = akaitekinohikouki_repeat - 1;

}


if (akaitekinohikouki_repeat == 0) {


if (akaitekinohikouki_m < 4) {


akaitekinohikouki_repeat = akaitekinohikoukinoidoupattern[akaitekinohikouki_m][0];


akaitekinohikouki_m = akaitekinohikouki_m + 1;

}




if (akaitekinohikouki_m == 4) {

akaitekinohikouki_m = 0;

akaitekinohikouki_repeat = akaitekinohikoukinoidoupattern[akaitekinohikouki_m][0];


}


}



for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {



DrawGraph(akaitekinohikouki[i].x, akaitekinohikouki[i].y, akaitekinohikouki[i].graphichandle[(akaitekinohikouki[i].graphicnumber) / 128 % 7], TRUE);


akaitekinohikouki[i].graphicnumber = akaitekinohikouki[i].graphicnumber + 1;


//🌞🌞🌞 (akaitekinohikouki[i].graphicnumber)を128で割っているので通常のアニメーション速度の128分の1の速度で画像が切り替わります

//👆🌞🌞🌞ここです すでにakaitekinohikouki[i].graphicnumberには0,128,256,384,512,640,768の値のうちの1つがランダムに代入されているので敵の飛行機, 敵の飛行機1・・・敵の飛行機9はそれぞれ異なるタイミングでアニメーションすることになります


}


}


//🌞🌞🌞👇自分の飛行機と赤い敵の飛行機がぶつかったとき自分の飛行機と赤い敵の飛行機が消滅するプログラムはこちらです



if (jibunnohikouki.life > 0)


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


if ((jibunnohikouki.x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < jibunnohikouki.y + 20))

{


jibunnohikouki.life = 0;


akaitekinohikouki[i].life = 0;


//👆🌞自分の飛行機と赤い敵の飛行機が衝突すると共に消滅することになります



akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;



akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[0].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています




jibunnohikoukinobakuhatunohonoo.x = jibunnohikouki.x;


jibunnohikoukinobakuhatunohonoo.y = jibunnohikouki.y;


jibunnohikoukinobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 jibunnohikoukinobakuhatunohonoo.lifeに0以上の値を代入しました jibunnohikoukinobakuhatunohonoo.lifeにランダムに異なる値を代入することにより自分の飛行機が爆発する時間をランダムに変化させています



}

}


}

//🌞🌞🌞👆自分の飛行機と赤い敵の飛行機がぶつかったとき自分の飛行機と赤い敵の飛行機が消滅するプログラムはこちらです




//👇🌞🌞🌞自分の飛行機と赤い敵の飛行機の弾が衝突したとき当たった自分の飛行機と赤い敵の飛行機の弾が消え自分の飛行機が爆発する😊のプログラムです



for (int i = 0; i < 10; i++) {


for (int j = 0; j < 10; j++) {


if (akaitekinohikoukinotama[i][j].life > 0)


if (jibunnohikouki.life > 0) {


if ((jibunnohikouki.x < akaitekinohikoukinotama[i][j].x + 10) && (akaitekinohikoukinotama[i][j].x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < akaitekinohikoukinotama[i][j].y + 10) && (akaitekinohikoukinotama[i][j].y < jibunnohikouki.y + 20)) {


jibunnohikouki.life = jibunnohikouki.life - 1;


akaitekinohikoukinotama[i][j].life = 0;


//👆🌞自分の飛行機と赤い敵の飛行機の弾が衝突すると敵の弾だけが消滅することになります




jibunnohikoukiwooouhikari.x = jibunnohikouki.x;


jibunnohikoukiwooouhikari.y = jibunnohikouki.y;


//🌞🌞🌞 赤い敵の飛行機の弾と自分の飛行機がぶつかると、そのときの自分の飛行機の位置座標がjibunnohikoukiwooouhikari.x, jibunnohikoukiwooouhikari.yに代入されます


jibunnohikoukiwooouhikari.life = 5;






if (jibunnohikouki.life == 0) {


jibunnohikoukinobakuhatunohonoo.x = jibunnohikouki.x;


jibunnohikoukinobakuhatunohonoo.y = jibunnohikouki.y;


jibunnohikoukinobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 jibunnohikoukinobakuhatunohonoo.lifeに0以上の値を代入しました jibunnohikoukinobakuhatunohonoo.lifeにランダムに異なる値を代入することにより自分の飛行機が爆発する時間をランダムに変化させています

}



}

}


}


}


//👆🌞🌞🌞自分の飛行機と赤い敵の飛行機の弾が衝突したとき当たった自分の飛行機と赤い敵の飛行機の弾が消え自分の飛行機が爆発する😊のプログラムです







//👇🌞🌞🌞赤い敵の飛行機と自分の弾が衝突したとき当たった自分の弾と赤い敵の飛行機が消滅するプログラムです


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


for (int j = 0; j < 10; j++) {


if (jibunnotama[j].life > 0)


if ((jibunnotama[j].x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < jibunnotama[j].x + 15) && (jibunnotama[j].y < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < jibunnotama[j].y + 5)) {


jibunnotama[j].life = 0;


akaitekinohikouki[i].life = akaitekinohikouki[i].life - 1;


//👆🌞自分の弾と赤い敵の飛行機が衝突すると自分の弾は消滅しakaitekinohikouki[i].lifeに格納されている値は1減ることになります akaitekinohikouki[i].lifeに格納されている値が0になると赤い敵の飛行機は消滅することになります


akaitekinohikoukiwooouhikari.x = akaitekinohikouki[i].x;


akaitekinohikoukiwooouhikari.y = akaitekinohikouki[i].y;


//🌞🌞🌞自分の弾と赤い敵の飛行機がぶつかると赤い敵の飛行機の位置座標がakaitekinohikoukiwooouhikari.x, akaitekinohikoukiwooouhikari.yに代入されます


akaitekinohikoukiwooouhikari.life = 5;






if (akaitekinohikouki[i].life == 0) {


akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;


akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[i].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].life, akaitekinohikoukinobakuhatunohonoo[1].life, akaitekinohikoukinobakuhatunohonoo[2].life, akaitekinohikoukinobakuhatunohonoo[3].life, akaitekinohikoukinobakuhatunohonoo[4].life, akaitekinohikoukinobakuhatunohonoo[5].life, akaitekinohikoukinobakuhatunohonoo[6].life, akaitekinohikoukinobakuhatunohonoo[7].life, akaitekinohikoukinobakuhatunohonoo[8].life, akaitekinohikoukinobakuhatunohonoo[9].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞赤い敵の飛行機と自分の弾が衝突したとき当たった自分の弾と赤い敵の飛行機が消滅するプログラムです



//👇🌞🌞🌞赤い敵の飛行機と自分のレーザー弾が衝突したとき当たった自分のレーザー弾は消滅し赤い敵の飛行機のライフが1減るプログラムです


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


for (int j = 0; j < 10; j++) {


if (jibunnotama_lazer[j].life > 0)


if ((jibunnotama_lazer[j].x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < jibunnotama_lazer[j].x + 15) && (jibunnotama_lazer[j].y < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < jibunnotama_lazer[j].y + 5)) {


jibunnotama_lazer[j].life = 0;


akaitekinohikouki[i].life = 0;


//👆🌞自分のレーザー弾と赤い敵の飛行機が衝突すると自分のレーザー弾は消滅しakaitekinohikouki[i].lifeに格納されている値は1減ることになります akaitekinohikouki[i].lifeに格納されている値が0になると赤い敵の飛行機は消滅することになります


akaitekinohikoukiwooouhikari.x = akaitekinohikouki[i].x;


akaitekinohikoukiwooouhikari.y = akaitekinohikouki[i].y;


//🌞🌞🌞自分のレーザー弾と赤い敵の飛行機がぶつかると敵の飛行機の位置座標がakaitekinohikoukiwooouhikari.x, akaitekinohikoukiwooouhikari.yに代入されます


akaitekinohikoukiwooouhikari.life = 5;






if (akaitekinohikouki[i].life == 0) {


akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;


akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[i].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].life, akaitekinohikoukinobakuhatunohonoo[1].life, akaitekinohikoukinobakuhatunohonoo[2].life, akaitekinohikoukinobakuhatunohonoo[3].life, akaitekinohikoukinobakuhatunohonoo[4].life, akaitekinohikoukinobakuhatunohonoo[5].life, akaitekinohikoukinobakuhatunohonoo[6].life, akaitekinohikoukinobakuhatunohonoo[7].life, akaitekinohikoukinobakuhatunohonoo[8].life, akaitekinohikoukinobakuhatunohonoo[9].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞赤い敵の飛行機と自分のレーザー弾が衝突したとき当たった自分のレーザー弾は消滅し赤い敵の飛行機のライフが1減るプログラムです














//🌞🌞🌞👇オプション猫と赤い敵の飛行機がぶつかったときオプション猫と赤い敵の飛行機が消滅するプログラムはこちらです



if (option_neko.life > 0)


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


if ((option_neko.x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < option_neko.x + 35) && (option_neko.y + 7 < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < option_neko.y + 20))

{


option_neko.life = 0;


akaitekinohikouki[i].life = 0;


//👆🌞オプション猫と赤い敵の飛行機が衝突すると共に消滅することになります



akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;



akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[0].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています




option_nekonobakuhatunohonoo.x = option_neko.x;


option_nekonobakuhatunohonoo.y = option_neko.y;


option_nekonobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 option_nekonobakuhatunohonoo.lifeに0以上の値を代入しました option_nekonobakuhatunohonoo.lifeにランダムに異なる値を代入することによりオプション猫が爆発する時間をランダムに変化させています



}

}


}

//🌞🌞🌞👆オプション猫と赤い敵の飛行機がぶつかったときオプション猫と赤い敵の飛行機が消滅するプログラムはこちらです




//👇🌞🌞🌞オプション猫と赤い敵の飛行機の弾が衝突したとき当たったオプション猫と赤い敵の飛行機の弾が消えオプション猫が爆発する😊のプログラムです



for (int i = 0; i < 10; i++) {


for (int j = 0; j < 10; j++) {


if (akaitekinohikoukinotama[i][j].life > 0)


if (option_neko.life > 0) {


if ((option_neko.x < akaitekinohikoukinotama[i][j].x + 10) && (akaitekinohikoukinotama[i][j].x < option_neko.x + 35) && (option_neko.y + 7 < akaitekinohikoukinotama[i][j].y + 10) && (akaitekinohikoukinotama[i][j].y < option_neko.y + 20)) {


option_neko.life = option_neko.life - 1;


akaitekinohikoukinotama[i][j].life = 0;


//👆🌞オプション猫と赤い敵の飛行機の弾が衝突すると敵の弾だけが消滅することになります




option_nekowooouhikari.x = option_neko.x;


option_nekowooouhikari.y = option_neko.y;


//🌞🌞🌞 赤い敵の飛行機の弾とオプション猫がぶつかると、そのときのオプション猫の位置座標がoption_nekowooouhikari.x, option_nekowooouhikari.yに代入されます


option_nekowooouhikari.life = 5;






if (option_neko.life == 0) {


option_nekonobakuhatunohonoo.x = option_neko.x;


option_nekonobakuhatunohonoo.y = option_neko.y;


option_nekonobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 option_nekonobakuhatunohonoo.lifeに0以上の値を代入しました option_nekonobakuhatunohonoo.lifeにランダムに異なる値を代入することによりオプション猫が爆発する時間をランダムに変化させています

}



}

}


}


}


//👆🌞🌞🌞オプション猫と赤い敵の飛行機の弾が衝突したとき当たったオプション猫と赤い敵の飛行機の弾が消え自分の飛行機が爆発する😊のプログラムです







//👇🌞🌞🌞赤い敵の飛行機とオプション猫の弾が衝突したとき当たったオプション猫の弾と赤い敵の飛行機が消滅するプログラムです


for (int i = 0; i < 10; i++) {


if (option_neko.life > 0) {


for (int j = 0; j < 10; j++) {


if (option_nekonotama[j].life > 0)


if ((option_nekonotama[j].x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < option_nekonotama[j].x + 15) && (option_nekonotama[j].y < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < option_nekonotama[j].y + 5)) {


option_nekonotama[j].life = 0;


akaitekinohikouki[i].life = akaitekinohikouki[i].life - 1;


//👆🌞オプション猫と赤い敵の飛行機が衝突するとオプション猫の弾は消滅しakaitekinohikouki[i].lifeに格納されている値は1減ることになります akaitekinohikouki[i].lifeに格納されている値が0になると赤い敵の飛行機は消滅することになります


akaitekinohikoukiwooouhikari.x = akaitekinohikouki[i].x;


akaitekinohikoukiwooouhikari.y = akaitekinohikouki[i].y;


//🌞🌞🌞オプション猫の弾と赤い敵の飛行機がぶつかると赤い敵の飛行機の位置座標がakaitekinohikoukiwooouhikari.x, akaitekinohikoukiwooouhikari.yに代入されます


akaitekinohikoukiwooouhikari.life = 5;






if (akaitekinohikouki[i].life == 0) {


akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;


akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[i].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].life, akaitekinohikoukinobakuhatunohonoo[1].life, akaitekinohikoukinobakuhatunohonoo[2].life, akaitekinohikoukinobakuhatunohonoo[3].life, akaitekinohikoukinobakuhatunohonoo[4].life, akaitekinohikoukinobakuhatunohonoo[5].life, akaitekinohikoukinobakuhatunohonoo[6].life, akaitekinohikoukinobakuhatunohonoo[7].life, akaitekinohikoukinobakuhatunohonoo[8].life, akaitekinohikoukinobakuhatunohonoo[9].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞赤い敵の飛行機とオプション猫の弾が衝突したとき当たったオプション猫の弾と赤い敵の飛行機が消滅するプログラムです



//👇🌞🌞🌞赤い敵の飛行機とオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾は消滅し赤い敵の飛行機のライフが1減るプログラムです


for (int i = 0; i < 10; i++) {


if (akaitekinohikouki[i].life > 0) {


for (int j = 0; j < 10; j++) {


if (option_nekonotama_lazer[j].life > 0)


if ((option_nekonotama_lazer[j].x < akaitekinohikouki[i].x + 35) && (akaitekinohikouki[i].x < option_nekonotama_lazer[j].x + 15) && (option_nekonotama_lazer[j].y < akaitekinohikouki[i].y + 20) && (akaitekinohikouki[i].y < option_nekonotama_lazer[j].y + 5)) {


option_nekonotama_lazer[j].life = 0;


akaitekinohikouki[i].life = 0;


//👆🌞オプション猫のレーザー弾と赤い敵の飛行機が衝突するとオプション猫のレーザー弾は消滅しakaitekinohikouki[i].lifeに格納されている値は1減ることになります akaitekinohikouki[i].lifeに格納されている値が0になると赤い敵の飛行機は消滅することになります


akaitekinohikoukiwooouhikari.x = akaitekinohikouki[i].x;


akaitekinohikoukiwooouhikari.y = akaitekinohikouki[i].y;


//🌞🌞🌞オプション猫のレーザー弾と赤い敵の飛行機がぶつかると敵の飛行機の位置座標がakaitekinohikoukiwooouhikari.x, akaitekinohikoukiwooouhikari.yに代入されます


akaitekinohikoukiwooouhikari.life = 5;






if (akaitekinohikouki[i].life == 0) {


akaitekinohikoukinobakuhatunohonoo[i].x = akaitekinohikouki[i].x;


akaitekinohikoukinobakuhatunohonoo[i].y = akaitekinohikouki[i].y;


akaitekinohikoukinobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 akaitekinohikoukinobakuhatunohonoo[i].lifeに0以上の値を代入しました akaitekinohikoukinobakuhatunohonoo[0].life, akaitekinohikoukinobakuhatunohonoo[1].life, akaitekinohikoukinobakuhatunohonoo[2].life, akaitekinohikoukinobakuhatunohonoo[3].life, akaitekinohikoukinobakuhatunohonoo[4].life, akaitekinohikoukinobakuhatunohonoo[5].life, akaitekinohikoukinobakuhatunohonoo[6].life, akaitekinohikoukinobakuhatunohonoo[7].life, akaitekinohikoukinobakuhatunohonoo[8].life, akaitekinohikoukinobakuhatunohonoo[9].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞赤い敵の飛行機とオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾は消滅し赤い敵の飛行機のライフが1減るプログラムです





if (akaitekinohikoukiwooouhikari.life > 0) {



SetDrawBlendMode(DX_BLENDMODE_ALPHA, 200);


//👆🌞🌞🌞描画ブレンドモードがアルファブレンドになっています


DrawGraph(akaitekinohikoukiwooouhikari.x, akaitekinohikoukiwooouhikari.y, akaitekinohikoukiwooouhikari.graphichandle[0], TRUE);



SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 0);

akaitekinohikoukiwooouhikari.life = akaitekinohikoukiwooouhikari.life - 1;


// 👆🌞🌞🌞描画ブレンドモードをノーブレンドにして描画ブレンドモードを解除しています

}



//👆🌞🌞🌞赤い敵の飛行機を覆う光の画像が描かれます akaitekinohikoukiwooouhikari.lifeに格納されている値が0になると赤い敵の飛行機を覆う光の画像が描かれることはありません


for (int i = 0; i < 10; i++) {


if (akaitekinohikoukinobakuhatunohonoo[i].life > 0) {


DrawGraph(akaitekinohikoukinobakuhatunohonoo[i].x, akaitekinohikoukinobakuhatunohonoo[i].y, akaitekinohikoukinobakuhatunohonoo[i].graphichandle[(akaitekinohikoukinobakuhatunohonoo[i].graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞 akaitekinohikoukinobakuhatunohonoo[i].graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞

akaitekinohikoukinobakuhatunohonoo[i].graphicnumber = akaitekinohikoukinobakuhatunohonoo[i].graphicnumber + 1;

//👆🌞🌞🌞爆発の炎がアニメーションするよう設定が行われています



akaitekinohikoukinobakuhatunohonoo[i].life = akaitekinohikoukinobakuhatunohonoo[i].life - 1;



}


//👆 akaitekinohikoukinobakuhatunohonoo[i].lifeに格納されている値が1なら爆発の炎の画像を描きます

//👆 akaitekinohikoukinobakuhatunohonoo[i].lifeに格納されている値が0なら爆発の炎の画像が描かれることはありません


}






//👇🌞🌞🌞新型 赤い敵の飛行機10体から敵の弾が10連射されるプログラムです





for (int i = 0; i < 10; i = i + 1) {



if (akaitekinohikouki[i].life > 1 && GetRand(15) == 0 && akaitekinohikoukinotama[i][0].life == 0 && hassyasareru_akaitekinohikoukinotama[i] == 0) {


akaitekinohikoukinotama[i][0].x = akaitekinohikouki[i].x - 10;


akaitekinohikoukinotama[i][0].y = akaitekinohikouki[i].y + 10;


akaitekinohikoukinotama_tsix[i][0] = akaitekinohikoukinotama[i][0].x;


akaitekinohikoukinotama[i][0].life = 1;


hassyasareru_akaitekinohikoukinotama[i] = 1;


akaitekinohikoukinotama_count[i][0] = 20 + GetRand(25);//👈🌞🌞🌞赤い敵akaitekinohikouki[i]から10連射される最初の弾akaitekinohikoukinotama[i][0]と次弾akaitekinohikoukinotama[i][1]の間隔を調整することができます



}




for (int j = 0; j < 9; j++) {


if (akaitekinohikoukinotama_count[i][j] > 0) { akaitekinohikoukinotama_count[i][j] = akaitekinohikoukinotama_count[i][j] - 1; }



if (akaitekinohikoukinotama_count[i][j] == 0 && hassyasareru_akaitekinohikoukinotama[i] == j + 1) {


if (akaitekinohikoukinotama[i][j + 1].life == 0) {


akaitekinohikoukinotama[i][j + 1].x = akaitekinohikouki[i].x - 10;


akaitekinohikoukinotama[i][j + 1].y = akaitekinohikouki[i].y + 10;


akaitekinohikoukinotama_tsix[i][j + 1] = akaitekinohikoukinotama[i][j + 1].x;




akaitekinohikoukinotama[i][j + 1].life = 1;


hassyasareru_akaitekinohikoukinotama[i] = j + 2;


akaitekinohikoukinotama_count[i][j + 1] = 20 + GetRand(25);//👈🌞🌞🌞赤い敵の飛行機akaitekinohikouki[i]から10連射される敵の弾akaitekinohikoukinotama[i][j + 1]と次に発射される弾akaitekinohikoukinotama[i][j + 2]の間隔を調整することができます


}


}


}




if (akaitekinohikoukinotama_count[i][9] > 0) { akaitekinohikoukinotama_count[i][9] = akaitekinohikoukinotama_count[i][9] - 1; }




if (akaitekinohikoukinotama_count[i][9] == 0 && hassyasareru_akaitekinohikoukinotama[i] == 10) {


hassyasareru_akaitekinohikoukinotama[i] = 0;


}


for (int j = 0; j < 10; j = j + 1) {


if (akaitekinohikoukinotama[i][j].life == 1) {

//🌞🌞🌞 akaitekinohikoukinotama[i][j].lifeに1が代入されていると赤い敵の飛行機から発射される弾akaitekinohikoukinotama[i][j]がゲーム画面に表示されることになります akaitekinohikoukinotama[i][j].lifeに0が代入されていると赤い敵の飛行機から発射される弾 akaitekinohikoukinotama[i][j]がゲーム画面に表示されることはありません

DrawGraph(akaitekinohikoukinotama[i][j].x, akaitekinohikoukinotama[i][j].y, akaitekinohikoukinotama[i][j].graphichandle[0], TRUE);


akaitekinohikoukinotama[i][j].x = akaitekinohikoukinotama[i][j].x - 1;


if (akaitekinohikoukinotama_tsix[i][j] - akaitekinohikoukinotama[i][j].x > 1000)

//🌞🌞🌞 赤い敵の飛行機から発射された弾akaitekinohikoukinotama[i][j]の位置のx座標が発射されたときの最初の位置のx座標から🍑左へ🍑640を超えて離れると条件式akaitekinohikoukinotama_tsix[i][j] - akaitekinohikoukinotama[i][j].xは真の値1をとることになります

//🌞🌞🌞🌞🌞👆 akaitekinohikoukinotama_tsix[i][j]には赤い敵の飛行機から発射される弾akaitekinohikoukinotama[i][j]が発射されるときのakaitekinohikoukinotama[i][j]のいる位置のx座標が代入されます。赤い敵の飛行機から発射された弾のx座標akaitekinohikoukinotama[i][j].xが赤い敵の飛行機から発射されたときの敵の弾akaitekinohikoukinotama[i][j]のいる位置からx方向へ640ドット離れた時、条件式akaitekinohikoukinotama_tsix[i][j] - akaitekinohikoukinotama[i][j].x > 640は真の値1を持つことになります

akaitekinohikoukinotama[i][j].life = 0;


}


}


}



//👆🌞🌞🌞赤い敵の飛行機10体の挙動の設定の部分です




//💖💖💖ここで赤い敵の飛行機10体の設定の部分と敵の飛行機ルルの挙動の設定に分けられます💖💖💖







//👇🌞🌞🌞敵の飛行機ルルの挙動の設定です


if (framecounter >= 2000) {


if (RuRu_repeat > 0) {


for (int i = 0; i < 1; i++) {


if (RuRu[i].life > 0) {


RuRu[i].x = RuRu[i].x + RuRunoidoupattern[RuRu_m][1];


RuRu[i].y = RuRu[i].y + RuRunoidoupattern[RuRu_m][2];

}



}


RuRu_repeat = RuRu_repeat - 1;

}


if (RuRu_repeat == 0) {


if (RuRu_m < 4) {


RuRu_repeat = RuRunoidoupattern[RuRu_m][0];


RuRu_m = RuRu_m + 1;

}




if (RuRu_m == 4) {

RuRu_m = 0;

RuRu_repeat = RuRunoidoupattern[RuRu_m][0];


}


}



for (int i = 0; i < 1; i++) {


if (RuRu[i].life > 0) {



DrawGraph(RuRu[i].x, RuRu[i].y, RuRu[i].graphichandle[(RuRu[i].graphicnumber) / 128 % 7], TRUE);


RuRu[i].graphicnumber = RuRu[i].graphicnumber + 1;


//🌞🌞🌞 (RuRu[i].graphicnumber)を128で割っているので通常のアニメーション速度の128分の1の速度で画像が切り替わります

//👆🌞🌞🌞ただし 今はルルの画像は1枚しか用意されていないのでアニメーションしません


}


}






//🌞🌞🌞👇自分の飛行機と敵の飛行機ルルがぶつかったとき自分の飛行機と敵の飛行機ルルが消滅するプログラムはこちらです


if (jibunnohikouki.life > 0)


for (int i = 0; i < 1; i++) {


if (RuRu[i].life > 0) {


if ((jibunnohikouki.x < RuRu[i].x + 320) && (RuRu[i].x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < RuRu[i].y + 240) && (RuRu[i].y < jibunnohikouki.y + 20))

{


jibunnohikouki.life = 0;


RuRu[i].life = 0;


//👆🌞自分の飛行機と敵の飛行機ルルが衝突すると共に消滅することになります



RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;



RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[0].lifeに0以上の値を代入しました RuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています




jibunnohikoukinobakuhatunohonoo.x = jibunnohikouki.x;


jibunnohikoukinobakuhatunohonoo.y = jibunnohikouki.y;


jibunnohikoukinobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 jibunnohikoukinobakuhatunohonoo.lifeに0以上の値を代入しました jibunnohikoukinobakuhatunohonoo.lifeにランダムに異なる値を代入することにより自分の飛行機が爆発する時間をランダムに変化させています



}

}


}

//🌞🌞🌞👆自分の飛行機と敵の飛行機ルルがぶつかったとき自分の飛行機と敵の飛行機が消滅するプログラムはこちらです




//👇🌞🌞🌞自分の飛行機と敵の飛行機ルルの弾が衝突したとき当たった自分の飛行機と敵の飛行機ルルの弾が消え自分の飛行機が爆発するプログラムです



for (int i = 0; i < 1; i++) {


for (int j = 0; j < 10; j++) {


if (RuRunotama[i][j].life > 0)


if (jibunnohikouki.life > 0) {


if ((jibunnohikouki.x < RuRunotama[i][j].x + 10) && (RuRunotama[i][j].x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < RuRunotama[i][j].y + 10) && (RuRunotama[i][j].y < jibunnohikouki.y + 20)) {


jibunnohikouki.life = jibunnohikouki.life - 1;


RuRunotama[i][j].life = 0;


//👆🌞自分の飛行機と敵の弾が衝突するとjibunnohikouki.lifeに格納される値が1減り敵の弾は消滅することになります。jibunnohikouki.lifeに格納される値が0になると自分の飛行機が消滅することになります




jibunnohikoukiwooouhikari.x = jibunnohikouki.x;


jibunnohikoukiwooouhikari.y = jibunnohikouki.y;


//🌞🌞🌞自分の飛行機と敵の弾がぶつかると自分の飛行機の位置座標がjibunnohikoukiwooouhikari.x , jibunnohikoukiwooouhikari.yに代入されます


jibunnohikoukiwooouhikari.life = 3;








if (jibunnohikouki.life == 0) {


jibunnohikoukinobakuhatunohonoo.x = jibunnohikouki.x;


jibunnohikoukinobakuhatunohonoo.y = jibunnohikouki.y;


jibunnohikoukinobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 jibunnohikoukinobakuhatunohonoo.lifeに0以上の値を代入しました jibunnohikoukinobakuhatunohonoo.lifeにランダムに異なる値を代入することにより自分の飛行機が爆発する時間をランダムに変化させています


}

}

}


}


}


//👆🌞🌞🌞自分の飛行機と敵の飛行機ルルの弾が衝突したとき当たった自分の飛行機と敵の弾が消え自分の飛行機が爆発するプログラムです







//👇🌞🌞🌞敵の飛行機ルルと自分の弾が衝突したとき当たった自分の弾と敵の飛行機ルルが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (RuRu[i].life > 0) {





for (int j = 0; j < 10; j++) {


if (jibunnotama[j].life > 0)


if ((jibunnotama[j].x < RuRu[i].x + 320) && (RuRu[i].x < jibunnotama[j].x + 15) && (jibunnotama[j].y < RuRu[i].y + 240) && (RuRu[i].y < jibunnotama[j].y + 5)) {


jibunnotama[j].life = 0;


RuRu[i].life = RuRu[i].life - 1;


//👆🌞自分の弾と敵の飛行機ルルが衝突すると自分の弾は消滅しtekinohikouki[i].lifeに格納されている値は1減ることになります RuRu[i].lifeに格納されている値が0になると敵の飛行機ルルは消滅することになります


RuRuwooouhikari.x = RuRu[i].x;


RuRuwooouhikari.y = RuRu[i].y;


//🌞🌞🌞自分の弾と敵の飛行機ルルがぶつかると敵の飛行機ルルの位置座標がRuRuwooouhikari.x, RuRuwooouhikari.yに代入されます


RuRuwooouhikari.life = 10;






if (RuRu[i].life == 0) {


RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;


RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[i].lifeに0以上の値を代入しましたRuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞敵の飛行機ルルと自分の弾が衝突したとき当たった自分の弾と敵の飛行機ルルが消滅するプログラムです



//👇🌞🌞🌞敵の飛行機ルルと自分のレーザー弾が衝突したとき当たった自分のレーザー弾と敵の飛行機ルルが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (RuRu[i].life > 0) {



for (int j = 0; j < 10; j++) {


if (jibunnotama_lazer[j].life > 0)


if ((jibunnotama_lazer[j].x < RuRu[i].x + 320) && (RuRu[i].x < jibunnotama_lazer[j].x + 15) && (jibunnotama_lazer[j].y < RuRu[i].y + 240) && (RuRu[i].y < jibunnotama_lazer[j].y + 5)) {


jibunnotama_lazer[j].life = 0;


RuRu[i].life = RuRu[i].life - 1;


//👆🌞自分のレーザー弾と敵の飛行機ルルが衝突すると自分のレーザー弾は消滅しRuRu[i].lifeに格納されている値は1減ることになります RuRu[i].lifeに格納されている値が0になると敵の飛行機ルルは消滅することになります


RuRuwooouhikari.x = RuRu[i].x;


RuRuwooouhikari.y = RuRu[i].y;


//🌞🌞🌞自分のレーザー弾と敵の飛行機ルルがぶつかると敵の飛行機ルルの位置座標がRuRuwooouhikari.x, RuRuwooouhikari.yに代入されます


RuRuwooouhikari.life = 10;






if (RuRu[i].life == 0) {


RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;


RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[i].lifeに0以上の値を代入しましたRuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞敵の飛行機ルルと自分のレーザー弾が衝突したとき当たった自分のレーザー弾と敵の飛行機ルルが消滅するプログラムです










//🌞🌞🌞👇オプション猫と敵の飛行機ルルがぶつかったときオプション猫と敵の飛行機ルルが消滅するプログラムはこちらです


if (option_neko.life > 0)


for (int i = 0; i < 1; i++) {


if (RuRu[i].life > 0) {


if ((option_neko.x < RuRu[i].x + 320) && (RuRu[i].x < option_neko.x + 35) && (option_neko.y + 7 < RuRu[i].y + 240) && (RuRu[i].y < option_neko.y + 20))

{


option_neko.life = 0;


RuRu[i].life = 0;


//👆🌞オプション猫と敵の飛行機ルルが衝突すると共に消滅することになります



RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;



RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[0].lifeに0以上の値を代入しました RuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています




option_nekonobakuhatunohonoo.x = option_neko.x;


option_nekonobakuhatunohonoo.y = option_neko.y;


option_nekonobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞option_nekonobakuhatunohonoo.lifeに0以上の値を代入しましたoption_nekonobakuhatunohonoo.lifeにランダムに異なる値を代入することによりオプション猫が爆発する時間をランダムに変化させています



}

}


}

//🌞🌞🌞👆オプション猫と敵の飛行機ルルがぶつかったときオプション猫と敵の飛行機が消滅するプログラムはこちらです




//👇🌞🌞🌞オプション猫と敵の飛行機ルルの弾が衝突したとき当たったオプション猫と敵の飛行機ルルの弾が消え自分の飛行機が爆発するプログラムです



for (int i = 0; i < 1; i++) {


for (int j = 0; j < 10; j++) {


if (RuRunotama[i][j].life > 0)


if (option_neko.life > 0) {


if ((option_neko.x < RuRunotama[i][j].x + 10) && (RuRunotama[i][j].x < option_neko.x + 35) && (option_neko.y + 7 < RuRunotama[i][j].y + 10) && (RuRunotama[i][j].y < option_neko.y + 20)) {


option_neko.life = option_neko.life - 1;


RuRunotama[i][j].life = 0;


//👆🌞オプション猫と敵の弾が衝突するとoption_neko.lifeに格納される値が1減り敵の弾は消滅することになります。option_neko.lifeに格納される値が0になるとオプション猫が消滅することになります




option_nekowooouhikari.x = option_neko.x;


option_nekowooouhikari.y = option_neko.y;


//🌞🌞🌞オプション猫と敵の弾がぶつかるとオプション猫の位置座標がoption_nekowooouhikari.x ,option_nekowooouhikari.yに代入されます


option_nekowooouhikari.life = 3;








if (option_neko.life == 0) {


option_nekonobakuhatunohonoo.x = option_neko.x;


option_nekonobakuhatunohonoo.y = option_neko.y;


option_nekonobakuhatunohonoo.life = 128 + 128 * GetRand(9); //🌞🌞🌞 option_nekonobakuhatunohonoo.lifeに0以上の値を代入しましたoption_nekonobakuhatunohonoo.lifeにランダムに異なる値を代入することによりオプション猫が爆発する時間をランダムに変化させています


}

}

}


}


}


//👆🌞🌞🌞オプション猫と敵の飛行機ルルの弾が衝突したとき当たったオプション猫と敵の弾が消えオプション猫が爆発するプログラムです







//👇🌞🌞🌞敵の飛行機ルルとオプション猫の弾が衝突したとき当たったオプション猫の弾と敵の飛行機ルルが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (RuRu[i].life > 0) {





for (int j = 0; j < 10; j++) {


if (option_nekonotama[j].life > 0)


if ((option_nekonotama[j].x < RuRu[i].x + 320) && (RuRu[i].x < option_nekonotama[j].x + 15) && (option_nekonotama[j].y < RuRu[i].y + 240) && (RuRu[i].y < option_nekonotama[j].y + 5)) {


option_nekonotama[j].life = 0;


RuRu[i].life = RuRu[i].life - 1;


//👆🌞オプション猫の弾と敵の飛行機ルルが衝突するとオプション猫の弾は消滅しtekinohikouki[i].lifeに格納されている値は1減ることになります RuRu[i].lifeに格納されている値が0になると敵の飛行機ルルは消滅することになります


RuRuwooouhikari.x = RuRu[i].x;


RuRuwooouhikari.y = RuRu[i].y;


//🌞🌞🌞オプション猫の弾と敵の飛行機ルルがぶつかると敵の飛行機ルルの位置座標がRuRuwooouhikari.x, RuRuwooouhikari.yに代入されます


RuRuwooouhikari.life = 10;






if (RuRu[i].life == 0) {


RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;


RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[i].lifeに0以上の値を代入しましたRuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞敵の飛行機ルルとオプション猫の弾が衝突したとき当たったオプション猫の弾と敵の飛行機ルルが消滅するプログラムです



//👇🌞🌞🌞敵の飛行機ルルとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾と敵の飛行機ルルが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (RuRu[i].life > 0) {



for (int j = 0; j < 10; j++) {


if (option_nekonotama_lazer[j].life > 0)


if ((option_nekonotama_lazer[j].x < RuRu[i].x + 320) && (RuRu[i].x < option_nekonotama_lazer[j].x + 15) && (option_nekonotama_lazer[j].y < RuRu[i].y + 240) && (RuRu[i].y < option_nekonotama_lazer[j].y + 5)) {


option_nekonotama_lazer[j].life = 0;


RuRu[i].life = RuRu[i].life - 1;


//👆🌞オプション猫のレーザー弾と敵の飛行機ルルが衝突するとオプション猫のレーザー弾は消滅しRuRu[i].lifeに格納されている値は1減ることになります RuRu[i].lifeに格納されている値が0になると敵の飛行機ルルは消滅することになります


RuRuwooouhikari.x = RuRu[i].x;


RuRuwooouhikari.y = RuRu[i].y;


//🌞🌞🌞オプション猫のレーザー弾と敵の飛行機ルルがぶつかると敵の飛行機ルルの位置座標がRuRuwooouhikari.x, RuRuwooouhikari.yに代入されます


RuRuwooouhikari.life = 10;






if (RuRu[i].life == 0) {


RuRunobakuhatunohonoo[i].x = RuRu[i].x;


RuRunobakuhatunohonoo[i].y = RuRu[i].y;


RuRunobakuhatunohonoo[i].life = 128 + 128 * GetRand(9); //🌞🌞🌞 RuRunobakuhatunohonoo[i].lifeに0以上の値を代入しましたRuRunobakuhatunohonoo[0].lifeにランダムに異なる値を代入することにより爆発する時間をランダムに変化させています


}

}


}

}


}



//👆🌞🌞🌞敵の飛行機ルルとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾と敵の飛行機ルルが消滅するプログラムです








if (RuRuwooouhikari.life > 0) {





DrawGraph(RuRuwooouhikari.x, RuRuwooouhikari.y, RuRuwooouhikari.graphichandle[0], TRUE);




RuRuwooouhikari.life = RuRuwooouhikari.life - 1;



}



//👆🌞🌞🌞敵の飛行機ルルを覆う光の画像が描かれます RuRuwooouhikari.lifeに格納されている値が0になると敵の飛行機ルルを覆う光の画像が描かれることはありません


for (int i = 0; i < 1; i++) {


if (RuRunobakuhatunohonoo[i].life > 0) {


DrawGraph(RuRunobakuhatunohonoo[i].x, RuRunobakuhatunohonoo[i].y, RuRunobakuhatunohonoo[i].graphichandle[(RuRunobakuhatunohonoo[i].graphicnumber / 32) % 7], TRUE);


//👆🌞🌞🌞 🌞🌞🌞 🌞🌞RuRunobakuhatunohonoo[i].graphicnumberを32で割っているので32分の1のアニメーション速度です🌞🌞🌞 🌞🌞🌞 🌞🌞🌞

RuRunobakuhatunohonoo[i].graphicnumber = RuRunobakuhatunohonoo[i].graphicnumber + 1;

//👆🌞🌞🌞爆発の炎がアニメーションするよう設定が行われています



RuRunobakuhatunohonoo[i].life = RuRunobakuhatunohonoo[i].life - 1;



}


//👆 RuRunobakuhatunohonoo[i].lifeに格納されている値が1なら爆発の炎の画像を描きます

//👆 RuRunobakuhatunohonoo[i].lifeに格納されている値が0なら爆発の炎の画像が描かれることはありません


}







//👇🌞🌞🌞新型 敵の飛行機ルルから敵の飛行機ルルの弾が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]のいた位置から640ドット離れた時、条件式RuRunotama_tsix[i][j] - RuRunotama[i][j].x > 640は真の値1を持つことになります

RuRunotama[i][j].life = 0;


}


}


}



}



//👆🌞🌞🌞敵の飛行機ルルの挙動の設定です



//👇🌞🌞🌞敵キャラ ミミの挙動の設定です



if (((500 <= framecounter) && (framecounter <= 1500)) || ((2500 <= framecounter) && (framecounter <= 3500)))

{


if (MiMi.life > 0) {



DrawGraph(MiMi.x, MiMi.y, MiMi.graphichandle[0], TRUE);



}


}



//👆🌞🌞🌞敵キャラ ミミの挙動の設定です



//👇🌞🌞🌞オレンジリング100体の挙動の設定の部分です



for (int i = 0; i < 100; i++) {


if (orange_ring[i].life > 0) {



if (i % 10 == 0)




DrawGraph(orange_ring[i].x, orange_ring[i].y, orange_ring[i].graphichandle[(orange_ring[i].graphicnumber) / 128 % 7], TRUE);



}


}




for (int j = 99; j > 0; j = j - 1) {



orange_ring[j].x = orange_ring[j - 1].x;

orange_ring[j].y = orange_ring[j - 1].y;


}




//👇😊😊😊先頭のオレンジリングだけを動かしています


if (orange_ring_repeat > 0) {


for (int i = 0; i < 1; i++) {


if (orange_ring[i].life > 0) {


orange_ring[i].x = orange_ring[i].x + orange_ringnoidoupattern[orange_ring_m][1];


orange_ring[i].y = orange_ring[i].y + orange_ringnoidoupattern[orange_ring_m][2];

}



}


orange_ring_repeat = orange_ring_repeat - 1;

}


if (orange_ring_repeat == 0) {


if (orange_ring_m < 3) {



orange_ring_m = orange_ring_m + 1;


orange_ring_repeat = orange_ringnoidoupattern[orange_ring_m][0];

}


}




if (orange_ring_repeat == 0) {


if (orange_ring_m == 3) {

orange_ring_m = 0;

orange_ring_repeat = orange_ringnoidoupattern[orange_ring_m][0];


}


}



//👆😊😊😊先頭のオレンジリングだけを動かしています


//👆🌞🌞🌞オレンジリング100体の挙動の設定の部分です










//👇🌞🌞🌞レーザーマークの挙動の設定です


if (framecounter % 1000 == 0)

{



lazermark.life = 1;


lazermark.x = 640;


lazermark.y = 240;


}



//👆🌞🌞🌞ここです framecounterが1000になったとき時lazermark.life に1が代入されることになります







if (lazermark_repeat > 0) {


for (int i = 0; i < 1; i++) {


if (lazermark.life > 0) {


lazermark.x = lazermark.x + lazermarknoidoupattern[lazermark_m][1];


lazermark.y = lazermark.y + lazermarknoidoupattern[lazermark_m][2];

}



}


lazermark_repeat = lazermark_repeat - 1;

}


if (lazermark_repeat == 0) {


if (lazermark_m < 4) {


lazermark_repeat = lazermarknoidoupattern[lazermark_m][0];


lazermark_m = lazermark_m + 1;

}




if (lazermark_m == 4) {

lazermark_m = 0;

lazermark_repeat = lazermarknoidoupattern[lazermark_m][0];


}


}



for (int i = 0; i < 1; i++) {


if (lazermark.life > 0) {



DrawGraph(lazermark.x, lazermark.y, lazermark.graphichandle[(lazermark.graphicnumber) / 128 % 7], TRUE);


lazermark.graphicnumber = lazermark.graphicnumber + 1;


//🌞🌞🌞 (lazermark.graphicnumber)を128で割っているので通常のアニメーション速度の128分の1の速度で画像が切り替わります

//👆🌞🌞🌞レーザーマークをアニメーションさせる設定です ただし 今は一枚しかレーザーマークの画像を用意していないのでレーザーマークはアニメーションしません


}


}




if (lazermark.x < 0) {


lazermark.life = 0;



}


//👆💖💖💖ここです レーザー弾が画面の外に消えた時、すなわちlazermark.xが0より小さいマイナスの値をもったときlazermark.lifeに0が代入されることになりレーザー弾は左方向に進まなくなりますのx座標




//🌞🌞🌞👇自分の飛行機とレーザーマークがぶつかったときレーザーマークが消滅するプログラムはこちらです


if (jibunnohikouki.life > 0)


for (int i = 0; i < 1; i++) {


if (lazermark.life > 0) {


if ((jibunnohikouki.x < lazermark.x + 30) && (lazermark.x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < lazermark.y + 30) && (lazermark.y < jibunnohikouki.y + 20))

{



lazermark.life = 0;


//👆🌞自分の飛行機とレーザーマークが衝突するとレーザーマークが消滅することになります

jibunnotamamode = 1;



//👆🌞自分の飛行機とレーザーマークが衝突するとjibunnotamamodeに1が代入されレーザー発射モードになります


}

}


}

//🌞🌞🌞👆自分の飛行機とレーザーマークがぶつかったときレーザーマークが消滅するプログラムはこちらです








//👇🌞🌞🌞レーザーマークと自分の弾が衝突したとき当たった自分の弾とレーザーマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (lazermark.life > 0) {





for (int j = 0; j < 10; j++) {


if (jibunnotama[j].life > 0)


if ((jibunnotama[j].x < lazermark.x + 30) && (lazermark.x < jibunnotama[j].x + 15) && (jibunnotama[j].y < lazermark.y + 30) && (lazermark.y < jibunnotama[j].y + 5)) {


jibunnotama[j].life = 0;


lazermark.life = lazermark.life - 1;


//👆🌞自分の弾とレーザーマークが衝突すると自分の弾は消滅しlazermark.lifeに格納されている値は1減ることになります lazermark.lifeに格納されている値が0になるとレーザーマークは消滅することになります




}

}


}

}





//👆🌞🌞🌞レーザーマークと自分の弾が衝突したとき当たった自分の弾とレーザーマークが消滅するプログラムです



//👇🌞🌞🌞レーザーマークと自分のレーザー弾が衝突したとき当たった自分のレーザー弾とレーザーマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (lazermark.life > 0) {



for (int j = 0; j < 10; j++) {


if (jibunnotama_lazer[j].life > 0)


if ((jibunnotama_lazer[j].x < lazermark.x + 30) && (lazermark.x < jibunnotama_lazer[j].x + 15) && (jibunnotama_lazer[j].y < lazermark.y + 30) && (lazermark.y < jibunnotama_lazer[j].y + 5)) {


jibunnotama_lazer[j].life = 0;


lazermark.life = lazermark.life - 1;


//👆🌞自分のレーザー弾とレーザーマークが衝突すると自分のレーザー弾は消滅しlazermark.lifeに格納されている値は1減ることになります lazermark.lifeに格納されている値が0になるとレーザーマークは消滅することになります




}


}

}


}



//👆🌞🌞🌞レーザーマークと自分のレーザー弾が衝突したとき当たった自分のレーザー弾とレーザーマークが消滅するプログラムです




//👆🌞🌞🌞レーザーマークの挙動の設定です


//👇🌞🌞🌞ミサイルマークの挙動の設定です


if (framecounter % 1500 == 0) {



misslemark.life = 1;


misslemark.x = 640;


misslemark.y = 240;




}


if (misslemark_repeat > 0) {


for (int i = 0; i < 1; i++) {


if (misslemark.life > 0) {


misslemark.x = misslemark.x + misslemarknoidoupattern[misslemark_m][1];


misslemark.y = misslemark.y + misslemarknoidoupattern[misslemark_m][2];

}



}


misslemark_repeat = misslemark_repeat - 1;

}


if (misslemark_repeat == 0) {


if (misslemark_m < 4) {


misslemark_repeat = misslemarknoidoupattern[misslemark_m][0];


misslemark_m = misslemark_m + 1;

}




if (misslemark_m == 4) {

misslemark_m = 0;

misslemark_repeat = misslemarknoidoupattern[misslemark_m][0];


}


}



for (int i = 0; i < 1; i++) {


if (misslemark.life > 0) {



DrawGraph(misslemark.x, misslemark.y, misslemark.graphichandle[(misslemark.graphicnumber) / 128 % 7], TRUE);


misslemark.graphicnumber = misslemark.graphicnumber + 1;


//🌞🌞🌞 (misslemark.graphicnumber)を128で割っているので通常のアニメーション速度の128分の1の速度で画像が切り替わります

//👆🌞🌞🌞ミサイルマークをアニメーションさせる設定です ただし 今は一枚しかミサイルマークの画像を用意していないのでミサイルマークはアニメーションしません


}


}






if (misslemark.x < 0) {


misslemark.life = 0;



}


//👆💖💖💖ここです ミサイル弾が画面の外に消えた時、すなわちmisslemark.xが0より小さいマイナスの値をもったときmisslemark.lifeに0が代入されることになりレーザー弾は左方向に進まなくなります







//🌞🌞🌞👇自分の飛行機とミサイルマークがぶつかったときミサイルマークが消滅するプログラムはこちらです


if (jibunnohikouki.life > 0)


for (int i = 0; i < 1; i++) {


if (misslemark.life > 0) {


if ((jibunnohikouki.x < misslemark.x + 30) && (misslemark.x < jibunnohikouki.x + 35) && (jibunnohikouki.y + 7 < misslemark.y + 30) && (misslemark.y < jibunnohikouki.y + 20))

{



misslemark.life = 0;


//👆🌞自分の飛行機とミサイルマークが衝突するとミサイルマークが消滅することになります


jibunnotamamode = 0;//👈🌞🌞🌞普通の弾が発射されるようにjibunnotamamodeに0を代入します


}

}


}

//🌞🌞🌞👆自分の飛行機とミサイルマークがぶつかったときミサイルマークが消滅するプログラムはこちらです








//👇🌞🌞🌞ミサイルマークと自分の弾が衝突したとき当たった自分の弾とミサイルマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (misslemark.life > 0) {





for (int j = 0; j < 10; j++) {


if (jibunnotama[j].life > 0)


if ((jibunnotama[j].x < misslemark.x + 30) && (misslemark.x < jibunnotama[j].x + 15) && (jibunnotama[j].y < misslemark.y + 30) && (misslemark.y < jibunnotama[j].y + 5)) {


jibunnotama[j].life = 0;


misslemark.life = misslemark.life - 1;


//👆🌞自分の弾とミサイルマークが衝突すると自分の弾は消滅しmisslemark.lifeに格納されている値は1減ることになります misslemark.lifeに格納されている値が0になるとミサイルマークは消滅することになります




}

}


}

}





//👆🌞🌞🌞ミサイルマークと自分の弾が衝突したとき当たった自分の弾とミサイルマークが消滅するプログラムです



//👇🌞🌞🌞ミサイルマークと自分のレーザー弾が衝突したとき当たった自分のレーザー弾とミサイルマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (misslemark.life > 0) {



for (int j = 0; j < 10; j++) {


if (jibunnotama_lazer[j].life > 0)


if ((jibunnotama_lazer[j].x < misslemark.x + 30) && (misslemark.x < jibunnotama_lazer[j].x + 15) && (jibunnotama_lazer[j].y < misslemark.y + 30) && (misslemark.y < jibunnotama_lazer[j].y + 5)) {


jibunnotama_lazer[j].life = 0;


misslemark.life = misslemark.life - 1;


//👆🌞自分のレーザー弾とミサイルマークが衝突すると自分のレーザー弾は消滅しmisslemark.lifeに格納されている値は1減ることになります misslemark.lifeに格納されている値が0になるとミサイルマークは消滅することになります






}

}


}

}





//👆🌞🌞🌞ミサイルマークと自分のレーザー弾が衝突したとき当たった自分のレーザー弾とミサイルマークが消滅するプログラムです




//👆🌞🌞🌞ミサイルマークの挙動の設定です






//👇🌞🌞🌞レーザーマークの挙動の設定です



//🌞🌞🌞👇オプション猫とレーザーマークがぶつかったときレーザーマークが消滅するプログラムはこちらです


if (option_neko.life > 0)


for (int i = 0; i < 1; i++) {


if (lazermark.life > 0) {


if ((option_neko.x < lazermark.x + 30) && (lazermark.x < option_neko.x + 35) && (option_neko.y + 7 < lazermark.y + 30) && (lazermark.y < option_neko.y + 20))

{



lazermark.life = 0;


//👆🌞オプション猫とレーザーマークが衝突するとレーザーマークが消滅することになります

option_nekonotamamode = 1;



//👆🌞オプション猫とレーザーマークが衝突するとoption_nekonotamamodeに1が代入されレーザー発射モードになります


}

}


}

//🌞🌞🌞👆オプション猫とレーザーマークがぶつかったときレーザーマークが消滅するプログラムはこちらです








//👇🌞🌞🌞レーザーマークとオプション猫の弾が衝突したとき当たったオプション猫の弾とレーザーマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (lazermark.life > 0) {





for (int j = 0; j < 10; j++) {


if (option_nekonotama[j].life > 0)


if ((option_nekonotama[j].x < lazermark.x + 30) && (lazermark.x < option_nekonotama[j].x + 15) && (option_nekonotama[j].y < lazermark.y + 30) && (lazermark.y < option_nekonotama[j].y + 5)) {


option_nekonotama[j].life = 0;


lazermark.life = lazermark.life - 1;


//👆🌞オプション猫の弾とレーザーマークが衝突するとオプション猫の弾は消滅しlazermark.lifeに格納されている値は1減ることになります lazermark.lifeに格納されている値が0になるとレーザーマークは消滅することになります




}

}


}

}





//👆🌞🌞🌞レーザーマークとオプション猫の弾が衝突したとき当たったオプション猫の弾とレーザーマークが消滅するプログラムです



//👇🌞🌞🌞レーザーマークとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾とレーザーマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (lazermark.life > 0) {



for (int j = 0; j < 10; j++) {


if (option_nekonotama_lazer[j].life > 0)


if ((option_nekonotama_lazer[j].x < lazermark.x + 30) && (lazermark.x < option_nekonotama_lazer[j].x + 15) && (option_nekonotama_lazer[j].y < lazermark.y + 30) && (lazermark.y < option_nekonotama_lazer[j].y + 5)) {


option_nekonotama_lazer[j].life = 0;


lazermark.life = lazermark.life - 1;


//👆🌞オプション猫のレーザー弾とレーザーマークが衝突するとオプション猫のレーザー弾は消滅しlazermark.lifeに格納されている値は1減ることになります lazermark.lifeに格納されている値が0になるとレーザーマークは消滅することになります




}


}

}


}



//👆🌞🌞🌞レーザーマークとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾とレーザーマークが消滅するプログラムです




//👆🌞🌞🌞レーザーマークの挙動の設定です




//👇🌞🌞🌞ミサイルマークの挙動の設定です








//🌞🌞🌞👇オプション猫とミサイルマークがぶつかったときミサイルマークが消滅するプログラムはこちらです


if (option_neko.life > 0)


for (int i = 0; i < 1; i++) {


if (misslemark.life > 0) {


if ((option_neko.x < misslemark.x + 30) && (misslemark.x < option_neko.x + 35) && (option_neko.y + 7 < misslemark.y + 30) && (misslemark.y < option_neko.y + 20))

{



misslemark.life = 0;


//👆🌞オプション猫とミサイルマークが衝突するとミサイルマークが消滅することになります


option_nekonotamamode = 0;//👈🌞🌞🌞普通の弾が発射されるようにoption_nekonotamamodeに0を代入します


}

}


}

//🌞🌞🌞👆オプション猫とミサイルマークがぶつかったときミサイルマークが消滅するプログラムはこちらです








//👇🌞🌞🌞ミサイルマークとオプション猫の弾が衝突したとき当たったオプション猫の弾とミサイルマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {




if (misslemark.life > 0) {





for (int j = 0; j < 10; j++) {


if (option_nekonotama[j].life > 0)


if ((option_nekonotama[j].x < misslemark.x + 30) && (misslemark.x < option_nekonotama[j].x + 15) && (option_nekonotama[j].y < misslemark.y + 30) && (misslemark.y < option_nekonotama[j].y + 5)) {


option_nekonotama[j].life = 0;


misslemark.life = misslemark.life - 1;


//👆🌞オプション猫の弾とミサイルマークが衝突するとオプション猫の弾は消滅しmisslemark.lifeに格納されている値は1減ることになります misslemark.lifeに格納されている値が0になるとミサイルマークは消滅することになります




}

}


}

}





//👆🌞🌞🌞ミサイルマークとオプション猫の弾が衝突したとき当たったオプション猫の弾とミサイルマークが消滅するプログラムです



//👇🌞🌞🌞ミサイルマークとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾とミサイルマークが消滅するプログラムです


for (int i = 0; i < 1; i++) {



if (misslemark.life > 0) {



for (int j = 0; j < 10; j++) {


if (option_nekonotama_lazer[j].life > 0)


if ((option_nekonotama_lazer[j].x < misslemark.x + 30) && (misslemark.x < option_nekonotama_lazer[j].x + 15) && (option_nekonotama_lazer[j].y < misslemark.y + 30) && (misslemark.y < option_nekonotama_lazer[j].y + 5)) {


option_nekonotama_lazer[j].life = 0;


misslemark.life = misslemark.life - 1;


//👆🌞オプション猫のレーザー弾とミサイルマークが衝突するとオプション猫のレーザー弾は消滅しmisslemark.lifeに格納されている値は1減ることになります misslemark.lifeに格納されている値が0になるとミサイルマークは消滅することになります






}

}


}

}





//👆🌞🌞🌞ミサイルマークとオプション猫のレーザー弾が衝突したとき当たったオプション猫のレーザー弾とミサイルマークが消滅するプログラムです




//👆🌞🌞🌞ミサイルマークの挙動の設定です



ScreenFlip();


ClearDrawScreen();


};



DxLib_End(); // DXライブラリの使用を終了します DXライブラリの使用しているメモリ領域が解放されます


return 0; // プログラムを終了します


}



デバッグなしで実行をしてから一度プログラムを終了し

生成されたexeファイルをハードディスクから探し出しクリックする方法により得られたプログラムの実行結果はこちらです

👇


https://youtu.be/qQyjWFit0Tc




solarplexuss「登場するオレンジリング本体を


500体から100体に減らしたね


どれどれ


Visual Studioの警告欄はどうなったかな?



オレンジリングの数を500体から100体に減らしたのに


警告文


👇


重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態

警告 C6262 関数はスタックの '18352' バイトを使用します: /analyze:stacksize '16384' を超えています。 データの一部をヒープに移動することを考慮してください。 game C:\Users\solar\source\repos\game\shooting_game.cpp 14


👆


表示されてる


これは・・・ど~いうこと?」


ソーラー「ええと?



game C:\Users\solar\source\repos\game\shooting_game.cpp 14


をみると


エラーがある部分は


14行目


となっています


ここは


WinMain関数の記述が始まる場所です


関数はスタックの '18352' バイトを使用します:


の関数とは


この


WinMain関数のことのようだね


WinMain関数が


メモリのスタック領域の


18352バイトを使用しているようだね



メモリのスタック領域に格納される


関数のサイズは


16384バイト


が標準となっているので


WinMain関数の一部を


メモリのヒープ領域に移動してと警告してるみたいだけど


よくわからないな」









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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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