跳至正文
View Categories

< 1 min read

主要内容 #

1. 动画是怎么实现的 #

我们看到的视频/动画,其实是由一张张图像组成的。
当人看到两张相似的图像快速滑动时,会觉得图片没有动,而是图片上的人物动作发生了改变。这被称为“视觉暂留”。

基于这样的原理,我们就可以用C++来实现一个简单的“字符动画”。

只要按照这样的逻辑设计程序,应该就可以了吧。

不过,我们还没不知道怎么

  • 清除屏幕
  • 延时
  • 2. 清除屏幕 #

    这里需要使用一些系统函数,请看代码。

    #include < iostream >
    #include < Windows.h >
    
    int main()
    {
        std::cout << "aaaaaaaaddfdfdfdfdfs4ds5f4s64dfs5df" << std::endl; 
        std::cout << "aaaaaaaaddfdfdfdfdfs4ds5f4s64dfs5df" << std::endl; 
        std::cout << "aaaaaaaaddfdfdfdfdfs4ds5f4s64dfs5df" << std::endl; 
        system(“cls”);//清除屏幕
        
        return 0;
    }

    屏幕上什么输出都没有,这就是system(“cls”)起了作用,将cout的内容全部清除了。

    3. 延时 #

    这里需要使用一些系统函数,请看代码。

    #include < iostream >
    #include < Windows.h >
    
    int main()
    {
        for(int i=0; i < 50; ++i)
        {
            std::cout << "aaaaaaaaddfdfdfdff" << std::endl; 
            Sleep(200);      // 延时 200 毫秒,也就是0.2秒 
            system("cls");
            Sleep(200);      // 延时 200 毫秒,也就是0.2秒 
        } 
        return 0;
    }

    屏幕上的输出开始闪烁,这就是Sleep()起了作用。

    4. 开始做 #

    请参考上述代码,显示下面的字符画,并循环闪烁 50 次。延时为 100 毫秒。

    /*
        请练习后,查看示例代码。
    
    
    
    
    
    */

    示例代码

    #include < iostream >
    #include < Windows.h >
    
    int main()
    {
        char str_H[] = {
            ' ','*',' ',' ',' ',' ','*',' ',  // 0
            ' ','*',' ',' ',' ',' ','*',' ',  // 1
            ' ','*',' ',' ',' ',' ','*',' ',  // 2
            ' ','*','*','*','*','*','*',' ',  // 3
            ' ','*',' ',' ',' ',' ','*',' ',  // 4
            ' ','*',' ',' ',' ',' ','*',' ',  // 5
            ' ','*',' ',' ',' ',' ','*',' ',  // 6
        };
        
        // 3. 循环显示 50次 
        for(int i=0; i < 50; i++)
        {
            // 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; 
            }
            Sleep(100); 
            
            // 2. 清除屏幕 
            system("cls");
            Sleep(100); 
        }
        
        return 0;
    }

    习题 #

    课后练习