リファレンスに目を通して、文字を変えて同じように書いたつもりなのですが、画面の画像がぶれて点滅してしまうようになってしまいました。
もしかして、常時ソートと描画を繰り返すという処理は間違っているのでしょうか?
移動したときだけソートさせるというのだったら、どのタイミングで更新すればいいのでしょうか…
// キャラ全員分構造体
typedef struct {
int X;
int Y;
int DrawX;
int DrawY;
int MoveBeforeX;
int MoveBeforeY;
int img;
int gazou;
int muki;
int MoveBeforeMuki;
int walk;
int scope;
int HP;
int HPMAX;
int MP;
int MPMAX;
int CP;
int CPMAX;
}PlayerData_t;
// キャラ構造体の実体
PlayerData_t PlayerData[2];
//オブジェクトの比較関数
int hpcmp(const PlayerData_t *x, const PlayerData_t *y)
{
return (x->DrawY < y->DrawY ? -1 :
x->DrawY < y->DrawY ? 1 : 0);
}
//キャラを表示
void print_PlayerData(PlayerData_t PlayerData)
{
DrawGraph(180+PlayerData.DrawX-CameraX,90+PlayerData.DrawY-CameraY,PlayerData.img,TRUE);//プレイヤー1描画
}
void DrawChara(){//キャラクター描画
int i;
int nx = sizeof(PlayerData) / sizeof(PlayerData[0]); // 配列の要素数
//Y座標順にソート
qsort(PlayerData, nx, sizeof(PlayerData_t), (int(*)(const void*, const void*))hpcmp);
for (i = 0; i < nx; i++)
print_PlayerData(PlayerData[i]);//描画
}