飞道的博客

c语言制作一个表白神器(可自行添加背景文字~)

321人阅读  评论(0)

“使用C语言画心形并拓展”

源码链接:公众号内回复qita0004获取

windows可执行软件链接:公众号内回复qita0005获取

Dev-Cpp编译软件链接:公众号内回复qita0006获取

1、实现效果视频链接

                                   视频链接

2、效果图:

不添加背景文字

 

添加背景文字

 

改变背景颜色

3、源码


  
  1. #include <stdio.h>
  2. #include <iostream>
  3. #include <windows.h>
  4. #include <string.h>
  5. /*
  6. 对应的颜色码表:
  7. 0 = 黑色 8 = 灰色
  8. 1 = 蓝色 9 = 淡蓝色
  9. 2 = 绿色 10 = 淡绿色
  10. 3 = 浅绿色 11 = 淡浅绿色
  11. 4 = 红色 12 = 淡红色
  12. 5 = 紫色 13 = 淡紫色
  13. 6 = 黄色 14 = 淡黄色
  14. 7 = 白色 15 = 亮白色
  15. */
  16. using namespace std;
  17. void goto_xy(int x,int y); //跳转光标所在行
  18. void HideCursor(); //隐藏光标
  19. int main() {
  20. /********************************************设置字体***********************************/
  21. //现在仅支持纯英文或者纯中文字符
  22. //cText为纯英文时 nSkipNum=1
  23. //cText为纯中文时 nSkipNum=2
  24. int nSkipNum = 2; //跳转字符数,中文为两个字节
  25. char cText[ 31] = "节日快乐!"; //超过15个中文字符(包括中文标点),将31改大
  26. /****************************************END*********************************************/
  27. /************************************设置背景色和字体颜色********************************/
  28. //此处设置背景色和字体是闪动还是不闪动
  29. //添加背景字: isText = true
  30. //添加背景字: isText = false
  31. //闪动时 isSimple = false
  32. //不闪时 isSimple = true,并设置背景和字体颜色,具体颜色参照最上方的颜色对照
  33. bool isText = true;
  34. bool isSimple = true;
  35. int bkgColorSimple = 14;
  36. int textColorSimple = 12;
  37. /****************************************END*********************************************/
  38. char bkgTextColor[ 16];
  39. int nSkip = 0;
  40. while( 1)
  41. {
  42. for( int i= 0;i< 16;i++) //循环背景跳色
  43. {
  44. goto_xy( 0, 0); //每次开始再cmd的0,0位置
  45. HideCursor(); //隐藏光标
  46. if(!isSimple) sprintf(bkgTextColor, "color %x%x",i, 16-i); //将颜色传给变量
  47. else sprintf(bkgTextColor, "color %x%x",bkgColorSimple,textColorSimple);
  48. system(bkgTextColor); //执行指令
  49. for ( float y = 1.5; y > -1.5; y -= 0.1) //画心并添加背景文字
  50. {
  51. for ( float x = -1.5; x < 1.5; x += 0.04)
  52. {
  53. float z = x * x + y * y - 1;
  54. if(z * z * z - x * x * y * y * y <= 0.0)
  55. {
  56. printf( "*");
  57. }
  58. else
  59. {
  60. nSkip++;
  61. if(isText)
  62. {
  63. if(nSkip%nSkipNum==nSkipNum -1) //添加背景字
  64. {
  65. int i = nSkip - 1;
  66. if(nSkipNum == 2) cout<<cText[i]<<cText[i+ 1];
  67. else cout<<cText[i];
  68. if(cText[i+nSkipNum]== '\0')nSkip = -1;
  69. }
  70. else
  71. {
  72. printf( "");
  73. }
  74. }
  75. else printf( " ");
  76. }
  77. }
  78. putchar( '\n');
  79. }
  80. }
  81. }
  82. }
  83. void goto_xy(int x,int y)
  84. {
  85. HANDLE hOut;
  86. hOut = GetStdHandle(STD_OUTPUT_HANDLE);
  87. COORD pos = {x,y};
  88. SetConsoleCursorPosition(hOut,pos);
  89. }
  90. void HideCursor()
  91. {
  92. CONSOLE_CURSOR_INFO cursor;
  93. cursor.bVisible = FALSE;
  94. cursor.dwSize = sizeof(cursor);
  95. HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
  96. SetConsoleCursorInfo(handle, &cursor);
  97. }


转载:https://blog.csdn.net/Groot_Lee/article/details/104449478
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场