dxライブラリ 将来性のあるコードの書き方が知りたい
自分なりに実装したのですがほんとは間違って言うであるやり方をしてる点がありましてそこをほんとはこう書いたほうがいいみたいなことが知りたくて質問をしました。
1 static int player_xみたいなやり方はほんはまずいのかと
2 //各オブジェクト宣言 の部分はどうすればいいのか知りたい。
それと将来性のあるちゃんとしたコードを書くためににはどうすればいいのか知りたい
#include "DxLib.h"
#include "math.h"
#include <string>
using namespace std;
static int key[256];
static int Color = GetColor(255, 255, 255);
static int player_x = 0;//プレイヤーのX座標
static int player_y = 0;//プレイヤーのY座標
//キー入力関数
int KeyBord_Get(int keycode)
{
char tmpkey[256];
GetHitKeyStateAll(tmpkey);
for (int i = 0; i < 256; i++)
{
if (tmpkey[i] != 0)
{
key[i]++;
}
else
{
key[i] = 0;
}
}
return key[keycode];
}
//ショットクラス
class Shot
{
int width;
int height;
int gh;
public:
bool life;
int x;
int y;
void Initialize(int xx,int yy,int ww,int hh,const char *ch)//初期化
{
x = xx;
y = yy;
width = ww;
height = hh;
life = false;
gh = LoadGraph(ch);//画像読み込み
}
void Update()//計算
{
//確認用デバック
DrawFormatString(0, 0, Color, "test");
if (life == true)
{
y = y - 4;
if (y < -10)
{
life = false;
}
}
Draw();
}
void Draw()//描画
{
DrawGraph(x, y, gh, true);
}
};
//ショット管理クラス
class Player_Shot_Manager
{
private:
#define shot_max 50
int x;
int y;
bool state;
int count;
//Shot shot;
Shot shot[shot_max];
public:
//初期化
void Initilize()
{
state = false;
count = 0;
for (int i = 0; i < shot_max; i++)
{
//弾画像を読み込み
shot[i].Initialize(-50, -50, 14, 3, "resources/Player_Shot.png");
}
}
//更新
void Update()
{
if (KeyBord_Get(KEY_INPUT_Z) >= 1)
{
if (count % 10 == 0)
{
state = true;
if (state = true)
{
for (int i = 0; i < shot_max; i++)
{
if (shot[i].life == false)
{
shot[i].life = true;
shot[i].x = player_x;
shot[i].y = player_y;
break;
}
}
}
}
else
{
state = false;
}
}
else {
state = true;
}
for (int i = 0; i < shot_max; i++)
{
shot[i].Update();
}
count++;
}
//描画
void Draw()
{
}
};
//プレイヤークラス
class Player_Control
{
private:
int gh;
int width;
int height;
bool flag;
public:
int x;
int y;
Player_Control()
{
}
void Draw()
{
DrawGraph(x, y, gh, true);
//DrawGraph(x,y - 3,gh,true);
}
void Update()
{
player_x = x;
player_y = y;
if (KeyBord_Get(KEY_INPUT_UP) >= 1)
{
y = y - 2;
}
if (KeyBord_Get(KEY_INPUT_RIGHT) >= 1)
{
x = x + 2;
}
if (KeyBord_Get(KEY_INPUT_LEFT) >= 1)
{
x = x - 2;
}
if (KeyBord_Get(KEY_INPUT_DOWN) >= 1)
{
y = y + 2;
}
}
void Initialize()
{
gh = LoadGraph("resources/Player.png");
//DrawFormatString(0,0,Color,"aaaaa");
x = 200;
y = 200;
width = 45;
height = 45;
}
};
//各オブジェクト宣言
Player_Shot_Manager shot;
Player_Control player;
//初期化
void Game_Initialize()
{
shot.Initilize();
player.Initialize();
}
//計算
void Game_Update()
{
shot.Update();
player.Update();
}
//描画
void Game_Draw()
{
//Player_Shot_Manager.Draw();
player.Draw();
}
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
ChangeWindowMode(TRUE);
if (DxLib_Init() == -1) { return -1; }
Game_Initialize();
//int x = LoadGraph("resources/Player_Shot.png");
while (ClearDrawScreen() == 0 && SetDrawScreen(DX_SCREEN_BACK) == 0 && ProcessMessage() == 0)
{
Game_Update();
Game_Draw();
//DrawGraph(100,100,x,true);
ScreenFlip();
if (CheckHitKey(KEY_INPUT_ESCAPE) == 1) { break; }
}
return 0;
}