3

私はVisual Studio 2010を使用しており、ユーザーがキーボードの右配列キーを押したときにカーソルを移動しようとしています:

#include "stdafx.h"
#include <iostream>
#include <conio.h> 
#include <windows.h>

using namespace std;

void gotoxy(int x, int y)
{
  static HANDLE h = NULL;  
  if(!h)
    h = GetStdHandle(STD_OUTPUT_HANDLE);
  COORD c = { x, y };  
  SetConsoleCursorPosition(h,c);
}

int main()
{
    int Keys;
    int poz_x = 1;
    int poz_y = 1;
    gotoxy(poz_x,poz_y);

    while(true)
    {   
        fflush(stdin);
        Keys = getch();
        if (Keys == 77)
                gotoxy(poz_x+1,poz_y);
    }

    cin.get();
    return 0;
}

それは機能していますが、1回だけ-2番目、3番目などを押しても機能しません。

4

4 に答える 4

3

poz_xコードを変更することはありません。while ループでは、常に初期値 +1 に移動します。次のようなコードは正しいはずです。

while(true)
{   
    Keys = getch();
    if (Keys == 77)
    {
            poz_x+=1;     
            gotoxy(poz_x,poz_y);
    }
}
于 2013-01-18T18:04:04.390 に答える
1

あなたは決して変わらないpoz_xので、あなたはいつも電話することになります

gotoxy(2,1);

ループの中。

于 2013-01-18T18:03:32.543 に答える