トップページ > 記事閲覧
発射した弾が画面外に出ないと次の弾が発射されない
名前:はちみつ 日時: 2018/07/02 18:43

題名の通りです。 シューティングゲームを作っています。 いろいろと研究し弾が発射されるようになったのですが、一つ目に発射した弾が画面外に出ないと次の弾が発射されません。 何が原因でしょうか。 #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; }
メンテ

Page: 1 |

Re: 発射した弾が画面外に出ないと次の弾が発射されない ( No.1 )
名前:GASHI 日時:2018/07/02 21:03

はじめまして。 この部分で、一度に全部の弾が発射されてしまうので、 全部同じ座標で重なって「1発しか出てないように見える」というわけです。 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; } } }
メンテ
Re: 発射した弾が画面外に出ないと次の弾が発射されない ( No.2 )
名前:はちみつ(解決) 日時:2018/07/05 23:40

指摘されたことを考慮してifの最後にbreakを入れることで解決できました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存