Problem z getchar()

1

Problem przy pętli do - while:

do
{
    SetConsoleTextAttribute(kol,79);
    gotoxy(32,7+y);
    cout << menu[y];
    SetConsoleTextAttribute(kol,7);
    gotoxy(32, 7+y);
    klawisz1=getchar();
    if (klawisz1 == 1)
    y+=1;
    if (klawisz1 == 2)
    y-=1;
    if (y == 0)
    y = 3;
    if (y == 4)
    y = 0;
}
while(klawisz1 == 0);

Cały kod:

#include <iostream>
#include <windows.h>
#include <stdio.h>
// 7 i 79
using namespace std;

void gotoxy(const int x, const int y)
{
    HANDLE g_hConsol = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD coord = {x, y};
    SetConsoleCursorPosition(g_hConsol, coord);
}
int main()
{
HANDLE kol = GetStdHandle(STD_OUTPUT_HANDLE);

int klawisz1;
int y;
string menu[4];
menu[0] = "Menu 1";
menu[1] = "Menu 2";
menu[2] = "Menu 3";
menu[3] = "Menu 4";

for (y=0; y<4; y++)
{
    gotoxy(32,7+y);
    cout << menu[y];
}

y = 0;

do
{
    SetConsoleTextAttribute(kol,79);
    gotoxy(32,7+y);
    cout << menu[y];
    SetConsoleTextAttribute(kol,7);
    gotoxy(32, 7+y);
    klawisz1=getchar();
    if (klawisz1 == 1)
    y+=1;
    if (klawisz1 == 2)
    y-=1;
    if (y == 0)
    y = 3;
    if (y == 4)
    y = 0;
}
while(klawisz1 == 0);
}

Kompilator Code::Blocks z mingw.

0

Przydałoby się wiedzieć jaki ten problem...

0

Nie wiem jak go opisać, nie działa mi funkcja getchar() przez co cała pętla się sypie.

1

getchar() zwraca numer znaku, należałoby w tym wypadku porównać: == '1' (przed wcześniejszym zrzutowaniem na char) lub przekonwertować char na int (ale nie poprzez rzutowanie!).

1

bo getchar() nie robi tego co się wydaje że robi.

użyj getch() z #include <conio.h>

poza tym są i inne błędy.

0

Dzięki za pomoc, panuje już nad sytuacją.

1 użytkowników online, w tym zalogowanych: 0, gości: 1