谁说C/C++程序员不浪漫???来来来一起打造一个浪漫的表白程序,配上好听的音乐,瞬间高大上的感觉。
是时候准备出手了!
喜欢一个女生很久了,想跟那个女生表白,但是找不到合适的方式表白。于是想到了一个办法,用c语言写一个程序跟她表白。这个程序的构想是这样的:当她打开这个程序,她的电脑就会出现一个记事本,而且还会绕着屏幕跑步!(大家可以做成在屏幕上,作心型运动)
先看下运行效果!
就是这样,记事本会在屏幕上run!
需要的头文件:
#include<stdio.h>
#include<windows.h>
#define X 1000
#define Y 600
头文件写好了,之后先要在磁盘里创建文件 我爱你.txt 并打开
这是运行程序自动创建并打开的哟!
void openqq()
{
system("mode con cols=80 lines=30");
char *love = "XX我爱你";
printf("%*s ",30,love);
char arr[50];
char str='D';
sprintf(arr, "%c:\我爱你.txt", str);
FILE *fi = fopen(arr, "w");
if (fi == NULL)
{
str = 'E';
sprintf(arr, "%c:\我爱你.txt",str);
fi = fopen(arr, "w");
if (fi == NULL)
{
printf("我爱你,但文件创建失败,请重试! ");
return;
}
}
printf("通往我心里的路--->%s ", arr);
char qq[333]=" XX我爱你
你不开心的时候,我陪你,你哭泣的时候,我陪你,
你心情很不爽的时候,我陪你,你不想回家的时候,
我陪你,无论怎样,我都陪你,只因为你是我最爱
的人,你就是我的音乐,你给我带来好听的音符。
你是我的全部,你给我生命带来了色彩。我永远爱
你!可以跟我在一起吗?";
fprintf(fi, qq);
fclose(fi);
ShellExecuteA(0, "open", arr, 0, 0, 1);
}
然后咱们得让记事本动起来,这样才有逼格不是,看代码!
void changexy()
{
HWND mywnd = FindWindowA("Notepad", "我爱你.txt - 记事本");
if (mywnd == NULL)
{
printf("我是爱你的啊!请重新试试! ");
}
//printf("窗口==%d", mywnd);
int i = 1,y=1;
while (1){
if (i < X&&y<50)
{
i++;
SetWindowPos(mywnd, NULL, i, 0, 400, 400, 0);
Sleep(5);
}
else if (i>=X &&y<=Y)
{
y++;
SetWindowPos(mywnd, NULL, i, y, 400, 400, 0);
Sleep(5);
}
else if (i>1&&i<=X && y <= Y+1)
{
i--;
//printf("x==%d y==%d", i, y);
SetWindowPos(mywnd, NULL, i, y, 400, 400, 0);
Sleep(5);
}
else if (i>0 && i <= X && y <= Y+1)
{
y--;
//printf("x==%d y==%d", i, y);
SetWindowPos(mywnd, NULL, i, y, 400, 400, 0);
Sleep(5);
}
}
}
对了,还得画个心呢!这个就是copy的代码了,哈哈
void heart()
{
int i, j, k, l, m;
char c = 3; //ASCII码里面 3 就是一个字符小爱心
for (i = 1; i <= 5; i++) printf(" "); //开头空出5行
for (i = 1; i <= 3; i++)
{ //前3行中间有空隙分开来写
for (j = 1; j <= 32 - 2 * i; j++) printf(" "); //左边的空格,每下一行左边的空格比上一行少2个 //8*n-2*i
for (k = 1; k <= 4 * i + 1; k++) printf("%c", c);//输出左半部分字符小爱心
for (l = 1; l <= 13 - 4 * i; l++) printf(" "); //中间的空格,每下一行的空格比上一行少4个
for (m = 1; m <= 4 * i + 1; m++) printf("%c", c);//输出右半部分字符小爱心
printf(" "); //每一行输出完毕换行
}
for (i = 1; i <= 3; i++)
{ //下3行中间没有空格
for (j = 1; j <= 24 + 1; j++) printf(" "); //左边的空格 //8*(n-1)+1
for (k = 1; k <= 29; k++) printf("%c", c);//输出字符小爱心
printf(" "); //每一行输出完毕换行
}
for (i = 7; i >= 1; i--)
{ //下7行
for (j = 1; j <= 40 - 2 * i; j++) printf(" "); //左边的空格,每下一行左边的空格比上一行少2个//8*(n+1)-2*i
for (k = 1; k <= 4 * i - 1; k++) printf("%c", c);//每下一行的字符小爱心比上一行少4个(这个循环是i--)
printf(" "); //每一行输出完毕换行
}
for (i = 1; i <= 39; i++) printf(" "); //最后一行左边的空格
printf("%c ", c); //最后一个字符小爱心
for (i = 1; i <= 5; i++) printf(" "); //最后空出5行
}
这个程序基本上完工了,最后就是在主函数里面,组合它们!
int main()
{
openqq();
heart();
Sleep(200);
changexy();
getchar();
return 0;
}
最后小编还准备了彩蛋哦~
给大家一份免费的C语言学习课程,赶紧来领取吧!