我们眼中的控制台:黑暗的小屏幕中飘逸着几行雪白的文字,如图所示:
本系列”眼中“的控制台概念图:色彩丰富,如图所示:
从黑暗世界到色彩斑斓的确是有不少的进步,那么概念图中为什么只存在矩形这个形状而没有其他形状呢?
我们都知道控制台是一个80*25的字符模式界面,控制台是以字符为单位的字符界面,而不像Windows程序那样的以像素为单位的窗体界面。即使能在控制台构造比如圆形、不规则多边形等其他形状,也会发现构造出来的图形锯齿比较严重,影响了美观。所以本系列游戏以基本矩形为绘图基础,所绘出来的界面大多是N个不同矩形组合而来的。尽管形状少,可是与以往的控制台相比,进步不少,最后你会发现由矩形构成的界面也不会太差!
除了界面之外,字符也有了丰富的色彩,增强了画面的表现力。
读者会发现,楼主说的只是一个概念图,纸上谈兵么!非也,作概念图只是用来对比实际效果,看控制台能否做到那个程度,下面这个图便是实际控制台中实现的效果:
细心的读者会看到,控制台的面貌与以往的稍微不同:除了画面色彩丰富了,控制台的标题也变了,而这一切的变化,核心在于以下几个操作控制台的APIs:
有了这几个API基础,便能封装这些API,构造一个方便在控制台下绘图的类,为以后开发控制台小游戏作重要准备。受GDI+中的Graphics类的设计影响,我们也封装一个简单版本的Graphics类,用于绘制字符串、绘制矩形和填充矩形等基本功能,如要添加更多功能,就要读者自行添加了。
函数名 参数描述 函数描述 HANDLE GetStdHandle(DWORD nStdHandle) ;
nStdHandle的值类型:
STD_INPUT_HANDLE 标准输入的句柄
STD_OUTPUT_HANDLE 标准输出的句柄
STD_ERROR_HANDLE 标准错误的句柄返回标准的输入、输出或错误的设备的句柄,
也就是获得输入、输出/错误的屏幕缓冲区的句柄。SetConsoleCursorPosition(void*,COORD);
void* 控制台标准句柄
COORD 修改成员X与Y可以实现光标位置控制
API中定位光标位置的函数 SetConsoleTextAttribute(void*,unsigned short); void* 控制台标准句柄
short 字体颜色属性,具体值查看WINCON.HAPI设置字体颜色和背景色的函数 SetConsoleTitle(__in LPCTSTR lpConsoleTitle); lpConsoleTitle 控制台窗口的标题 设置控制台窗口的标题
欲知简单版Graphics如何,且看下回分解。