Witam.
Mam taki problem, stworzyłem w programie taką funkcję readKey(), które odczytuje w tle wciśnięty klawisz, tak wygląda jej kod:
void readKey() {
while (true) {
pressedKey = ' ';
pressedKey = _getch();
Sleep(16);
}
}
...i teraz pojawia się problem, w drugiej funkcji po naciśnięciu "w", lub "s" program zachowuje się jakbym nacisnął któryś z tych klawiszów 3 razy.
void mainMenu() {
static int cursorPos = 3;
system("cls");
while (true) {
clearScreen();
showConsoleCursor(false);
for (int i = 23; i > 0; i--) {
cout << "\n";
}
setFontColor("white"); cout << "______________________________________________________________________________________________________________________\n";
setFontColor("green"); cout << "linia1\n";
if (cursorPos == 3) { setFontColor("yellow"); } else { setFontColor("white"); } cout << "linia2\n";
if (cursorPos == 2) { setFontColor("yellow"); } else { setFontColor("white"); } cout << "linia3\n";
if (cursorPos == 1) { setFontColor("yellow"); } else { setFontColor("white"); } cout << "linia4\n";
switch (pressedKey) {
case 'w': if (cursorPos == 3) { cursorPos = 1; }
else { cursorPos++; } break;
case 's': if (cursorPos == 1) { cursorPos = 3; }
else { cursorPos--; } break;
default: break;
}
}
}
Na początku programu oczywiście odpalam dwa wątki z tymi funkcjami.
Dlaczego tak się dzieje? Wprowadziłem opóźnienie w postaci Sleep(), aby program nie zamieniał od razu char'a na ' ' i nadal nic :(
Z góry dziękuję za pomoc!