プログラミングの初心者です。
DXライブラリで簡単なシューティングゲームを作成しています。
自機弾の連射がどうしてもうまくできないので質問させていただきます。
弾の連射のソースをDXライブラリのシューティングのサンプル
(ttp://homepage2.nifty.com/natupaji/DxLib/lecture/lecture1_4.html)
を手本にしてソースを組んでいるのですが、どうやら弾たちが重なってしまうため、1つに見えてしまいます。
下が自分が作成したソースです。
自機のたまに関する部分だけですが。
変数宣言、など
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
//ShotFlagに0を代入する
for(i=0;i<msh;i++)
{
ShotFlag[i]=0;
}
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
if(allkey[KEY_INPUT_SPACE]==1) // スペースキーを押していたら弾ループにはいる
{
for(i=0;i<msh;i++) //弾の数だけ繰り返す
{
if(ShotFlag[i]==0) //フラグ0なら実行
{
// 弾の位置をセット
ShotX[i] = mx+16; //自機の目の前に設置
ShotY[i] = my-16;
// 弾は現時点を持って存在するので、存在状態を保持する変数に1を代入する
ShotFlag[i] = 1 ;
}
} //forループの終わり
} //ifループの終わり
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
ここは敵関連のソースで弾の処理とは無関係なので省略
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
for(i=0;i<msh;i++)
{
//ShotFalgが1なら行う
if( ShotFlag[i] == 1 )
{
// 弾を16ドット上に移動させる
ShotY[i] -= 16 ;
// 画面外に出てしまった場合はフラグ0
if( ShotY[i] < 40 )
{
ShotFlag[i] = 0 ;
}
//弾の描画
DrawGraph( ShotX[i] , ShotY[i] , ShotGraph , TRUE ) ;
}
}
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
以下、時間やスコア、表画面処理
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
以上のようになっております。
ShotX[i]、Shot[i]が弾の位置、ShotFlagが弾の存在フラグ、mshが弾の数、です。
弾の描画処理の部分をどうにか直したいのですが、なかなかうまくできませんでした。