C++ 实现命令行画心形代码,有多个爱心代码,简单可调数据和字符,可装X,也可用于浪漫的表白,可实现跳动、保存等功能

这篇具有很好参考价值的文章主要介绍了C++ 实现命令行画心形代码,有多个爱心代码,简单可调数据和字符,可装X,也可用于浪漫的表白,可实现跳动、保存等功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

绘制一个简易爱心

#include <stdio.h>
#include <Windows.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 z = x * x + y * y - 1;
            float f = z * z * z - x * x * y * y * y;
            putchar(f <= 0.0f ? ".:-=+*#%@"[(int)(f * -8.0f)] : ' ');
        }
 
        putchar('\n');
    }
 
    system("pause");
    return 0;
}

c++爱心代码,C++,牛逼程序,小窍门,c++,开发语言,算法,小程序,青少年编程
绘制一个精致爱心

#include <stdio.h>
#include <Windows.h>
#include <math.h>
 
float f(float x, float y, float z)
{
    float a = x * x + 9.0f / 4.0f * y * y + z * z - 1;
 
    return a * a * a - x * x * z * z * z - 9.0f / 80.0f * y * y * z * z * z;
}
 
float h(float x, float z)
{
    for (float y = 1.0f; y >= 0.0f; y -= 0.001f)
    if (f(x, y, z) <= 0.0f)
        return y;
 
    return 0.0f;
}
 
int main()
{
    for (float z = 1.5f; z > -1.5f; z -= 0.05f)
    {
        for (float x = -1.5f; x < 1.5f; x += 0.025f)
        {
            float v = f(x, 0.0f, z);
            if (v <= 0.0f)
            {
                float y0 = h(x, z);
                float ny = 0.01f;
                float nx = h(x + ny, z) - y0;
                float nz = h(x, z + ny) - y0;
                float nd = 1.0f / sqrtf(nx * nx + ny * ny + nz * nz);
                float d = (nx + ny - nz) * nd * 0.5f + 0.5f;
                putchar(".:-=+*#%@"[(int)(d * 5.0f)]);
            }
            else
                putchar(' ');
        }
        putchar('\n');
    }
 
    system("pause");
    return 0;
}

c++爱心代码,C++,牛逼程序,小窍门,c++,开发语言,算法,小程序,青少年编程
另一个好的版本

#include<bits/stdc++.h>
#include<windows.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
using namespace std;
double q,w,e,r,t,u,o,p,s,d,f,g,h,j,l,z,c,v,b,n,m,i;
double k,x,y;
long long a[1000][1000];
int main (int argc,char argv[])
{
	Sleep(1000);
	HWND hwnd=NULL;
	RECT rect;
	hwnd=GetForegroundWindow();
	GetClientRect(hwnd,&rect);
	if(hwnd!=NULL)
	{
		MoveWindow(hwnd,0,0,0,0,true);Sleep(20); 
	}
	system("mode con cols=300 lines=150");
	system("color f4");
    for(i=40;i>=-32;i--)
    {
    	for(j=-40;j<=40;j++)
  		{
		  	y=i/30;
		  	x=j/30;
		  	if(pow(x*x+y*y-1,3)-x*x*y*y*y<=0)
		  	{
		  		cout<<"██";
			}
		  	else cout<<"  ";
  		}
  		cout<<endl;
    }
	return 0;
}

一个最花里胡哨的

#include<bits/stdc++.h>
#include<windows.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
using namespace std;
double q,w,e,r,t,u,o,p,s,d,f,g,h,j,l,z,c,v,b,n,m,i;
double k,x,y;
long long a[1000][1000];
int main()
{
	system("mode con cols=100 lines=50");
	system("color f4");
    for(i=20;i>=-16;i--)
    {
    	for(j=-20;j<=20;j++)
  		{
		  	y=i/15;
		  	x=j/15;
		  	if(pow(x*x+y*y-1,3)-x*x*y*y*y<=0)
		  	{
		  		cout<<"██";
			}
		  	else cout<<"  ";
  		}
  		cout<<endl;
    }
    Sleep(5000);
    system("cls");
    for(i=20;i>=-20;i--)
    {
    	for(j=-20;j<=20;j++)
  		{
		  	y=i/15;
		  	x=j/15;
		  	if(pow(x*x+y*y-1,3)-x*x*y*y*y<=0)
		  	{
		  		cout<<"爱";
			}
		  	else cout<<"  ";
  		}
  		cout<<endl;
    }
    Sleep(5000); 
    system("cls");
    for(i=20;i>=-20;i--)
    {
    	for(j=-20;j<=20;j++)
  		{
		  	y=i/15;
		  	x=j/15;
		  	if(pow(x*x+y*y-1,3)-x*x*y*y*y<=-0.8)
		  		cout<<"康";
		  	else if(pow(x*x+y*y-1,3)-x*x*y*y*y<=-0.6)
		  		cout<<"喜";
		  	else if(pow(x*x+y*y-1,3)-x*x*y*y*y<=-0.48)
		  		cout<<"吉";
		  	else if(pow(x*x+y*y-1,3)-x*x*y*y*y<=-0.32)
		  		cout<<"寿";
		  	else if(pow(x*x+y*y-1,3)-x*x*y*y*y<=-0.18)
		  		cout<<"顺";
		  	else if(pow(x*x+y*y-1,3)-x*x*y*y*y<=-0.1)
		  		cout<<"安";
		  	else if(pow(x*x+y*y-1,3)-x*x*y*y*y<=-0.06)
		  		cout<<"乐";
		  	else if(pow(x*x+y*y-1,3)-x*x*y*y*y<=-0.03)
		  		cout<<"贵";
			else if(pow(x*x+y*y-1,3)-x*x*y*y*y<=0)
		  		cout<<"福";
		  	else cout<<"  ";
  		}
  		cout<<endl;
    }
    return 0;
}


绘制红心并保存到文件

#include <stdio.h>
#include <Windows.h>
#include <math.h>
 
float f(float x, float y, float z)
{
    float a = x * x + 9.0f / 4.0f * y * y + z * z - 1;
 
    return a * a * a - x * x * z * z * z - 9.0f / 80.0f * y * y * z * z * z;
}
 
float h(float x, float z)
{
    for (float y = 1.0f; y >= 0.0f; y -= 0.001f)
    if (f(x, y, z) <= 0.0f)
        return y;
    return 0.0f;
}
 
int main()
{
    FILE* fp = fopen("heart.ppm", "w");
    int sw = 512, sh = 512;
    fprintf(fp, "P3\n%d %d\n255\n", sw, sh);
 
    for (int sy = 0; sy < sh; sy++)
    {
        float z = 1.5f - sy * 3.0f / sh;
        for (int sx = 0; sx < sw; sx++)
        {
            float x = sx * 3.0f / sw - 1.5f;
            float v = f(x, 0.0f, z);
            int r = 0;
            if (v <= 0.0f)
            {
                float y0 = h(x, z);
                float ny = 0.001f;
                float nx = h(x + ny, z) - y0;
                float nz = h(x, z + ny) - y0;
                float nd = 1.0f / sqrtf(nx * nx + ny * ny + nz * nz);
                float d = (nx + ny - nz) / sqrtf(3) * nd * 0.5f + 0.5f;
                r = (int)(d * 255.0f);
            }
 
            fprintf(fp, "%d 0 0 ", r);
        }
 
        fputc('\n', fp);
    }
    fclose(fp);
    system("pause");
}

绘制跳动的心脏:注此版本只能在Windows系统下编译运行。

#include <stdio.h>
#include <math.h>
#include <windows.h>
#include <tchar.h>
 
float f(float x, float y, float z)
{
    float a = x * x + 9.0f / 4.0f * y * y + z * z - 1;
 
    return a * a * a - x * x * z * z * z - 9.0f / 80.0f * y * y * z * z * z;
}
 
float h(float x, float z)
{
    for (float y = 1.0f; y >= 0.0f; y -= 0.001f)
    if (f(x, y, z) <= 0.0f)
        return y;
    return 0.0f;
}
 
int main()
{
    HANDLE o = GetStdHandle(STD_OUTPUT_HANDLE);
    _TCHAR buffer[25][80] = { _T(' ') };
    _TCHAR ramp[] = _T(".:-=+*#%@");
 
    for (float t = 0.0f;; t += 0.1f)
    {
        int sy = 0;
        float s = sinf(t);
        float a = s * s * s * s * 0.2f;
        for (float z = 1.3f; z > -1.2f; z -= 0.1f)
        {
            _TCHAR* p = &buffer[sy++][0];
            float tz = z * (1.2f - a);
            for (float x = -1.5f; x < 1.5f; x += 0.05f)
            {
                float tx = x * (1.2f + a);
                float v = f(tx, 0.0f, tz);
                if (v <= 0.0f)
                {
                    float y0 = h(tx, tz);
                    float ny = 0.01f;
                    float nx = h(tx + ny, tz) - y0;
                    float nz = h(tx, tz + ny) - y0;
                    float nd = 1.0f / sqrtf(nx * nx + ny * ny + nz * nz);
                    float d = (nx + ny - nz) * nd * 0.5f + 0.5f;
                    *p++ = ramp[(int)(d * 5.0f)];
                }
                else
                    *p++ = ' ';
            }
        }
 
 
        for (sy = 0; sy < 25; sy++)
        {
            COORD coord = { 0, sy };
            SetConsoleCursorPosition(o, coord);
            WriteConsole(o, buffer[sy], 79, NULL, 0);
        }
        Sleep(33);
    }
}

c++爱心代码,C++,牛逼程序,小窍门,c++,开发语言,算法,小程序,青少年编程

升级版

    include <stdio.h>
    include <math.h>
    include <windows.h>
    include <tchar.h>

    float f(float x, float y, float z) {
        float a = x * x + 9.0f / 4.0f * y * y + z * z - 1;
        return a * a * a - x * x * z * z * z - 9.0f / 80.0f * y * y * z * z * z;
    }

    float h(float x, float z) {
        for (float y = 1.0f; y >= 0.0f; y -= 0.001f)
            if (f(x, y, z) <= 0.0f)
                return y;
        return 0.0f;
    }

    int main() {
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0x0C);
        HANDLE o = GetStdHandle(STD_OUTPUT_HANDLE);
        _TCHAR buffer[25][80] = { _T(' ') };
        _TCHAR ramp[] = _T(".:-=+*#%@");
        int count= 0;
        int count1=0;
        //system("color F4");
        for (float t = 0.0f;; t += 0.1f) {
            int sy = 0;
            float s = sinf(t);
            float a = s * s * s * s * 0.2f;

            for (float z = 1.3f; z > -1.2f; z -= 0.1f) {
                _TCHAR* p = &buffer[sy++][0];
                float tz = z * (1.2f - a);
                for (float x = -1.5f; x < 1.5f; x += 0.05f) {
                    float tx = x * (1.2f + a);
                    float v = f(tx, 0.0f, tz);
                    if (v <= 0.0f) {
                        float y0 = h(tx, tz);
                        float ny = 0.01f;
                        float nx = h(tx + ny, tz) - y0;
                        float nz = h(tx, tz + ny) - y0;
                        float nd = 1.0f / sqrtf(nx * nx + ny * ny + nz * nz);
                        float d = (nx + ny - nz) * nd * 0.5f + 0.5f;
                        *p++ = ramp[(int)(d * 5.0f)];
                    }
                    else
                        *p++ = ' ';
                }
            }

            for (sy = 0; sy < 25; sy++) {
                COORD coord = { 0, sy };
                SetConsoleCursorPosition(o, coord);
                WriteConsole(o, buffer[sy], 79, NULL, 0);
            }
            if(count <= 10){
                printf("I Love You ———.Mua~\n") ;//表白内容 
                printf("            By 编程爱我");// 表白者的名字 
                count++;
            } else{
                printf("You Are My Best Lover.\n");
                printf("            Stephen Ge");
                count++;
                if(count>=20){
                    count =0;
                }
            }
            Sleep(33);
        }
        }

其他做法html

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
    <canvas width="400" height="400"></canvas>

    <script>
        var canvas = document.querySelector('canvas');
        var context = canvas.getContext('2d');  
        context.lineWidth = 3;
        // 将画布的原点(0,0),移动到(200,200)
        // 移动原点是为了能让整个心形显示出来
        context.translate(200,200); 

        // t 代表弧度
        var t=0;
        // maxt 代表 t 的最大值
        var maxt = 2*Math.PI;
        // vt 代表 t 的增量
        var vt = 0.01;
        // 需要循环的次数
        var maxi = Math.ceil(maxt/vt);
        // 保存所有点的坐标的数组
        var pointArr=[];
        // x 用来暂时保存每次循环得到的 x 坐标
        var x=0;
        // y 用来暂时保存每次循环得到的 y 坐标
        var y=0;

        // 根据方程得到所有点的坐标
        for(var i=0;i<=maxi;i++){
            // x=a*(2*sin(t)+sin(2*t))
            x=50*(2*Math.sin(t)+Math.sin(2*t));

            // y=a*(2*cos(t)+cos(2*t))
            y=50*(2*Math.cos(t)+Math.cos(2*t));
            t+=vt;
            pointArr.push([x,y]); 
        }

        // 根据点的坐标,画出心形线
		context.moveTo(pointArr[0][0],pointArr[0][1]);
        draw();
        function draw(){
            context.fillStyle='#c00';
            // 把每个点连接起来
            for(var i=1;i<pointArr.length;i++){
                x = pointArr[i][0];
                y = pointArr[i][1];
                context.lineTo(x,y);
            }
            context.fill();
        }
    </script>
 </body>
</html>

c++爱心代码,C++,牛逼程序,小窍门,c++,开发语言,算法,小程序,青少年编程

<!doctype html>
<html lang="en">

<head>
  <meta charset="UTF-8">
</head>

<body>
  <canvas width="400" height="400"></canvas>

  <script>
    var canvas = document.querySelector('canvas');
    var context = canvas.getContext('2d');
    // 将画布的原点(0,0),移动到(200,100)
    // 移动原点是为了能让整个心形显示出来
    context.translate(200, 100);

	// 画心形
	draw();
    function draw() {
      // 画圆弧时,圆的半径
      var r = 0;
	  //  start 代表画弧线时的 起始角
      var start = 0;
	  //  end 代表画弧线时的 结束角
      var end = 0;
	  //  一个常数,用来控制心形的大小
      var a = 100;

      context.fillStyle = '#e21f27';
	  //连续的画圆弧
      for (var q = 0; q < 500; q++) {
        start += Math.PI * 2 / 500;
		// 当 结束角 是 Math.PI * 2 时也就是已经画了一圈了,心形就出来了
        end = start + Math.PI * 2 / 500;
		// 根据极坐标方程 r=a(1+sinθ),得到 r(半径)
        r = a * (1 + Math.sin(start)); 
		// 画弧线
        context.arc(0, 0, r, start, end, false);
      }
      context.fill();
    }
  </script>
</body>
</html>

c++爱心代码,C++,牛逼程序,小窍门,c++,开发语言,算法,小程序,青少年编程

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
    <canvas width="400" height="400"></canvas>

	<script>
		var canvas = document.querySelector('canvas');
		var context = canvas.getContext('2d');  
		context.lineWidth = 3;
		// 将画布的原点(0,0),移动到(200,200)
		// 移动原点是为了能让整个心形显示出来
		context.translate(200,200); 

		// t 代表弧度
		var t=0;
		// vt 代表 t 的增量
		var vt = 0.01;
		// maxt 代表 t 的最大值
		var maxt = 2*Math.PI;
		// 需要循环的次数
		var maxi = Math.ceil(maxt/vt);
		// 保存所有点的坐标的数组
		var pointArr=[];
		// 控制心形大小
		var size = 10;
		// x 用来暂时保存每次循环得到的 x 坐标
		var x=0;
		// y 用来暂时保存每次循环得到的 y 坐标
		var y=0;

		// 根据方程得到所有点的坐标
		for(var i=0;i<=maxi;i++){
			// x=16 * (sin(t)) ^ 3;
			var x = 16 * Math.pow(Math.sin(t),3);
			// y=13 * cos(t) - 5 * cos(2 * t) - 2 * cos(3 * t) - cos(4 * t)
			var y = 13 * Math.cos(t) - 5 * Math.cos(2 * t) -2 * Math.cos(3 * t)- Math.cos(4 * t);
			t+=vt;
			pointArr.push([x*size,-y*size]); 
		}

		// 根据点的坐标,画出心形线
		context.moveTo(pointArr[0][0],pointArr[0][1]);
		draw();
		function draw(){
			context.fillStyle='#c00';
			// 把每个点连接起来
			for(var i=1;i<pointArr.length;i++){
				x = pointArr[i][0];
				y = pointArr[i][1];
				context.lineTo(x,y);
			}
			context.fill();
		}
	</script>
 </body>
</html>

c++爱心代码,C++,牛逼程序,小窍门,c++,开发语言,算法,小程序,青少年编程

也许我们还可以再做点什么,比如加点动画,看看下面这个吧。

点这里下载源码,里面已经加了很详细的注释了。文章来源地址https://www.toymoban.com/news/detail-716231.html

到了这里,关于C++ 实现命令行画心形代码,有多个爱心代码,简单可调数据和字符,可装X,也可用于浪漫的表白,可实现跳动、保存等功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 爱心代码html或c++调用opengl库两种实现(二维三维动态也可键盘交互)

    最近打火机与公主裙电视剧追疯了!!!谁还没有李峋爱心代码!!快来领!!沉浸式追剧大学生今天午觉没睡怒干爱心代码现有三分资源如下: 效果: 1)、公主两个for循环二维C++控制台输出爱心; 2)、原创C++语言利用openGL库实现三维动态旋转粉色爱心; 以上两者可以在

    2024年02月13日
    浏览(39)
  • python动态爱心代码完整版,python动态爱心代码简单

    大家好,本文将围绕python动态爱心代码红颜不简展开说明,python动态爱心代码怎么运行是一个很多人都想弄明白的事情,想搞清楚python动态爱心代码完整版需要先了解以下几个事情。 python动态心形代码操作方法如下: 1、新建文件python编辑器中,点隐棚击“File—NewFile”,新

    2024年02月08日
    浏览(30)
  • 【爱心上面可以加字】Python爱心代码,简单又好看

    目录 前言 一、爱心代码展示  二、完整代码 最近都快要被动态爱心刷屏了,今天跟大家带来不一样的爱心代码,可以在爱心中央写下你想要的字! 可以用Python来实现它,会Python的朋友们赶快收藏起来。 一、爱心代码展示   代码运行之后就是这样的啦,简直是表白,道歉神

    2024年02月07日
    浏览(31)
  • C语言简单的爱心代码

                     前两天看到网上有很多人在找 爱心代码 ,小编立刻就坐不了,就用C语言简单的写了一个,希望对大家能有帮助。 #includestdio.h #includeWindows.h int main() {     for(int i=0;i2;i++)     {         float x,y,a;      for(y=1.5; y-1.5; y-=0.1)      {           for(x=-1.5;

    2024年02月07日
    浏览(33)
  • c++爱心代码

    c爱心代码是一个使用c语言编写的程序,其输出一个爱心形状。这通常是一个用来表示爱意或友谊的符号。爱心代码的具体实现方式可能会有所不同,但通常都是使用字符或符号的组合来构建爱心的形状。例如,下面是一个使用c语言编写的爱心代码的示例: #include stdio.h int

    2024年02月16日
    浏览(34)
  • Python+OpenCV 简单实现人脸检测多个和人脸识别 2(附代码)

    如果dilb和face_recognition第三方包安装失败,请移步到Python 解决dilb和face_recognition第三方包安装失败_水w的博客-CSDN博客 上篇请移步到Python+dilb 简单实现人脸检测(附代码)_水w的博客-CSDN博客 本篇是在上篇的工作基础上进行的。 目录 6 人脸检测多个 7 视频检测 8 拍照保存 9 训练

    2024年01月16日
    浏览(39)
  • C++番外篇之动态爱心代码

    前言:今天我们给大家介绍一个有趣的代码,那就是爱心代码,前提是这段代码要先下载一个东西,就是有关C++头文件的,这段代码各位看看就好,当个乐子,因为涉及的代码知识很多。如果大家有兴趣研究的,可以把整段代码看一看。 下面直接先展现代码了: 这里是运行

    2024年02月05日
    浏览(28)
  • 爱心代码——c++(借鉴b站up主)

    如果打开不了 graphics,可能缺少EasyX文件,找官网下一个即可,如果还有更简洁的方式请留言

    2024年02月05日
    浏览(26)
  • C语言、c++史上最全最全爱心代码大全,彩色闪动、字符填充,附源码

    直接上代码: 直接上代码 直接上代码 直接上代码

    2024年02月04日
    浏览(29)
  • Java代码实现“爱心”表白

    最近看到个好玩的,就是用代码实现爱心的形状,对于不懂编程的人来说,这是一个很好的玩的东西。男生可以在女朋友那里秀一波哈哈哈哈哈。 接下来提供两个爱心代码: 代码实现: 运行结果: 代码实现: 运行结果:

    2024年02月13日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包