サンプルコードを作ってみたので参考にしてみてください。
#include "DxLib.h"
char stateKey[256];//キーがおされているかを格納する配列
//キャラの構造体
typedef struct{
//座標と速度
int x,y,vx,vy;
}ch_t;
//残像用の構造体
typedef struct{
//座標
int x,y;
}zanzou_t;
int i;//for文カウンタ用変数
int img_ch;//キャラの画像変数
int func_state;//状態変数 0:初期化 1:通常処理
ch_t ch;//キャラ
zanzou_t zanzou[64];//64個の残像
int color;//色変数
//ループで必ず行う3大処理
int ProcessLoop(){
if(ProcessMessage()!=0)return -1;//プロセス処理がエラーなら-1を返す
if(ClearDrawScreen()!=0)return -1;//画面クリア処理がエラーなら-1を返す
GetHitKeyStateAll(stateKey);//現在のキー入力処理を行う
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
while(ProcessLoop()==0){//メインループ
//初期化
if(func_state==0){
//画像読み込み(画像は自分で用意してください)
img_ch=LoadGraph("ch.png");
//白色の用意
color=GetColor(255,255,255);
//キャラの位置初期化
//グローバル変数は自動的に0になるため速度は書かなくてよい
ch.x=320;
ch.y=240;
//残像の初期化
for(i=0;i<64;i++){
zanzou.x=ch.x;
zanzou.y=ch.y;
}
//以降は通常処理へ
func_state=1;
}
//通常処理
else{
//矢印キーによりキャラの速度を変化させる
if(stateKey[KEY_INPUT_RIGHT]){
ch.vx++;
}
if(stateKey[KEY_INPUT_DOWN]){
ch.vy++;
}
if(stateKey[KEY_INPUT_LEFT]){
ch.vx--;
}
if(stateKey[KEY_INPUT_UP]){
ch.vy--;
}
//速度が大きすぎるときは小さくする
if(ch.vx<-640) ch.vx=-640;
if(ch.vx>640) ch.vx=640;
if(ch.vy<-480) ch.vy=-480;
if(ch.vy>480) ch.vy=480;
//移動させる
ch.x+=ch.vx;
ch.y+=ch.vy;
//画面枠を超えたら画面の反対に移動させる
if(ch.x<0) ch.x+=640;
if(ch.x>640) ch.x-=640;
if(ch.y<0) ch.y+=480;
if(ch.y>480) ch.y-=480;
//残像を動かす
//添え字が小さいほど後ろ側にある
//この処理は前(キャラ)側から引っ張るのではなく、
//後ろから押すような感じ
for(i=0;i<63;i++){
zanzou.x=zanzou[i+1].x;
zanzou.y=zanzou[i+1].y;
}
//いちばん前の残像はキャラの位置に合わせる
zanzou[63].x=ch.x;
zanzou[63].y=ch.y;
//アルファブレンドモードにセット
SetDrawBlendMode(DX_BLENDMODE_ALPHA,32);
//残像を描画
for(i=0;i<64;i++){
DrawRotaGraph(zanzou.x,zanzou.y,1,0,img_ch,TRUE);
}
//描画モードを元に戻す
SetDrawBlendMode(DX_BLENDMODE_NOBLEND,0);
//キャラを描画
DrawRotaGraph(ch.x,ch.y,1,0,img_ch,TRUE);
//キャラの速度を表示する
DrawFormatString(0,0,color,"vx=%d",ch.vx);
DrawFormatString(0,16,color,"vy=%d",ch.vy);
}
if(stateKey[KEY_INPUT_ESCAPE])break;//エスケープが入力されたらブレイク
ScreenFlip();//裏画面反映
}
DxLib_End();//DXライブラリ終了処理
return 0;
}