Getch не читает ввод с клавиатуры - PullRequest
0 голосов
/ 28 мая 2020

Попытка получить ввод пользователя для простой терминальной игры. Я использую ОС Ma c.

#include <stdio.h>
#include <curses.h>
#include <iostream>

int main()
{
    int ch;
    while (ch != 113)
    {
        ch = getch();
        std::cout << ch << std::endl;
    }

    return 0;
}

В этом примере я пытаюсь просто распечатать свои нажатия клавиш, но ch = getch(), похоже, ничего не делает. Он не ждет нажатия клавиши, а std::cout << ch << std::endl просто многократно печатает -1. Не могу понять, что я здесь делаю не так.

1 Ответ

2 голосов
/ 28 мая 2020

Вам нужно сначала вызвать initscr перед любыми другими функциями curses. http://www.cs.ukzn.ac.za/~hughm/os/notes/ncurses.html

#include <stdio.h>
#include <curses.h>
#include <iostream>

int main()
{
    int ch;
    initscr(); // <----------- this
    while (ch != 113)
    {
        ch = getch();
        std::cout << ch << std::endl;
    }

    return 0;
}
...