目录
1.前言
我们经常会看见广告词从两边向中间慢慢显示,那么利用代码是否也能做出这样的效果呢??
今天,我们就来探讨一下怎么用代码来完成这一显示方式。
2.效果展示
这里我用一句歌词的显示来示范
双向显示字符效果
3.代码讲解
3.1 阶段一
根据效果展示,很多人可能会觉得:害,这还不简单,直接全部上printf逐个打印不就好了?
哈哈,当然是可以的,但是这样就无法做出动态的感觉。
最合适的办法就是利用两组数组,并且循环替换数组的元素,最后打印出数组。循环此动作,便是双向显示字符的精髓所在。那具体如何操作呢?
#include <stdio.h>
//示例材料
//And I'm not gonna lose you now
//******************************
int main()
{
//建立两个数组
char arr1[] = "And I'm not gonna lose you now";
char arr2[] = "******************************";
//建立左,右两个变量作为下标
int right = strlen(arr2)-1;
int left = 0;
//循环打印部分
while (left <= right||left == right + 1)
{
//打印数组2
int i = 0;
for (i = 0; i <= strlen(arr2) - 1; i++)
{
printf("%c", arr2[i]);
}
printf("\n");
//替换数组元素
arr2[left] = arr1[left];
arr2[right] = arr1[right];
left++;
right--;
}
}
像这样,我们已经可以做到这样的效果
3.2 延迟效果
那测试过上述代码的小伙伴肯定会发现:你这个代码他刷刷刷就打印完了,也没有动态的效果呀
是的,这依靠这些代码,是不能感受出缓慢变化这一过程的,因为打印的速度太快了。
那么我们该怎么办呢?
这时候我们就该介绍一下头文件:windows.h 里面的Sleep()了
#include <windows.h>
Sleep()
Sleep函数的作用是延迟执行当前脚本若干秒。括号内填写数字,即是延迟的时间,单位是毫秒。
#include <stdio.h>
#include <windows.h>
//示例材料
//And I'm not gonna lose you now
//******************************
int main()
{
//建立两个数组
char arr1[] = "And I'm not gonna lose you now";
char arr2[] = "******************************";
//建立左,右两个变量作为下标
int right = strlen(arr2)-1;
int left = 0;
//循环打印部分
while (left <= right||left == right + 1)
{
//打印数组2
int i = 0;
for (i = 0; i <= strlen(arr2) - 1; i++)
{
printf("%c", arr2[i]);
}
//延迟执行
Sleep(200);
printf("\n");
//替换数组元素
arr2[left] = arr1[left];
arr2[right] = arr1[right];
left++;
right--;
}
}
如此,便有了缓慢变化的感觉。
但是又有人说了:你这个代码打印了这么多行,跟你视频的示例完全不一样啊。
对的,我们每次打印都会在控制台留下一串痕迹,如果电脑能以超快的速度清空痕迹并打印出新的内容,就像几千张图片衔接成一段视频那样,是否就能产生示例视频中的视觉效果呢?答案是正确的,那么该怎么实现这灵魂的一步呢?
3.2 视觉效果实现
这里便要介绍头文件stdlib.h中的system(“cls”)了。
system();是执行系统的函数。
windows操作系统中cls是系统的控制台清屏函数。
利用清屏,我们就能展现上述中的视觉效果了!!!
#include <stdio.h>
#include <windows.h>
#include <windows.h>
//示例材料
//And I'm not gonna lose you now
//******************************
int main()
{
//建立两个数组
char arr1[] = "And I'm not gonna lose you now";
char arr2[] = "******************************";
//建立左,右两个变量作为下标
int right = strlen(arr2)-1;
int left = 0;
//循环打印部分
while (left <= right||left == right + 1)
{
//打印数组2
int i = 0;
//清屏
system("cls");
for (i = 0; i <= strlen(arr2) - 1; i++)
{
printf("%c", arr2[i]);
}
Sleep(200);
printf("\n");
//替换数组元素
arr2[left] = arr1[left];
arr2[right] = arr1[right];
left++;
right--;
}
}
4.结语
以上便是我们双向字符显示的全部内容啦,是不是很有趣呢?熟悉众多的函数以及操作符可以让我们用代码实现非常多的功能,甚至可以做出一个短视频。博主会与大家共同努力,一起进步的。
最后还是期待大家的点赞与关注啦,小白系列会持续更新的!!