ページ 11

無題

Posted: 2010年8月01日(日) 23:29
by ねんどじん
もう3度目になりますがよければ指摘をください。

東方の二時創作STGをつくり途中(まだ骨組みすらできてない)なのですが、
ほかの部分は支障なく動くのに、低速時の自機あたり判定だけが表示できないので
困っています。

作業工程が「龍神録プログラミングの館」で学んだのとほぼ同じですので
それで説明しますと、
img_chetc[10]を宣言し、そこに
img_chetc[0]=LoadGraph("../dat/img/char/atari.png");(パスは確認しました)
として画像の場所をいれ、DrawRotaGraphFで描画しています。

画像の場所を入れる変数を作り、そこにLoadGraphで場所を入れ、
毎ループに一回、低速ボタンが押されているかチェックして描画する・・・
これでいけると思ったのですが、どうにも描画されている気がしません。

あと、なぜだかさっぱりなのですが、img_chetc配列の[10]を[1]に変えてみたところ、
自機ショットまでもがなぜか描画されなくなってしまいました。配列の数を[10]に
直すと、また描画されるのですが・・
ちなみに、自機ショットの場所はimg_chetcではなく、別の変数に入っています。

説明下手ですがよろしくお願いします。

Re:無題

Posted: 2010年8月01日(日) 23:33
by シエル
これだけじゃ厳しいかと。コードを提示した方がいいのでは?

Re:無題

Posted: 2010年8月01日(日) 23:53
by ねんどじん
ご指摘ごもっともでしたので、今できてるところまでをアップしました。

 http://www.dotup.org/uploda/www.dotup.o ... 3.zip.html

パスワードは stg です。

*作成が間に合っていない素材は現在、龍神録プログラミングの館で配布されているものを
そのままだったりちょっといじくったりして代用しています。
*ボムはうたないで!(自分の画力的な意味で)。。別に何もないですが。

Re:無題

Posted: 2010年8月02日(月) 13:46
by DVDM
>>ねんどじんさん
ソース拝見させて頂きました。
img_chetc[0] に atari.png を読み込めてはいたのですが
どこかのタイミングで img_chetc[0] の中身が 0 になっていました。

ブレークポイントを設定して調べてみると ini() 関数内での memset に原因があるようでした。

ねんどじんさんのお書きになったソースでは
memset(del_effect, 0, sizeof(del_effect)*DEL_EFFECT_MAX);

のようになっていたのですが、
memset(del_effect, 0, sizeof([color=red>del_effect_t[/color])*DEL_EFFECT_MAX);

もしくは、
memset(del_effect, 0, sizeof([color=red>del_effect[/color]));

とすれば、こちらでは低速移動中に当たり判定用の画像が表示されました。

Re:無題

Posted: 2010年8月02日(月) 17:50
by ねんどじん
>>DVDMさん

一式見てくれなんて無茶な頼みにもかかわらずありがとうございました!
初期化時に本来、dell_effectのサイズ分初期化するところを、
そのDEL_EFFECT_MAX倍のメモリに0を入れてしまって、img_chetc[0]にも0が
入ってしまったんですね。
自分の確認が甘かったです。ご指摘の通りにやってみると、確かに
あたり判定が表示されました。
メモリがどうなってるかまだ詳しく知らないので、大変勉強になりました。
今後ともよろしくお願いします。