分享一个C++表白代码

小编来分享一个C++表白代码,废话不多说,直接上源码

#include<iostream>
#include<conio.h>
#include<windows.h>
#include<time.h>
#include<stdio.h>
#include <math.h>
#include <tchar.h>

using namespace std;
#define stoptimeshort 100
#define stoptimelong 400
#define PI 3.1415926
#define wide 49
#define gao 24
#define high 6
void Color (int a) {
    if (a == 0 || a == 14 || a == 20) {
        SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
        FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
    } else if (a == 1 || a == 12) {
        SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
        FOREGROUND_INTENSITY|FOREGROUND_GREEN|FOREGROUND_BLUE);
    } else if (a == 2) {
        SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
        FOREGROUND_INTENSITY|FOREGROUND_GREEN);
    } else if (a == 3) {
        SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
        FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_BLUE);
    } else if (a == 4 || a == 11) {
        SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
        FOREGROUND_INTENSITY|FOREGROUND_RED);
    } else if (a == 5 || a == 13) {
        SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
        FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);
    } else if (a == 7) {
        SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
        FOREGROUND_GREEN|FOREGROUND_BLUE);
    } else if (a == 15) {
        SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
    } else if (a == 16) {
        SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
    } else if (a == 17) {
        SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_RED);
    } else if (a == 8) {
        SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
    } else if (a == 6) {
        SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
        FOREGROUND_INTENSITY|FOREGROUND_BLUE);
    } else if (a == 9) {
        SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
        FOREGROUND_INTENSITY|FOREGROUND_RED|BACKGROUND_RED|BACKGROUND_GREEN);
    }
}
/*jumping heart*/
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;
    }

    void heart_jumping(void) {
        system("cls");
        system("Color 04");
        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){
                
                count++;
            } else{
                
                count++;
                if(count>=20){
                    count =0;
                }
            }
            Sleep(33);
        }
        
    }
/*jumping heart*/
void countdown(void);
void printchar(void);
int str[gao][wide];


int sentenceIndex = 0;
void heart_name(void);
char getSentenceChar(const char* sentence, int& index);
inline float getX(float x);
inline float getY(float y);
bool func(float x, float y);
#define X_DIVIDED_BY_Y 0.5
#define MAX_X (35.0 / X_DIVIDED_BY_Y)
#define MAX_Y 35.0
#define THRESHOLD 0.5
#define A 13

void bear_display(void);
void rose_display(void);

const int max_iterations = 128;
const float stop_threshold = 0.01f;
const float grad_step = 0.01f;
const float clip_far = 10.0f;

const float Pi = 3.14159265359f;
const float PI2 = 6.28318530718f;
const float DEG_TO_RAD = PI / 180.0f;

typedef struct { float x, y; } vec2;
typedef struct { float x, y, z; } vec3;
typedef struct { float m[9]; } mat3;

const vec3 light_pos = { 20.0f, 50.0f, 20.0f };
float clamp(float f, float a, float b) { return max(min(f, b), a); };

vec2 make2(float x, float y) { vec2 r = { x, y }; return r; }
vec2 add2(vec2 a, vec2 b) { vec2 r = { a.x + b.x, a.y + b.y }; return r; }
vec2 sub2(vec2 a, vec2 b) { vec2 r = { a.x - b.x, a.y - b.y }; return r; }
float dot2(vec2 a, vec2 b) { return a.x * b.x + a.y * b.y; }
float length2(vec2 v) { return sqrt(dot2(v, v)); }
vec3 make3(float x, float y, float z) { vec3 r = { x, y, z }; return r; }
vec3 add3(vec3 a, vec3 b) { vec3 r = { a.x + b.x, a.y + b.y, a.z + b.z }; return r; }
vec3 sub3(vec3 a, vec3 b) { vec3 r = { a.x - b.x, a.y - b.y, a.z - b.z }; return r; }
vec3 mul3(vec3 a, vec3 b) { vec3 r = { a.x * b.x, a.y * b.y, a.z * b.z }; return r; }
vec3 scale3(vec3 v, float s) { vec3 r = { v.x * s, v.y * s, v.z * s }; return r; }
float dot3(vec3 a, vec3 b) { return a.x * b.x + a.y * b.y + a.z * b.z; }
float length3(vec3 v) { return sqrt(dot3(v, v)); }
vec3 normalize3(vec3 v) { return scale3(v, 1.0f / length3(v)); }
vec3 mul(mat3 m, vec3 v) {
    return make3(
        m.m[0] * v.x + m.m[3] * v.y + m.m[6] * v.z,
        m.m[1] * v.x + m.m[4] * v.y + m.m[7] * v.z,
        m.m[2] * v.x + m.m[5] * v.y + m.m[8] * v.z);
}

mat3 rotationXY(float x, float y) {
    vec2 c = { cos(x), cos(y) }, s = { sin(x), sin(y) };
    mat3 m = {
        c.y      , 0.0f, -s.y,
        s.y * s.x,  c.x,  c.y * s.x,
        s.y * c.x, -s.x,  c.y * c.x
    };
    return m;
}

float opI(float d1, float d2) { return max(d1, d2); }
float opU(float d1, float d2) { return min(d1, d2); }
float opS(float d1, float d2) { return max(-d1, d2); }

float sdPetal(vec3 p, float s) {
    p = add3(mul3(p, make3(0.8f, 1.5f, 0.8f)), make3(0.1f, 0.0f, 0.0f));
    vec2 q = make2(length2(make2(p.x, p.z)), p.y);

    float lower = length2(q) - 1.0f;
    lower = opS(length2(q) - 0.97f, lower);
    lower = opI(lower, q.y);

    float upper = length2(sub2(q, make2(s, 0.0f))) + 1.0f - s;
    upper = opS(upper, length2(sub2(q, make2(s, 0.0f))) + 0.97f - s);
    upper = opI(upper, -q.y);
    upper = opI(upper, q.x - 2.0f);

    float region = length3(sub3(p, make3(1.0f, 0.0f, 0.0f))) - 1.0f;
    return opI(opU(upper, lower), region);
}

float map(vec3 p) {
    float d = 1000.0f, s = 2.0f;
    mat3 r = rotationXY(0.1f, PI2 * 0.618034f);
    r.m[0] *= 1.08f;  r.m[1] *= 1.08f;  r.m[2] *= 1.08f;
    r.m[3] *= 0.995f; r.m[4] *= 0.995f; r.m[5] *= 0.995f;
    r.m[6] *= 1.08f;  r.m[7] *= 1.08f;  r.m[8] *= 1.08f;
    for (int i = 0; i < 21; i++) {
        d = opU(d, sdPetal(p, s));
        p = mul(r, p);
        p = add3(p, make3(0.0, -0.02, 0.0));
        s *= 1.05f;
    }
    return d;
}

vec3 gradient(vec3 pos) {
    const vec3 dx = { grad_step, 0.0, 0.0 };
    const vec3 dy = { 0.0, grad_step, 0.0 };
    const vec3 dz = { 0.0, 0.0, grad_step };
    return normalize3(make3(
        map(add3(pos, dx)) - map(sub3(pos, dx)),
        map(add3(pos, dy)) - map(sub3(pos, dy)),
        map(add3(pos, dz)) - map(sub3(pos, dz))));
}

float ray_marching(vec3 origin, vec3 dir, float start, float end) {
    float depth = start;
    for (int i = 0; i < max_iterations; i++) {
        float dist = map(add3(origin, scale3(dir, depth)));
        if (dist < stop_threshold)
            return depth;
        depth += dist * 0.3;
        if (depth >= end)
            return end;
    }
    return end;
}

float shading(vec3 v, vec3 n, vec3 eye) {
    vec3 ev = normalize3(sub3(v, eye));
    vec3 vl = normalize3(sub3(light_pos, v));
    float diffuse = dot3(vl, n) * 0.5f + 0.5f;
    vec3 h = normalize3(sub3(vl, ev));
    float rim = pow(1.0f - max(-dot3(n, ev), 0.0f), 2.0f) * 0.15f;
    float ao = clamp(v.y * 0.5f + 0.5f, 0.0f, 1.0f);
    return (diffuse + rim) * ao;
}

vec3 ray_dir(float fov, vec2 pos) {
    vec3 r = { pos.x, pos.y, -tan((90.0f - fov * 0.5f) * DEG_TO_RAD) };
    return normalize3(r);
}

float f(vec2 fragCoord) {
    vec3 dir = ray_dir(45.0f, fragCoord);
    vec3 eye = { 0.0f, 0.0f, 4.5f };
    mat3 rot = rotationXY(-1.0f, 1.0f);

    dir = mul(rot, dir);
    eye = mul(rot, eye);

    float depth = ray_marching(eye, dir, 0.0f, clip_far);
    vec3 pos = add3(eye, scale3(dir, depth));
    if (depth >= clip_far)
        return 0.0f;
    else
        return shading(pos, gradient(pos), eye);
}
/*爱心*/ 
void heart_beautiful(void){
    system("cls");
    system("Color 74");
    for (float y = 1.3; y >= -1.1; y -= 0.06)
    {
        for (float x = -1.1; x <= 1.1; x += 0.025)
            if (x * x + pow(5.0 * y / 4.0 - sqrt(fabs(x)), 2) - 1 <= 0.0)
                cout << '*';
            else
                cout << ' ';
        cout << endl;
    }
    Sleep(3000);
}
/*爱心*/ 
void tiaoshi(void){
    char ch[10];
    int f[9][36] =
    {
        0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
        0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
        0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
        0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
        0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
        0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
        0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
        0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0,
        0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0
    };
    int s[9][21] =
    {
        0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0,
        0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0,
        1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1,
        1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1,
        0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0,
        0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0,
        0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
    };
    int t[9][22] =
    {
        0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
        0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0,
        1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1,
        1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
        0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0,
        0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0,
        0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
    };
}
void shan(void){
    printf("%s", " ");
    system("color 7e");
    Sleep(stoptimelong);
    printf("%s", "第");
    Sleep(stoptimeshort);
    printf("%s", "一");
    Sleep(stoptimeshort);
    printf("%s", "次");
    Sleep(stoptimeshort);
    printf("%s", "做");
    Sleep(stoptimeshort);
    printf("%s", "这");
    Sleep(stoptimeshort);
    printf("%s", "种");
    Sleep(stoptimeshort);
    printf("%s", "程");
    Sleep(stoptimeshort);
    printf("%s", "序\n\n");
    
    printf("%s", " ");
    system("color 72");
    Sleep(stoptimelong);
    printf("%s", "可");
    Sleep(stoptimeshort);
    printf("%s", "能");
    Sleep(stoptimeshort);
    printf("%s", "有");
    Sleep(stoptimeshort);
    printf("%s", "点");
    Sleep(stoptimeshort);
    printf("%s", "不");
    Sleep(stoptimeshort);
    printf("%s", "好");
    Sleep(stoptimeshort);
    printf("%s", "看\n\n");

    printf("%s", " ");
    system("color 79");
    Sleep(stoptimelong);
    printf("%s", "但");
    Sleep(stoptimeshort);
    printf("%s", "是");
    Sleep(stoptimeshort);
    printf("%s", "我");
    Sleep(stoptimeshort);
    printf("%s", "真");
    Sleep(stoptimeshort);
    printf("%s", "的");
    Sleep(stoptimeshort);
    printf("%s", "做");
    Sleep(stoptimeshort);
    printf("%s", "了");
    Sleep(stoptimeshort);
    printf("%s", "很");
    Sleep(stoptimeshort);
    printf("%s", "久");
    Sleep(stoptimeshort);
    printf("%s", "\n\n");

}


int main()
{
    system("title 你的名字 Love 对方的名字");
    MessageBox(NULL,TEXT("即将打开"),TEXT("你的名字 Love 对方的名字"),MB_OK);
        
    
    system("title 你的名字 Love 对方的名字");
    Color(5);
    system("color 0f");
    shan();
    countdown();
       rose_display();
    heart_beautiful();
       MessageBox(NULL,TEXT("你的名字 LOVE YOU FOREVER"),TEXT("你的名字 LOVE YOU"),MB_OK);
    heart_jumping();
    system("pause");
    return 0;
    
    
}




char getSentenceChar(const char* sentence, int& index)
{
    while (true)
    {
        if (index >= strlen(sentence))
        {
            index = 0;
        }
        char c = sentence[index++];
        if (' ' == c)
        {
            index++;
        }
        else
        {
            return c;
        }
    }
}

inline float getX(float x)
{
    return (x - MAX_X / 2) * X_DIVIDED_BY_Y;
}

inline float getY(float y)
{
    return MAX_Y / 7.0 - y;
}

bool func(float x, float y)
{
    return (pow(x, 2) + pow(y, 2) + A * x - A * sqrt(pow(x, 2) + pow(y, 2))) < THRESHOLD;
}

void printchar()
{
    int i, j;
    for (i = 0; i < gao; i++)
    {
        for (j = 0; j < wide; j++)
        {
            if (str[i][j] == 0)cout << " ";
            else if (str[i][j] == 1)cout << "*";
            else cout << " ";
        }
        cout << endl;
    }
}
/*倒计时*/ 
void countdown(void) //倒计时函数
{
    int temp, i, j;
    system("cls");
    Sleep(1000);
    system("cls");
    void printchar();
    for (temp = 3; temp >= 1; temp--)
    {
        switch (temp)
        {
        case 1:
            for (i = 2; i <= 15; i++)
            {
                for (j = wide / 2; j <= wide / 2 + 1; j++)str[i][j] = 1;
            }break;
        case 2:
            for (i = 2; i <= 15; i++)
            {
                switch (i)
                {
                case 2:case 3:case 8:case 9:case 14:case 15:
                    for (j = wide / 2 - 7; j <= wide / 2 + 8; j++)str[i][j] = 1; break;
                case 4:case 5:case 6:case 7:
                    for (j = wide / 2 + 7; j <= wide / 2 + 8; j++)str[i][j] = 1; break;
                default:
                    for (j = wide / 2 - 7; j <= wide / 2 - 6; j++)str[i][j] = 1; break;
                }
            }break;
        case 3:
            for (i = 2; i <= 15; i++)
            {
                switch (i)
                {
                case 2:case 3:case 8:case 9:case 14:case 15:
                    for (j = wide / 2 - 7; j <= wide / 2 + 8; j++)str[i][j] = 1; break;
                default:
                    for (j = wide / 2 + 7; j <= wide / 2 + 8; j++)str[i][j] = 1; break;
                }
            }break;
        }
        printchar();
        Sleep(1000);
        for (i = 0; i < gao; i++)
        {
            for (j = 0; j < wide; j++)str[i][j] = 0;
        }
        system("cls");
    }
    Sleep(500);
    system("cls");//清理屏幕
}
/*倒计时*/
/*玫瑰*/ 
void rose_display(void)
{
    system("cls");//清理屏幕
    system("Color 04");
    int i;
    char Word[160] = "                        世界上也许有五千朵一模一样的花,但只有你是我独一无二的玫瑰";
    for (i = 0; Word[i] != NULL; i++)
    {
        cout << Word[i];
        Sleep(50);
    }
    
    puts("\033[91m");
    system("Color 04");
    for (int y = 0; y < 80; y++) {
        for (int x = 0; x < 160; x++)
            putchar("  .,-:;+=*#@"[(int)(f(make2((x / 160.0f - 0.5f) * 2.0f, (y / 80.0f - 0.5f) * -2.0f)) * 12.0f)]);
        putchar('\n');
    }
}
/*玫瑰*/ 

以上就是本次知识分享啦~

记得点赞!

猜你喜欢

转载自blog.csdn.net/pyz258/article/details/129411403
今日推荐