动画效果探索—以hello Word 为例
相信很多人入门C语言的第一个程序都是输出Hello Word !吧,今天,我想把这个简单的输出来玩出点花样来。
话不多说,先看效果:
可以直接看到,在运行后,是逐个输出Hello Word! 的每个字母的,在输出完成之后,又可以逐个字母的消失,如果再加上一些自己的创意,可以实现很不错的效果。
话不多述,下面描述一下实现过程。
首先:要实现字母每间隔一段时间出现,这里可以直接使用库函数 Sleep(),要注意的是,我使用的是VS2015是需要首字母是大写的,但是在有些编译器中是不需要大写的,具体自己试验一下,并且需要头文件 windows.h,这个函数的作用:使计算机程序(进程,任务或线程)进入休眠,使其在一段时间内处于非活动状态。当函数设定的计时器到期,或者接收到信号、程序发生中断都会导致程序继续执行。
这样,就可以实现间隔一段时间的效果了,并且这里要补充的一点是,Sleep()函数括号里面的数字值,在Windows平台下是以毫秒为单位的,在Linux平台下是以秒为单位的,下面是实现代码
printf("\tH");
Sleep(500);
printf("e");
Sleep(500);
printf("l");
Sleep(500);
printf("l");
Sleep(500);
printf("o");
Sleep(500);
printf(" ");
Sleep(500);
printf("W");
Sleep(500);
printf("o");
Sleep(500);
printf("r");
Sleep(500);
printf("d");
Sleep(500);
printf("!");
Sleep(500);
这样就可以实现字母逐个间隔时间出现了,然后我们要实现字母再逐个消失,在C语言基础中,我们知道一些转义字符,其中“\b”表示退格键,就是将输出位置向左移动一位,如果在“\b”后面有其他字符,那么逐个字符就会在左移后的位置上输出,并且会覆盖掉左移后右边的字符,就比如在上面代码后面加上一句
printf("\b ");
实现的效果就是,光标在之前输出的“Hello Word!”的右边,现在光标左移一位,移动到“!”的左边了,然后输出“\b”后面的一个空格,将“!”覆盖了,就实现了删除一个字符的效果,那我们现在光标就在“Hello Word ”后面的一个空格的后面,我们下面就需要将光标向左移动两个位置,然后输出一个空格,来覆盖掉字符“d”,下面就同理了,最后,我们仍然要实现间隔一段时间,逐个删除,再继续使用Sleep()函数就可以了,下面是实现代码:
Sleep(500);
printf("\b ");
Sleep(500);
printf("\b\b ");
Sleep(500);
printf("\b\b ");
Sleep(500);
printf("\b\b ");
Sleep(500);
printf("\b\b ");
Sleep(500);
printf("\b\b ");
Sleep(500);
printf("\b\b ");
Sleep(500);
printf("\b\b ");
Sleep(500);
printf("\b\b ");
Sleep(500);
printf("\b\b ");
Sleep(500);
printf("\b\b ");
//Sleep(500);
//printf("\b\b "); //去除上面的制表符
在这里总共有11个字符(包括空格),所以就需要十一个这样的语句,当然也可以使用循环来实现,这样就可以实现更多更炫酷的效果了。
下面是程序实现的完整代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <windows.h>
void main()
{
printf("\tH");
Sleep(500);
printf("e");
Sleep(500);
printf("l");
Sleep(500);
printf("l");
Sleep(500);
printf("o");
Sleep(500);
printf(" ");
Sleep(500);
printf("W");
Sleep(500);
printf("o");
Sleep(500);
printf("r");
Sleep(500);
printf("d");
Sleep(500);
printf("!");
Sleep(500);
Sleep(500);
printf("\b ");
Sleep(500);
printf("\b\b ");
Sleep(500);
printf("\b\b ");
Sleep(500);
printf("\b\b ");
Sleep(500);
printf("\b\b ");
Sleep(500);
printf("\b\b ");
Sleep(500);
printf("\b\b ");
Sleep(500);
printf("\b\b ");
Sleep(500);
printf("\b\b ");
Sleep(500);
printf("\b\b ");
Sleep(500);
printf("\b\b ");
//Sleep(500);
//printf("\b\b "); //去除上面的制表符
printf("\n");
Sleep(500);
}
感谢观赏,一起提高,慢慢变强。