问题描述
- C语言五子棋获得上下左右键问题
-
bool getmove(NODE chessboard[][17]) // 获取光标移动,并响应,当按下悔棋、下子、退出热键时,返回true
{
char c;for (;;) {//循环开始 c = getch(); if (c == -32) switch (getch()) { case 72: // 上 cursor.x--; if (cursor.x < 1) cursor.x = 1;//就是不能越界 renew(chessboard, cursor.x + 1, cursor.y); renew(chessboard, cursor.x, cursor.y); break; case 80: // 下 cursor.x++; if (cursor.x > 15) cursor.x = 15; renew(chessboard, cursor.x - 1, cursor.y); renew(chessboard, cursor.x, cursor.y); break; case 75: // 左 cursor.y--; if (cursor.y < 1) cursor.y = 1; renew(chessboard, cursor.x, cursor.y + 1); renew(chessboard, cursor.x, cursor.y); break; case 77: // 右 cursor.y++; if (cursor.y > 15) cursor.y = 15; renew(chessboard, cursor.x, cursor.y - 1); renew(chessboard, cursor.x, cursor.y); break; } else if (c == 27) { //退出 quit = true; return true; } else if (c == 13 && chessboard[cursor.x][cursor.y].step == 0) return true; // 下子 else if (c == 'U' || c == 'u') { // 悔棋 regret = true; return true; } }//循环结束
}
那个C=-32是什么意思啊,既然C都等于-32了,怎么后面switch还能选择其他情况啊?
解决方案
-32相当于224
后面switch的不是c而是getch,也就是下一个字符码
解决方案二:
getch每执行一次,都会读取下一个字符。
时间: 2024-10-29 09:36:03