C#游戏编程:《控制台小游戏系列》之《四、游戏渲染模块》
渲染模块,也即是绘图模块,由以上相关类和结构组成。以下对每个组件进行描述分析:
■绘图类(CDRraw)
这个类负责渲染画面,提供了一系列的操作用于画面的绘制:
在指定位置绘制字符串在指定区域绘制字符串在指定位置绘制矩形在指定位置填充矩形指定绘制符号指定擦除画面背景色控制台画面的绘制是基于字符的输出,所以字符就是构成画面的元素,这里绘制画面所用到的元素是一个“符号”,一个符号就是2字节的字符串表示,CSymbol枚举了常用的符号,如:@@、##、※、☆、★、○、●、◇、◆、□、■、△、▲等。除此之外,你可以指定你所想要绘制的其他符号。由于控制台的限制,对于其他画面形状,比如直线和曲线之类的画面就难以实现了,这就是只提供矩形的形状的原因。■符号枚举(CSymbol)
提供了绘制的基本符号。
■矩形结构(CRect)
这个结构由位置和大小决定,表示工作区平面内的一个区域,常用于设定字符串的绘制区域,此区域内的字符串被视为有效,超过此范围的字符串将不被绘制。
■位置结构(CPoint)
这个结构由控制台列和行的位置决定,表示工作区平面内的一个点,常用于设定绘制的位置。
■尺寸结构(CSize)
这个结构由宽高大小决定,表示工作区某个区域的大小,常用于设定矩形的大小等。
■字符串处理类(CText)
考虑到中英文构成的字符串的情况,在绘制字符串的时候要考虑字符串的字节长度问题,这个类提供了字符串的截断和换行等字符串处理功能。
■矩阵结构(CMatrix)
这个结构表示由一个二维数组构成的矩阵,提供了矩阵基本的运算(加,减,乘)和矩阵的旋转(顺时针90度旋转 、180度旋转,270度旋转和逆时针90度旋转、180度旋转、270度旋转)功能。
特别要注意绘制字符串的两个不同方法,不指定字符串绘制范围的函数的绘制坐标X是按每字符设定的,而指定字符串绘制范围的函数绘制坐标X按每字设定(2字符),比如前者要在X=30处绘制,当转换成后者时X=30/2=15。五、结语 此章完成了绘图模块,可以完成基本的绘图操作,对于控制台类型的小游戏来说,这里提供的绘图操作已满足一定要求,然而绘图模块在设计、实现方面还很粗糙,需要以后逐步完善。在下一章中,我们将继续完善游戏框架类,让框架拥有操作绘图的能力。