c语言 sleep_C语言学习日记(10)——给心形加点闪动效果

昨天输出爱心已经成功了,但是感觉只是白色有点单调啊。要是能加点动态效果,应该更好一点吧。今天,小猫想改变一下输出的爱心的颜色,让它闪动起来。

怎么改变控制台输出的字符颜色呢?可以用这个函数system("color XX"),这个函数在stdlib.h文件中。它可以改变整个控制台的背景颜色和前景颜色。其中的参数是一条字符串"color XX",中间有个空格。XX是两个16进制数,分别代表背景颜色和前景颜色,所以总的颜色有16种。小猫记得0代表黑色,1代表蓝色,等等。这样"color 01"就代表输出背景为黑色,字符为蓝色。如果背景为黑色,第一个0可以不写,因为背景默认为黑色。小猫决定就背景保持黑色,每隔一段时间就将字符颜色改变一次,不就实现闪动效果了吗?

怎样使用较少的语句来实现在多种颜色间切换呢?总不至于每种颜色写条语句吧。小猫注意到改变颜色的代码都是system("color x")的形式,只要改变参数字符串里面的X就可以了。想到这里,小猫马上想到另一个函数sprintf(),它可以向一个字符串中进行格式化输出,就像向屏幕输出一样。例如:

char str[20];sprintf(str,"hello,world!");  //向str中输出hello,world!printf("%s",str)  //会输出hello,world!

sprintf()函数在stdio.h中。

另外,小猫想,让16种颜色随机变化更好一点。所以想到了rand()函数,这个函数同样在stdlib.h中。它可以输出一个随机值。这个随机值在0~RAND_MAX之间变化,通过查看stdlib.h文件,发现这样一行:

#define RAND_MAX 0x7fff  

说明rand()函数输出的随机值在0~32767之间。将rand()函数的输出值对16求余,就可以得到0~15范围内的随机值了。

还需要一个延迟时间的函数,unistd.h文件里面有一个sleep()函数,参数是延迟的秒数。万事俱备,最后的代码:

#include #include #include #include int main(){for (float y = 1.5f; y > -1.5f; y -= 0.1f) {for (float x = -1.5f; x < 1.5f; x += 0.05f) {float a = x * x + y * y - 1;putchar(a * a * a - x * x * y * y * y <= 0.0f ? '*' : ' ');}putchar('');}for(;!kbhit();)    //kbhit()位于conio.h中,检测是否有键按下{char str[10];sprintf(str,"color %x",rand() % 16); //形成一条color X的字符串,注意要用%xsystem(str);sleep(0.5);}    return 0;}

看看效果:

82232e0490ead5116fdac836b5d1d622.gif

闪动的心

效果还不错。开心。

af2875fac9389c43e285938b44858522.png

C语言学习日记

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值