void runGame(){
readimagefile("PIX\\Landscape.jpg", 0, 0, 800, 800);
while(1 == 1){
moveCharacter();
//moveMonster();
}
}
void moveCharacter(){
int move = 0;
int size = imagesize(0, 0, 800, 800);
void *background = malloc(size);
getimage(0, 0, 800, 800, background);
readimagefile("PIX\\Character\\down_still.gif",x9,y9,x9+50,y9+50);
thunderClaw();
//specialAttack();
//thunderball();
if(kbhit()){
if(getch()== 'd'){
move = 1;
}
if(getch()== 'a'){
move = 3;
}
if(getch()== 'w'){
move = 2;
}
if(getch()== 's'){
move = 4;
}
}
switch (move){
case 1://left
readimagefile("PIX\\Character\\left_r.gif",x9,y9,x9+50,y9+50);Sleep(15);
x9 = x9 + 5;
putimage(0, 0, background, COPY_PUT);
readimagefile("PIX\\Character\\left_still.gif",x9,y9,x9+50,y9+50);Sleep(15);
x9 = x9 + 5;
putimage(0, 0, background, COPY_PUT);
readimagefile("PIX\\Character\\left_l.gif",x9,y9,x9+50,y9+50);Sleep(15);
x9 = x9 + 5;
putimage(0, 0, background, COPY_PUT);
readimagefile("PIX\\Character\\left_still.gif",x9,y9,x9+50,y9+50);Sleep(15);
x9 = x9 + 5;
putimage(0, 0, background, COPY_PUT);
break;
case 2://up
readimagefile("PIX\\Character\\up_r.gif",x9,y9,x9+50,y9+50);Sleep(15);
y9 = y9 - 5;
putimage(0, 0, background, COPY_PUT);
readimagefile("PIX\\Character\\up_still.gif",x9,y9,x9+50,y9+50);Sleep(15);
y9 = y9 - 5;
putimage(0, 0, background, COPY_PUT);
readimagefile("PIX\\Character\\up_l.gif",x9,y9,x9+50,y9+50);Sleep(15);
y9 = y9 - 5;
putimage(0, 0, background, COPY_PUT);
readimagefile("PIX\\Character\\up_still.gif",x9,y9,x9+50,y9+50);Sleep(15);
y9 = y9 - 5;
putimage(0, 0, background, COPY_PUT);
break;
case 3://right
readimagefile("PIX\\Character\\right_r.gif",x9,y9,x9+50,y9+50);Sleep(15);
x9 = x9 - 5;
putimage(0, 0, background, COPY_PUT);
readimagefile("PIX\\Character\\right_still.gif",x9,y9,x9+50,y9+50);Sleep(15);
x9 = x9 - 5;
putimage(0, 0, background, COPY_PUT);
readimagefile("PIX\\Character\\right_l.gif",x9,y9,x9+50,y9+50);Sleep(15);
x9 = x9 - 5;
putimage(0, 0, background, COPY_PUT);
readimagefile("PIX\\Character\\right_still.gif",x9,y9,x9+50,y9+50);Sleep(15);
x9 = x9 - 5;
putimage(0, 0, background, COPY_PUT);
break;
case 4://down
readimagefile("PIX\\Character\\down_l.gif",x9,y9,x9+50,y9+50);Sleep(15);
y9 = y9 + 5;
putimage(0, 0, background, COPY_PUT);
readimagefile("PIX\\Character\\down_still.gif",x9,y9,x9+50,y9+50);Sleep(15);
y9 = y9 + 5;
putimage(0, 0, background, COPY_PUT);
readimagefile("PIX\\Character\\down_r.gif",x9,y9,x9+50,y9+50);Sleep(15);
y9 = y9 + 5;
putimage(0, 0, background, COPY_PUT);
readimagefile("PIX\\Character\\down_still.gif",x9,y9,x9+50,y9+50);Sleep(15);
y9 = y9 + 5;
putimage(0, 0, background, COPY_PUT);
break;
default:
readimagefile("PIX\\Character\\down_still.gif", x9, y9, x9+50, y9+50);
putimage(0, 0, background, COPY_PUT);
}
}//end function
void thunderClaw(){
int mx = mousex();
int my = mousey();
int size = imagesize(0, 0, 800, 800);
void *background = malloc(size);
getimage(0, 0, 800, 800, background);
getmouseclick(WM_LBUTTONDOWN, mx, my);
if(WM_LBUTTONDOWN){
printf("Left mouse button was clicked!\n");
#ifdef SOUNDfx
PlaySound("SOUNDS\\Electricity_Shock_Sound_Effect.wav", NULL, SND_ASYNC);
#endif
readimagefile("PIX\\Thunderclaw\\thunderclaw00.gif", mx-25, my-25, mx+25, my+25);Sleep(80);
putimage(0, 0, background, COPY_PUT);
readimagefile("PIX\\Thunderclaw\\thunderclaw01.gif", mx-25, my-25, mx+25, my+25);Sleep(80);
putimage(0, 0, background, COPY_PUT);
readimagefile("PIX\\Thunderclaw\\thunderclaw0.gif", mx-25, my-25, mx+25, my+25);Sleep(80);
putimage(0, 0, background, COPY_PUT);
readimagefile("PIX\\Thunderclaw\\thunderclaw.gif", mx-25, my-25, mx+25, my+25);Sleep(80);
putimage(0, 0, background, COPY_PUT);
readimagefile("PIX\\Thunderclaw\\thunderclaw2.gif", mx-25, my-25, mx+25, my+25);Sleep(80);
putimage(0, 0, background, COPY_PUT);
readimagefile("PIX\\Thunderclaw\\thunderclaw3.gif", mx-25, my-25, mx+25, my+25);Sleep(80);
putimage(0, 0, background, COPY_PUT);
readimagefile("PIX\\Thunderclaw\\thunderclaw4.gif", mx-25, my-25, mx+25, my+25);Sleep(80);
putimage(0, 0, background, COPY_PUT);
readimagefile("PIX\\Thunderclaw\\thunderclaw5.gif", mx-25, my-25, mx+25, my+25);Sleep(80);
putimage(0, 0, background, COPY_PUT);
}
}
所以這是我現在的代碼。我的問題是,它不斷思考鼠標左鍵不斷點擊。因此,它一直在將動畫放在左上角並放慢角色移動。我已經嘗試了一些令人滿意的東西來阻止這一點,但一直沒有弄清楚。谷歌也沒有幫助。我只是不明白它是如何認爲我經常點擊鼠標左鍵。我相信這是因爲if(WM_LBUTTONDOWN)語句。但即使如此,我也嘗試過改變它,增加不同的規格,移動它,擺脫它,沒有什麼解決我需要它。它只是不斷地認爲左按鈕正在被點擊(即使當我擺脫if()聲明它做到了這一點!)。我的2D遊戲動畫問題
任何人都可以幫我解決這個問題嗎?
謝謝!
P.S.我在Visual Studio 2012和graphics.h庫中。
void getmouseclick(int kind, int& x, int& y)
{
WindowData *pWndData = BGI__GetWindowDataPtr();
POINTS where; // POINT (short) to tell where mouse event happened.
// Check if mouse event is in range
if (!MouseKindInRange(kind))
return;
// Set position variables to mouse location, or to NO_CLICK if no event occured
if (MouseKindInRange(kind) && pWndData->clicks[kind - WM_MOUSEFIRST].size())
{
where = pWndData->clicks[kind - WM_MOUSEFIRST].front();
pWndData->clicks[kind - WM_MOUSEFIRST].pop();
x = where.x;
y = where.y;
}
else
{
x = y = NO_CLICK;
}
}
這就是你在說的代碼getmouseclick()
?這不是我寫的哈哈,而是我正在使用的東西。
任何人在那裏有意見? – 2013-03-24 19:16:54