おかげさまで、以前から作っていた逃げるマインスイーパもあとは仮となっている音の追加のみとなりました。
今現在、頼んでいる人から上がってくるのを待っているだけなのもなんなので、
新しいゲームを作ろうと「14歳から始めるC言語わくわくゲームプログラミング」を参考にアクションシューティングを作っています。
当たり判定関係は解決し、一応ゲームとして形にはなったのですが、
「違う種類の敵を同時に出現させる」ところで躓いてしまいました。
龍神録プログラミングの館の方も参考にしてみましたが、解決しませんでした。
ソース、データ等々はここに挙げてあります。↓
http://down11.ddo.jp/uploader/download/ ... ip/attatch
パスワードはcrowです。
mymain.cppの
void (*pf_initgamefunc)() = InitializeGame05;
void (*pf_drawenemyfunc)() = DrawEnemies05;
の関数ポインタでステージの処理を切り替えていて、enemy05.cppのDrawEnemies05関数で違うタイプの敵(enemy04.cppの処理とenemy05.cpp)を切り替えて動かす処理にしたいと思っていますが、龍神録プログラミングの館のようにswitchで切り替えても画像だけ変わっているが、最初の弱点と砲台と同じ座標に表示されて同じ動きをするという状態でした。
どうにかして、動かないで弾を吐く敵(enemy04.cpp)とパターンデータに従って動く敵(enemy05.cpp)を同じステージ内の処理(DrawEnemies05関数)で動かしたいのです。
ここ2,3日ずっとここで止まっているのでアドバイスをお願いします。
違うタイプの敵を動かす
Re:違うタイプの敵を動かす
その本は読んだことがないですが。
[color=#d0b0c0" face="monospace]
>最初の弱点と砲台と同じ座標に表示されて同じ動きをするという状態
[/color]
んーと状況が良く飲み込めていないのですが、要するにポインタ関数を切り替えたら
一応異なる2つの関数を切り替えることは出来たけど、エネミーの位置が切り替える前の
座標で表示された、ということでしょうか?
以下はそうである、と仮定したものです。違っていたら無視していください。
そうであれば、なんとなくそれは当然なような気がします。
エネミーの情報を格納している g_enemiesの Enemyクラスには敵の種類を表す
パラメータがありません。
その為関数を DrawEnemies05->DrawEnemies04に切り替えた時、usedメンバが
TRUEでさえあれば、コールしている関数が処理するべき敵である、と認識してしまい、
DrawEnemies04で処理していた砲台の位置に DrawEnemies05の敵が現れたのでしょう。
Enemyクラスに敵の種類のパラメータを追加し、各関数は特定の種類の敵しか
処理しないようにしておけば、ひとまず解決できるのではないでしょうか。
[color=#d0b0c0" face="monospace]
>最初の弱点と砲台と同じ座標に表示されて同じ動きをするという状態
[/color]
んーと状況が良く飲み込めていないのですが、要するにポインタ関数を切り替えたら
一応異なる2つの関数を切り替えることは出来たけど、エネミーの位置が切り替える前の
座標で表示された、ということでしょうか?
以下はそうである、と仮定したものです。違っていたら無視していください。
そうであれば、なんとなくそれは当然なような気がします。
エネミーの情報を格納している g_enemiesの Enemyクラスには敵の種類を表す
パラメータがありません。
その為関数を DrawEnemies05->DrawEnemies04に切り替えた時、usedメンバが
TRUEでさえあれば、コールしている関数が処理するべき敵である、と認識してしまい、
DrawEnemies04で処理していた砲台の位置に DrawEnemies05の敵が現れたのでしょう。
Enemyクラスに敵の種類のパラメータを追加し、各関数は特定の種類の敵しか
処理しないようにしておけば、ひとまず解決できるのではないでしょうか。