2

これがプログラムです。

void main( )
{
    int h, v;
    h = 1; v = 10;
    while ( !kbhit( ) || h <= 80 )
    {
        gotoxy( h, v );
        printf( "<--->" );
        delay( 200 );
        clrscr( );
        h = h + 1;
    }
    getch( );
}

kbhit()キーが押されるまでループを実行していたCでプログラムを作成しています。"<--->"ここでは、キーが押されるか、画面の最後のピクセルに到達するまで、矢印が前方に移動し続けます。

私が望むのは、プログラム'd'が押されるたびに h を 1 ずつ増やし、押されるたびに1 ずつ減らさなければならないということです'a'。つまり h++;h--; 文字が押されるまで別のループを実行します。アイデアは、キーが押されるまでヘビが特定の方向に動き続けるスネーク ゲームに似ています。助けてください!

4

1 に答える 1

1

clrscr() は gotoxy と printf の前に置く必要があります

とにかく、ヘビが進むべき方向、つまり、ユーザーが「a」または「d」を押した場合に格納されるものを示すためだけに、状態変数を作成します。

そして、ループを離れず、if(kbhit) を使用して文字を取得します。

int direction = 1; char control;
while (1)
{
    if(kbhit()){
       control = getch();
       switch (control){
              case 'a': direction = -1; break;
              case 'd': direction = +1; break;
              default: break;
       }
    }
    clrscr( );
    gotoxy( h, v );
    printf( "<--->" );
    delay( 200 );
    h = h + direction;
}
于 2014-03-08T14:30:10.387 に答える