admin管理员组文章数量:1794759
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!printf()函数在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 <stdio.h> #include <stdlib.h> #include <unistd.h> #include <conio.h> 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('\\n'); } for(;!kbhit();) //kbhit()位于conio.h中,检测是否有键按下 { char str[10]; sprintf(str,"color %x",rand() % 16); //形成一条color X的字符串,注意要用%x system(str); sleep(0.5); } return 0; }看看效果:
效果还不错。开心。
版权声明:本文标题:C语言学习日记(10)——给心形加点闪动效果 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686628296a88172.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论