メンバ変数に値が代入できません。
下のソースは弾を追加するAddBullet()で引数を受け取ってそれをメンバ変数に入れて、テストとしてbullet->m_xを表示させているのですが、0が表示されます。実際は後に移動と描画の処理も書いたのですが、それでうまくいかなかったので追加(AddBullet())だけにしたのですがやはりうまく代入されていませんでした・・・
#include "DxLib.h"
#include <math.h>
const int BulletMax = 1024;
class CBaseBullet {
public:
double m_x, m_y;
double m_vx, m_vy;
double m_ang, m_spd;
bool m_used;
};
CBaseBullet bullets[BulletMax] = {0};
void AddBullet(double x, double y, double ang, double spd) {
for (int i = 0; i < BulletMax; i++) {
if (!bullets[i].m_used) {
CBaseBullet* bullet = &bullets[i];
bullet->m_x = x;
bullet->m_y = y;
bullet->m_ang = ang;
bullet->m_spd = spd;
bullet->m_vx = cos(bullet->m_ang) * bullet->m_spd;
bullet->m_vy = sin(bullet->m_ang) * bullet->m_spd;
bullet->m_used = true;
}
}
//DrawFormatString(0, 0, GetColor(255, 255, 255), "%d", bullets[0].m_x);
}
int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int CmdShow)
{
ChangeWindowMode(TRUE);
if (DxLib_Init() == -1) return -1;
SetDrawMode(DX_SCREEN_BACK);
while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) {
ClearDrawScreen();
clsDx();
AddBullet(400, 200, 1.57, 5);
ScreenFlip();
}
DxLib_End();
return 0;
}