跳至正文
View Categories

< 1 min read

主要内容 #

本次课中,我们将使用前面学习的知识,做一个趣味练习,那就是“绘画”。

什么是字符画 #

1. 字符画举例 #

可以看到这个字符画,其实是由很多不同的字符组成的一个图画。

而且,这些基本字符,都是 ACSII 中的。大家在课后也可以尝试设计一个字符画。

一个设计良好的字符画,可以做的非常精美。
比如,在GUI没有普及的早期,那时候的电脑游戏界面,是这样的。

2. 文字 #

在生活中,大家不知道有没有注意过,电脑上的文字,究竟是怎么显示的呢?


通过放大,大家注意到了,文字放大之后,出现了一块一块的方块。这个方块,被称为“像素”。

我们的屏幕,其实由很多的像素点组成的。所谓的像素点,大家可以理解成
每个位置的像素点,都可选择亮或者灭
而且,方块上的数值,表示的是这个“灯”的明亮程度。

这样才组成了我们看到的内容。

注意,这里衡量亮度的数值,它的变化范围是 0-255。你能说出它应该属于什么数据类型吗?

除了电脑上文字,我们生活中还经常看到这样的文字出现在广告牌上。

这样的文字,它的像素点就只有“亮和灭”两种状态。你能说出它应该属于什么数据类型吗?

3. 中文编码 #

大家记得,ASCII编码的字符一共只有128个,这是有历史原因的。

早期,电脑的使用者为英文母语者居多。所以在一开始,电脑只需要显示英文字母和数字等字符就能满足日常使用了。
英文字母和数字的字符数量有限,所以一个126个字符的 ASCII 就完全够用了。

随着时代的发展,非英语用户数量的增加,使得 ASCII 字符已经不够了。
所以,科学家们一起开了个会,每个国家在支持 ASCII 字符以外,又制定了符合各自国家文字的增补标准。

中国,精选了常用的 3000 个文字,先驱科学家们,制作了字模(也就是我们讲的字符画),
并且用两个 char 来表示一个中文字符

  • 注意!用两个 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;
    }

    习题 #

    课后练习