2 crazymonk CrazyMonk 于 2015.06.23 07:46 提问

关于五子棋棋盘更新问题

void renew(NODE chessboard[][17], int x, int y) // 更新棋盘指定位置的图像
{
HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE); // 得到标准输出的句柄
COORD coordScreen; // 系统提示符位置
CONSOLE_SCREEN_BUFFER_INFO csbi; // 屏幕信息

if (!GetConsoleScreenBufferInfo(hOutput, &csbi))   // 获取屏幕信息 
    return;   // 不成功则返回
coordScreen = csbi.dwCursorPosition;   // 获取系统提示符位置
gotoxy(y * 2, x);   // 将系统提示符移动到棋盘的(x,y)所在位置 
printnode(chessboard, x, y);   // 重新打印这一块
SetConsoleCursorPosition(hOutput, coordScreen);   // 系统提示符回复到原来位置

}
//gotoxy()
为什么是y* 2啊?,到底是怎么把系统提示符移动过去的呢,
前几步也不是很懂,有详细点的解释吗?

1个回答

gamefinity
gamefinity   Rxr 2015.06.23 09:38
已采纳
  • 不知道你程序的上下文。只能靠猜测。
  • 最大的可能是:棋子是ASCII字符,但是两个棋子中有一个分隔线,因此一个棋子+一个分隔线,因此是*2.
  • 另一个可能是:你的棋子是一个中文字符表示的,因此在Console的位置上占两个位
Csdn user default icon
上传中...
上传图片
插入图片