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

怎么改变控制台输出的字符颜色呢?可以用这个函数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的字符串,注意要用%xsystem(str);sleep(0.5);}return 0;
}

看看效果:

效果还不错。开心。

C语言学习日记(10)——给心形加点闪动效果相关推荐

  1. c语言代码表白_C语言学习日记(9)——用C语言写一个爱心吧

    总羡慕别人的勇气,喜欢一个人就大胆表白.玫瑰和蜡烛围成的美丽的心形,就像此时主角的内心,浪漫而又炽热,不管成功与否,都一样美好. 爱的符号 而像小猫这种不善于表达的人,平时除了埋头看书,看上去好像没有 ...

  2. 语言余一个负数_C语言学习日记(8)——整数溢出

    小时候喜欢玩电子计算器,觉得很神奇,想要算什么数,立刻就能算出来.当时看着计算器的液晶屏幕就想,如果算一个很大的数,超过了屏幕上面数字的位数,会怎么样呢?试了以后结果是INF,那就是无穷大了.虽然当时 ...

  3. const 指针_C语言学习日记(11)——const与指针

    对于一个普通指针typet *p.p有三个最基本的能力,第一就是可以通过p = &obj来指向一个type类型对象,并随意切换指向对象.第二就是通过value = *p来读取它指向的对象的值. ...

  4. c语言实训自我总结报告日记,C语言学习日记(1)-准备好工具

    小猫开始学习C语言啦,首先选个喜欢的工具吧.C语言开发工具真多啊,什么C-Free,Code Lite,Code::Blocks,DevC++,VisualStudio,CLion等,这些工具里面Vi ...

  5. C语言for语句简单打印心形。

    C语言简单for语句打印心形 #include<stdio.h> int main() {int i;int j;int k;int n;int m;printf("\n\n\n ...

  6. python绘制立体心形折纸图解_PS制作超漂亮的立体的心形折纸效果

    今天为大家分享PS制作超漂亮的立体的心形折纸效果方法,教程难度不是很大,制作出来的折纸效果非常漂亮,好了,一起来学习吧! 背景选择灰色的渐变底 如下 新建一个图层,可以使用其他的图案 或者 图形 但是 ...

  7. html怎么显示一个点赞的心形,jquery心形点赞关注效果的简单实现

    html代码 css代码 .heart { width: 100px; height: 100px; background: url("") no-repeat; backgrou ...

  8. C语言学习日记(9)——用C语言写一个爱心

    怎么输出心形呢?小猫想,在纸上先画一个心形,然后再写成代码,这应该是最简单的方案了.但是这样就是一行一行的写printf,感觉很没技术含量啊. 能不能用一个表达式,一次性输出呢?小猫又想,先找一个心形 ...

  9. 利用echarts实现心形图片排列效果

    内容简介 前几天看到一篇文章,利用echarts来实现气泡龙的效果,觉得可以从这个例子衍生出使用不同背景图来实现不同排版的效果:本文介绍利用该思路实现心形图片的排列效果. 实现过程         实 ...

最新文章

  1. 关于java同步包中ConcurrentLinkedQueue类的深入分析与理解
  2. Mybatis动态的添加删除列
  3. 在控制台中录入一个字符串 , 打印这个字符串中的字符以及出现的次数(Python)
  4. 单片机c语言pwm整流的程序,基于 单片机控制PWM整流电源的设计.doc
  5. SQLIntegrityConstraintViolationException: 异常解决
  6. RSA算法原理简介,非对称加密,公开密钥算法(易懂篇)
  7. 中国水稻种子行业市场供需与战略研究报告
  8. 编程语言性能实测,Go 比 Python 更胜一筹?
  9. 转-架构高性能网站秘笈(四)——反向代理缓存
  10. UVW 在C#中的代码实现
  11. 计算机相关论文摘要,计算机类论文摘要
  12. C#对.CSV格式的文件--逗号分隔值文件 的读写操作及上传ftp服务器操作方法总结
  13. Java面向对象学习练习———潜艇游戏(飞机游戏)
  14. 鼠标经过图片 图片放大缩小
  15. jq删除,清空子元素和恢复的方法
  16. python中nx_Siemens NX (UG)中对于Python第三方包(函数库)的设置方法
  17. 使用C++和Boost库写一个自己的脚本引擎
  18. console使用方法介绍
  19. 如何得到HP小型机的序列号
  20. POJ3322bloxorz

热门文章

  1. FIO测试在不同内核IO参数配置下性能变化情况实验数据记录
  2. 物联网平台开发 污染物在线监控(监测)系统数据传输标准(HJ 212-2017代替HJ/T 212-2005)
  3. 基于文本模式的主题模式识别
  4. 新版小说阅读器 ----追书神器收费
  5. 公益中国系列活动进社区之 “健康进社区”系列活动 暨“行动起来,向‘零’艾滋迈进”方案...
  6. 3.JFreeChart线型图
  7. 亿级数据的高并发通用搜索引擎架构设计(转-张宴)
  8. java动态分区分配_操作系统动态分区分配算法课程设计java版解析.doc
  9. RoBERTa:一种鲁棒地优化BERT预训练的方法
  10. linux sendto recvfrom 异常退出,linux c学习笔记----UDP基础客户/服务编程(sendto,recvfrom)...