題名の通りです。
シューティングゲームを作っています。
いろいろと研究し弾が発射されるようになったのですが、一つ目に発射した弾が画面外に出ないと次の弾が発射されません。
何が原因でしょうか。
#include "DxLib.h"
int count = 0; //カウント
int Key[256]; // キーが押されているフレーム数を格納する
// キーの入力状態を更新する
int gpUpdateKey() {
char tmpKey[256]; // 現在のキーの入力状態を格納する
GetHitKeyStateAll(tmpKey); // 全てのキーの入力状態を得る
for (int i = 0; i<256; i++) {
if (tmpKey[i] != 0) { // i番のキーコードに対応するキーが押されていたら
Key[i]++; // 加算
}
else { // 押されていなければ
Key[i] = 0; // 0にする
}
}
return 0;
}
struct character { //キャラクターデータの構造体
int gh;
int x ;
int y ;
int Life;
}Player;
struct shot { //弾の構造体
int flag;
int x;
int y;
int shotgh;
}Playershot[25];
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK); //ウィンドウモード変更と初期化と裏画面設定
Player={ LoadGraph("画像/自機.png") ,50,300,3 };//自機情報の初期化
for (int i = 0; i <= 25; i++) {
Playershot[i]={ 0,Player.x,Player.y,LoadGraph("画像/自機弾.png") };//自機の弾の情報の初期化
}
while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0 && gpUpdateKey() == 0) //メインループ開始
{
if (Key[KEY_INPUT_UP] >= 1 && Player.y >= 0) { //自機操作上
Player.y -= 5;
}
if (Key[KEY_INPUT_DOWN] >= 1 && Player.y <= 430) { //自機操作下
Player.y += 5;
}
if (Key[KEY_INPUT_RIGHT] >= 1 && Player.x <= 560) { // 自機操作右
Player.x += 5;
}
if (Key[KEY_INPUT_LEFT] >= 1 && Player.x >= 0) { //自機操作左
Player.x -= 5;
}
if (Key[KEY_INPUT_A] == 1) { //自機が弾を発射した時のフラグと座標の代入
for (int i = 0; i <=25; i++) {
if (Playershot[i].flag == 0) {
Playershot[i].flag = 1;
Playershot[i].x = Player.x;
Playershot[i].y = Player.y;
}
}
}
for (int i = 0; i <=25; i++) {
if (Playershot[i].flag == 1) { //自機の弾の進み方の計算
Playershot[i].x += 6;
}
if (Playershot[i].flag == 1 && Playershot[i].x > 600) { //弾が画面からはみ出したらフラグを戻す
Playershot[i].flag = 0;
}
}
DrawFormatString(50, 50, GetColor(225, 225, 225), "%d,%d", Player.x, Player.y);//自機の座標表示
DrawGraph(Player.x, Player.y, Player.gh, true);//自機描画
for (int i = 0; i <= 25; i++) { //自機の弾の描写
if (Playershot[i].flag == 1) {
DrawGraph(Playershot[i].x, Playershot[i].y, Playershot[i].shotgh,true);
}
}
count++;
}
WaitKey(); // キー入力待ち
DxLib_End(); // DXライブラリ終了処理
return 0;
}