0
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()ステートメントを削除したときでも、これが行われました!)。

誰かがこれについて私を助けてくれますか?

ありがとう!

PS私は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()か? それは私が書いたものではなく、私が利用しているものです。

4

2 に答える 2

1

WM_LBUTTONDOWN は Windows 定数であり、次のように定義されます。

#define WM_LBUTTONDOWN                  0x0201

それで

 if(WM_LBUTTONDOWN){

常に true と評価されます。

あなたが望むのはおそらく次のようなものです

if (getmouseclick(WM_LBUTTONDOWN, mx, my) == WM_LBUTTONWDOWN) {
于 2013-03-24T19:23:37.943 に答える
0
DWORD result = 0;
result = getmouseclick(WM_LBUTTONDOWN, mx, my);
    if(result == WM_LBUTTONDOWN){ // then left mouse button was clicked and do some actions
}
于 2013-03-28T03:02:25.280 に答える