まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
敵の出現処理を追加しようと思って、とりあえず敵をデザインしてみました。
とりあえずこんな感じ。
これを元に敵キャラ画像を作って、配列変数を使って敵が出現するようにしました。
プロジェクトファイルはコチラ↓
https://blog.cnobi.jp/v1/blog/user/63629cf35d5259ece1529ed13f0745b1/1238877409
このファイルを動かすとこんな感じ↓
とりあえず、上から下に向かって移動するだけです。
敵出現&移動用の関数はこんな感じで書いてます↓
////////////////////////////敵発生処理////////////////////////////////////////////////////////////
//引数 なし
//返値 なし
void teki01move(){
int eh=0;
int i;
if(g_gtime%20 == 0) {//20ループに1回出現
for(i=0;i<ENEMY;i++){//敵弾初期化
if(enemy[i].ef==0) {
eh++;//一度に出現する数
enemy[i].ef=1;//敵の存在を有に
enemy[i].ex=GetRand( 312 )+140;//初期位置
enemy[i].ey=-48;
enemy[i].emx=0;//X軸移動量
enemy[i].emy=2;//Y軸移動量
if(eh>1){//任意数出現してbreak
break;
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////敵移動処理///////////////////////////////////////////////////////////
for(i=0;i<ENEMY;i++){//敵の数だけ繰り返す
if(enemy[i].ef==1) {//敵が画面にある時
enemy[i].ex=enemy[i].ex+enemy[i].emx;//X軸敵弾移動
enemy[i].ey=enemy[i].ey+enemy[i].emy;//Y軸敵弾移動
DrawGraph( enemy[i].ex , enemy[i].ey , g_teki01 , TRUE ) ;//敵表示
if(enemy[i].ex>500) enemy[i].ef=0;//画面からはみ出したら削除
if(enemy[i].ex<140 ) enemy[i].ef=0;
if(enemy[i].ey>480) enemy[i].ef=0;
if(enemy[i].ey<-48 ) enemy[i].ef=0;
}
}
}
////////////////////////////////////////////////////////////////////////////////////////
まず、敵出現用の変数を使って、敵が出現しているかどうかを調べて
出現している場合はenemy[i].ef=1として敵を表示するって感じ。
こうしておけば、敵の消滅の時もenemy[i].ef=0と記述するだけで良いので便利です^^
とりあえずこんな感じ。
これを元に敵キャラ画像を作って、配列変数を使って敵が出現するようにしました。
プロジェクトファイルはコチラ↓
https://blog.cnobi.jp/v1/blog/user/63629cf35d5259ece1529ed13f0745b1/1238877409
このファイルを動かすとこんな感じ↓
とりあえず、上から下に向かって移動するだけです。
敵出現&移動用の関数はこんな感じで書いてます↓
////////////////////////////敵発生処理////////////////////////////////////////////////////////////
//引数 なし
//返値 なし
void teki01move(){
int eh=0;
int i;
if(g_gtime%20 == 0) {//20ループに1回出現
for(i=0;i<ENEMY;i++){//敵弾初期化
if(enemy[i].ef==0) {
eh++;//一度に出現する数
enemy[i].ef=1;//敵の存在を有に
enemy[i].ex=GetRand( 312 )+140;//初期位置
enemy[i].ey=-48;
enemy[i].emx=0;//X軸移動量
enemy[i].emy=2;//Y軸移動量
if(eh>1){//任意数出現してbreak
break;
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////敵移動処理///////////////////////////////////////////////////////////
for(i=0;i<ENEMY;i++){//敵の数だけ繰り返す
if(enemy[i].ef==1) {//敵が画面にある時
enemy[i].ex=enemy[i].ex+enemy[i].emx;//X軸敵弾移動
enemy[i].ey=enemy[i].ey+enemy[i].emy;//Y軸敵弾移動
DrawGraph( enemy[i].ex , enemy[i].ey , g_teki01 , TRUE ) ;//敵表示
if(enemy[i].ex>500) enemy[i].ef=0;//画面からはみ出したら削除
if(enemy[i].ex<140 ) enemy[i].ef=0;
if(enemy[i].ey>480) enemy[i].ef=0;
if(enemy[i].ey<-48 ) enemy[i].ef=0;
}
}
}
////////////////////////////////////////////////////////////////////////////////////////
まず、敵出現用の変数を使って、敵が出現しているかどうかを調べて
出現している場合はenemy[i].ef=1として敵を表示するって感じ。
こうしておけば、敵の消滅の時もenemy[i].ef=0と記述するだけで良いので便利です^^
PR
この記事にコメントする
カレンダー
10 | 2024/11 | 12 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
リンク
カテゴリー
最新記事
(04/04)
(12/26)
(12/25)
(11/17)
(10/11)
プロフィール
HN:
kt.
性別:
男性
自己紹介:
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
最古記事