C语言--跳动的心

用c语言实现跳动的心脏,给平时枯燥的编程学习生活加点乐趣,简单易学,可以仿照着敲出来也,可以拿来表白的喔。

该代码包含声音播放文件,需要如下操作:

1.需要下载wav格式的声音文件,(推荐在QQ音乐下载后,再利用QQ音乐的音频转码功能把音频转换成wav格式)

2.并与代码放在同一个文件夹里

3.把音频的文件名复制粘贴在(PlaySound函数里的引号内)

4.在编程软件的工具-->编译选项-->在连接器命令行加入如下命令窗口添加:

-static-libgcc -lwinmm

完成上述步骤后以下代码便可以运行

#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() 
{
    PlaySound("heart", NULL, SND_FILENAME | SND_ASYNC | SND_LOOP);
//该函数引号内的便是插入的音频文件名,可更改。
    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);
        }
		system("color 0c");
        Sleep(0);   
    }
    
}

  • 18
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 22
    评论
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枳实、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值