忍者ブログ
まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

先日作成したガレッガ風?の爆破処理を追加してみました。
s-WS000431.jpg
ちょっと爆破が派手過ぎますが、暫定と言う事で^^;
プロジェクトファイルはコチラ↓
https://blog.cnobi.jp/v1/blog/user/63629cf35d5259ece1529ed13f0745b1/1241113201

この爆破を追加するにあたって悩んだのが構造体の配列の宣言方法です。
まず敵自体を構造体を使って管理しているのですが、敵は複数存在するので
配列変数を使って管理しています。
こんな感じ。
typedef struct{//敵構造体
double ex,ey;//座標
}enemy_t;
enemy_t enemy[10];//構造体用
この場合はenemy[n].exとenemy[n].eyを10個用意したって事です。

次に爆発を考えてみます。爆発は敵1対に対して複数個必要なので
配列の配列、つまり二次元配列で管理する必要があります。
記述するとこんな感じ。
typedef struct{//敵構造体
double ex,ey;//座標
double bx[10],by[10];//爆破座標xy
}enemy_t;
enemy_t enemy[10];//構造体用
この場合は
enemy[n].exとenemy[n].eyを10個
enemy[n].bx[n]とenemy[n].by[n]を100個(10*10=100なので)用意したって事になるんです。
このenemy[n].bx[n]という記述方法が最初わからずに苦労しました^^;

で、後は爆発処理を追加するだけなのですが、二次元配列となってしまうと頭がこんがらがって来て
あーでもない、こーでもないと色々と試しながら、やっと出来たという感じでした。

ただ、現在の仕様では敵の大きさが変わると爆破位置がズレてしまうので、もうちょっと汎用出来る
ような関数にしたいと思っているのですが、横長の敵や縦長の敵の場合の処理をどうするかとか、
全然違うサイズの敵の場合なんかを考えると、あまり汎用性の拘らずに別々の関数にした方が
良いのかな~?なんて考えています。
でも、分けすぎると後で見た時に、なんじゃこれ?状態になってしまうので難しい所です^^;
PR
この記事にコメントする
お名前
タイトル
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
Twitter
カレンダー
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/20 kt.]
[04/19 うぇむ]
[11/24 kt.]
[11/21 NONAME]
[11/24 kt.]
プロフィール
HN:
kt.
性別:
男性
自己紹介:
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
忍者ブログ [PR]