我目前正在用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;
}
答案 0 :(得分:1)
所以是的,我有点愚蠢 - 我只需要使用noecho()选项