如何阻止C ++ NCurses显示按下的键?

时间:2015-06-03 14:21:36

标签: c++ key ncurses

我目前正在用C ++创建一个Tic-Tac-Toe游戏。在放置瓷砖的功能中,我正在利用无休止的循环来检查getch(),然后移动光标或放置瓷砖。然而,当我按下其他东西然后输入或箭头时,它会在板上写下这个字符。但我不想那样。你能告诉我怎么做吗?

bool moveCursor ( void )
{
    int c;
    int tmpX = m_Xpos;
    int tmpY = m_Ypos;

    while (1){
        c = getch();

        if(c == KEY_LEFT) tmpX--;
        if(c == KEY_RIGHT) tmpX++;
        if(c == KEY_UP) tmpY--;
        if(c == KEY_DOWN) tmpY++;

        if (tmpY > m_len ) tmpY--;
        if (tmpX > m_len ) tmpX--;
        if (tmpY < 1 ) tmpY++;
        if (tmpX < 1 ) tmpX++;

        if(c == 'q') return false;
        if(c == '\n')
        {
            m_Ypos = tmpY;
            m_Xpos = tmpX;
            if (checkValidMove(tmpY,tmpX))
            {
                break;
            }
        }
        if ( c != KEY_LEFT && c != KEY_RIGHT && c != KEY_UP && c != KEY_DOWN && c != 'q' && c != '\n' ) continue;//my try to fix it, but didn't work
        move(tmpY,tmpX);
        refresh();
    }
    return true;
}

1 个答案:

答案 0 :(得分:1)

所以是的,我有点愚蠢 - 我只需要使用noecho()选项