###前提・実現したいこと
シューティングゲームの基本的な部分を作成しようとしています。
###発生している問題・エラーメッセージ
左矢印、右矢印キーで自機が左右に移動し、Zキーが押されると弾が発射される仕組みなのですが、なぜか発射されません。
###該当のソースコード
#include "DxLib.h"
#define MAX_SHOT 4
class Player
{
int x;
int y;
public:
Player(int x, int y) : x(x), y(y) {}
int get_x() const {return x;} void set_x(int x) {this->x = x;} int get_y() const {return y; } void set_y(int y) {this->y = y;}
};
class Shot
{
int x;
int y;
bool flag;
public:
Shot() : flag(false) {}
int get_x() const {return x;} void set_x(int x) {this->x = x;} int get_y() const {return y;} void set_y(int y) {this->y = y;} bool get_flag() const {return flag;} void set_flag(bool flag) {this->flag = flag;}
};
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR IpCmdLine, int nCmdShow)
{
Player player(320, 400);
Shot shot[MAX_SHOT];
int Key = 0;
int OldKey;
SetGraphMode(640, 480, 16); if(DxLib_Init() == -1) return -1; ChangeWindowMode(TRUE); SetDrawScreen(DX_SCREEN_BACK); while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) { ClearDrawScreen(); OldKey = Key; Key = GetJoypadInputState(DX_INPUT_KEY_PAD1); if(Key & PAD_INPUT_RIGHT) player.set_x(player.get_x() + 3); if(Key & PAD_INPUT_LEFT) player.set_x(player.get_x() - 3); for(int i = 0; i < MAX_SHOT; i++) { if(!shot[i].get_flag()) continue; shot[i].set_y(shot[i].get_y() - 8); if(shot[i].get_y() < -32) shot[i].set_flag(false); } if((Key & ~OldKey) & PAD_INPUT_A) { int i; for(i = 0; i < MAX_SHOT; i++) if(shot[i].get_flag()) break; if(i != MAX_SHOT) { shot[i].set_x(player.get_x() + 16); shot[i].set_y(player.get_y()); shot[i].set_flag(true); } } DrawBox(player.get_x(), player.get_y(), player.get_x() + 48, player.get_y() + 48, GetColor(255, 0, 0), TRUE); for(int i = 0; i < MAX_SHOT; i++) if(shot[i].get_flag()) DrawBox(shot[i].get_x(), shot[i].get_y(), shot[i].get_x() + 16, shot[i].get_y() + 16, GetColor(255, 255, 255), TRUE); ScreenFlip(); } DxLib_End(); return 0;
}
###試したこと
デバッグをしたのですが"if(i != MAX_SHOT)"あたりでなぜかZキーが押されていても処理が飛んでいる気がします。おそらくどこかで初歩的なミスをしていると思うのですがどこを間違えたのかわかりません。
###補足情報(言語/FW/ツール等のバージョンなど)
visualc++ 2017をvisual studioを使って作成しています。コメントがまだなくコードが読みづらくて申し訳ありませんが回答お願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。