Я использую 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;
}
Он работает, но только один раз — второй, третий и т. Д. Нажал не работает.
Ты никогда не меняешься poz_x
, так что вы всегда звоните
gotoxy(2,1);
в петле.
Ты никогда не меняешься poz_x
в вашем коде. В вашем цикле while вы всегда переходите к начальному значению +1. Код, подобный этому, должен быть правильным:
while(true)
{
Keys = getch();
if (Keys == 77)
{
poz_x+=1;
gotoxy(poz_x,poz_y);
}
}