主要内容 #
本次课中,我们将使用前面学习的知识,做一个趣味练习,那就是“绘画”。
什么是字符画 #
1. 字符画举例 #
可以看到这个字符画,其实是由很多不同的字符组成的一个图画。
而且,这些基本字符,都是 ACSII 中的。大家在课后也可以尝试设计一个字符画。
一个设计良好的字符画,可以做的非常精美。
比如,在GUI没有普及的早期,那时候的电脑游戏界面,是这样的。
2. 文字 #
在生活中,大家不知道有没有注意过,电脑上的文字,究竟是怎么显示的呢?
通过放大,大家注意到了,文字放大之后,出现了一块一块的方块。这个方块,被称为“像素”。
我们的屏幕,其实由很多的像素点组成的。所谓的像素点,大家可以理解成灯。
每个位置的像素点,都可选择亮或者灭。
而且,方块上的数值,表示的是这个“灯”的明亮程度。
这样才组成了我们看到的内容。
注意,这里衡量亮度的数值,它的变化范围是 0-255。你能说出它应该属于什么数据类型吗?
除了电脑上文字,我们生活中还经常看到这样的文字出现在广告牌上。
这样的文字,它的像素点就只有“亮和灭”两种状态。你能说出它应该属于什么数据类型吗?
3. 中文编码 #
大家记得,ASCII编码的字符一共只有128个,这是有历史原因的。
早期,电脑的使用者为英文母语者居多。所以在一开始,电脑只需要显示英文字母和数字等字符就能满足日常使用了。
英文字母和数字的字符数量有限,所以一个126个字符的 ASCII 就完全够用了。
随着时代的发展,非英语用户数量的增加,使得 ASCII 字符已经不够了。
所以,科学家们一起开了个会,每个国家在支持 ASCII 字符以外,又制定了符合各自国家文字的增补标准。
中国,精选了常用的 3000 个文字,先驱科学家们,制作了字模(也就是我们讲的字符画),
并且用两个 char 来表示一个中文字符。
这是很特殊的地方,大家要注意。
下面给出了一个中文的例子。
练一练 #
在动手练习之前,先看一下图像的显示方式,一般是一行一行绘制的。
看到这种显示模式,你应该马上想到,这应该使用一个循环的嵌套结构。
请试一试,显示出这样的一幅画。注意,空白部分应该是一个“空格”。
/* 请练习后,查看示例代码。 */
示例代码:
#include < iostream > int main() { char str_H[] = { ' ','*',' ',' ',' ',' ','*',' ',//0 ' ','*',' ',' ',' ',' ','*',' ',//1 ' ','*',' ',' ',' ',' ','*',' ',//2 ' ','*','*','*','*','*','*',' ',//3 ' ','*',' ',' ',' ',' ','*',' ',//4 ' ','*',' ',' ',' ',' ','*',' ',//5 ' ','*',' ',' ',' ',' ','*',' ',//6 }; // 1. 显示字符画 for(int y=0; y < 7; y++) { for(int x=0; x < 8; x++) std::cout << str_H[x + y*8]; std::cout << std::endl; } return 0; }
习题 #