私は C++ と DirectX は初めてで、XNA から来ました。Fly The Copter のようなゲームを開発しました。私が行ったことは、Wall という名前のクラスを作成することです。ゲームの実行中に、すべての壁を描きます。XNA では壁を ArrayList に保存し、C++ では vector を使用しました。XNA ではゲームの実行速度が速く、C++ では非常に遅くなります。C++ コードは次のとおりです。
void GameScreen::Update()
{
//Update Walls
int len = walls.size();
for(int i = wallsPassed; i < len; i++)
{
walls.at(i).Update();
if (walls.at(i).pos.x <= -40)
wallsPassed += 2;
}
}
void GameScreen::Draw()
{
//Draw Walls
int len = walls.size();
for(int i = wallsPassed; i < len; i++)
{
if (walls.at(i).pos.x < 1280)
walls.at(i).Draw();
else
break;
}
}
Update メソッドでは、X 値を 4 減らします。Draw メソッドでは、sprite->Draw (Direct3DXSprite) を呼び出します。ゲームループで実行される唯一のコードです。これが悪いコードであることは承知しています。改善するアイデアがあれば、助けてください。私の英語に感謝し、申し訳ありません。