Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Obsługa klawiatury za pomocą <conio.h>

Ostatnio zmodyfikowano 2017-03-22 14:13
Autor Wiadomość
wiktorlenka
Temat założony przez niniejszego użytkownika
Obsługa klawiatury za pomocą <conio.h>
» 2017-03-22 11:00:21
Witajcie :)

Mam pytanie odnośnie rodziału "Obsługa klawiatury za pomocą <conio.h>"

Nie wiem czy to błąd, ale nie rozumiem czemu tak a nie inaczej wygląda kod, skoro nawet po usunięciu niezrozumiałej dla mnie części - dalej działa poprawnie.
Mianowicie:

************************************************************************************************
C/C++
#include <iostream>
#include <conio.h>
int main()
{
    unsigned char znak;
    std::cout << "klawisz [ESC] wychodzi z programu." << std::endl;
    do
    {
        znak = getch();
        std::cout << "znak: '" << znak << "' kod: " << static_cast < int >( znak ) << std::endl;
        while( kbhit() )
        {
            znak = getch();
            std::cout << "*znak: '" << znak << "' kod: " << static_cast < int >( znak ) << std::endl;
        }
        std::cout << std::endl;
    } while( znak != 27 ); //ESC
   
    return( 0 );
}

*************************************************************************************************

Dlaczego w kodzie mamy ten fragment:
C/C++
{
    znak = getch();
    std::cout << "*znak: '" << znak << "' kod: " << static_cast < int >( znak ) << std::endl;
}
* * * * * * * * * * * *
Gdy usunę go z kodu, konsola dalej wyświetla mi kod znaku przypisanego do przycisku z klawiatury.
Po co więc mamy ten fragment w przykładowym kodzie?

Proszę o pomoc :)
P-159217
carlosmay
» 2017-03-22 12:29:00
W kodzie ten fragment jest dwa razy.
P-159220
Monika90
» 2017-03-22 12:31:46
Jest różnica gdy naciskasz klawisze funkcyjne lub klawisze strzałek, bo te klawisze wysyłają dwa kody pod rząd. Program drukuje te dodatkowe kody z gwiazdką.
P-159221
wiktorlenka
Temat założony przez niniejszego użytkownika
» 2017-03-22 14:13:53
Tak tak, z końcu udało mi się zrozumiec funkcję kbhit()

Jesli ktos miał ten sam problem, służę wyjaśnieniem...
fukncja ta sprawdza czy bufor klawiatury przechowuje więcej niż jedną wartość.
Jesli np. naciśniemy dwa klawisze, funkcja ta zwraca wartość 1. Dlatego fragment kodu jest dwa razy, aby sprawdzić czy bufor klawiatury nie jest "zajęty" więcej niż jedną wartością i wydrukować na konsoli obie te dane.


Mam nadziję że ma to ład i skład :)

Pozdrawiam :)
P-159223
« 1 »
  Strona 1 z 1