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

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

先日作ったプログラムを元にリスト構造を使って弾幕を撃たせてみました。
s-WS000159.jpg
白い四角い線を描画画面と見立てて、その範囲を超えると削除するようになっています。
ダウンロードはコチラ↓
リスト構造を使った弾幕表示プログラム(右クリック→対象をファイルに保存で保存して下さい)
一応ソースファイルも入ってますが、あまり参考にはならないかも(汗)

前回と同じようにA⇔Zキーで敵弾発射間隔をS⇔Xキーで敵弾速度を変更出来ます。
今回は画像の回転表示もやってみようと思ってDrawRotaGraph関数を使って表示させました。
関数の仕様は
          int DrawRotaGraph( int x, int y,
          double ExtRate, double Angle,
          int GrHandle , int TransFlag , int TurnFlag ) ;
となっていて、double ExtRateが拡大率でdouble Angleが回転角度となっており
double ExtRateは1.0で等倍となります。
で、回転して表示させる為にはdouble Angleに角度を指定しなければならないので
atan2関数を使って発射地点からみた弾の向きを計算して表示させると上手く出来ました^^
こんな感じで記述してます↓
DrawRotaGraph( p->nXPos,p->nYPos ,1.0, atan2(p->nXPos-(308),(228)-p->nYPos) , image[0] , TRUE  ) ;
この辺の考え方はHSPで勉強していたのが役にたちました^^


1フレームに1回描画させるとこんな感じになります^^;
s-WS000163.jpg
今回のリスト構造の場合は常に最後にオブジェクトが追加されるので描画順を考えなくても
綺麗に表示されて良い感じです。

と言う訳で次はタスクシステムを勉強しようと思って、シューティングゲームプログラミング
注文しました^^
PR
この記事にコメントする
お名前
タイトル
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
無題
MacBookPro(WinXP)で正常に動いています。
FPSも61.0で安定しています。
Core2Duo T8300 2.4GHz
GeForce 8600M GT

リスト構造でそれぞれの弾を管理、表示、移動、消去と別関数で処理しているのはわかりやすくていいですね。
構造体に弾の種類を表す番号を入れておけば、複数の敵が発生させた別の動きをする弾を一括で描画できて効率よさそうです。弾の画像番号なんかも入れれば画像も分けて表示できますね。いや、いっそのこと敵とか弾とか区別無く一括管理で……って色々応用できそうです。
keigo URL 2008/11/28(Fri)21:49:01 編集
無題
keigoさん>
動作報告ありがとうございますm(_ _)m
上手く使えば色々な物を一括管理出来そうですね。と言ってもまだ関数の作り方やポインタについても理解が浅いので、自由自在に使えるには程遠い感じです^^;
kt. 2008/11/29(Sat)22:56:11 編集
この記事へのトラックバック
この記事にトラックバックする:
カウンター
ゲーマータグ
Twitter
携帯百景
カレンダー
09 2017/10 11
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 31
最新コメント
[11/24 kt.]
[11/24 kt.]
[11/24 NONAME]
[11/23 NONAME]
[10/05 tejas]
プロフィール
HN:
kt.
HP:
性別:
男性
自己紹介:
STG大好きな40歳。
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
アクセス解析
忍者ブログ [PR]