前言:很多时候,当别人听到你是程序员的时候。第一印象就是,格子衫、不浪漫、直男。但是程序员一旦浪漫起来,真的没其他人什么事了。什么纪念日,生日,情人节,礼物怎么送?

做一个浪漫的程序给她,放上你们照片,找一段有符合情景的音乐,既有心意,又有浪漫。所以说,程序猿的浪漫你根本想象不到啊。

1.开发工具: vs  vc(任选一个)

2.准备材料 :

a.一首音乐 (注意:音乐要求重命名为  “x”  )

b.20张图片(注意: 图片要求重命名为  “1”  "2"   ”3“   ......"19"   "20")

3.重要的一项  :  将Unicode字符集   更改为   多字节字符集     (重中之重 千万注意)

4.先看效果

 

本来程序是图片循环转动的,但是截图出来就是这副鸟样子了,大家凑合先看着。

等下把程序自己做出来 慢慢体会程序呀的浪漫。

5.  话不多说咱们直接上代码

 

#include "graphics.h" //c++图形界面库

#include "stdio.h"

#include "time.h"

#include "mmsystem.h"

#pragma comment(lib,"winmm.lib")

//点

struct Point{

int x;//x坐标

int y;//y坐标

};

//1.定义 int x; //设x变量           IMAGE  img;

IMAGE imgBig[20];

IMAGE imgSmall[20];

//加载图片

void InitImg(){

char buf[128] = { 0 };//字符数组

//循环20次

for (int i = 0; i < 20; i++){//0-19 1-20

sprintf(buf, "images\\%d.jpg", i + 1);//格式转换

//2.加载 scanf("%d", &x);//加载的是整数  loadimage()

loadimage(&imgBig[i], buf, 300, 200);

loadimage(&imgSmall[i], buf, 30, 30);

}

}

void InitWindow(){

//1920*1080  获取 Get 设置Set

//使用api来获取当前窗口的宽 高

//创建一个窗口 宽 高 单位px  像素

initgraph(GetSystemMetrics(SM_CXSCREEN),

GetSystemMetrics(SM_CYSCREEN));

//获取当前窗口句柄

HWND hwnd = GetHWnd();

//设置窗口风格 减去窗口标题

SetWindowLong(hwnd, GWL_STYLE,

GetWindowLong(hwnd, GWL_STYLE) - WS_CAPTION);

//设置窗口的起始点  默认风格

SetWindowPos(hwnd, HWND_TOPMOST, 450, 150, GetSystemMetrics(SM_CXSCREEN),

GetSystemMetrics(SM_CYSCREEN), SWP_SHOWWINDOW);

//拿到我背面的窗口风格

LONG WindowLong = GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED;

//设置窗口风格

SetWindowLong(hwnd, GWL_EXSTYLE, WindowLong);

//把黑色的背景设置为透明

SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), 0, LWA_COLORKEY);

}

 

int main(){

//创建一个窗口

//2个参数 宽 高

//initgraph(800,800);//单位px 像素

InitWindow();

//open 打开这首歌

mciSendString("open x.mp3", 0, 0, 0);

//play 播放音乐

mciSendString("play x.mp3", 0, 0, 0);

//创建结构体数组

Point arr[46] = {

{ 395, 268 },

{ 406, 222 },

{ 416, 193 },

{ 441, 162 },

{ 468, 133 },

{ 500, 117 },

{ 537, 105 },

{ 577, 107 },

{ 617, 120 },

{ 649, 146 },

{ 666, 173 },

{ 680, 211 },

{ 683, 247 },

{ 680, 293 },

{ 675, 338 },

{ 660, 385 },

{ 640, 440 },

{ 616, 484 },

{ 588, 529 },

{ 557, 573 },

{ 530, 610 },

{ 493, 645 },

{ 460, 675 },

{ 422, 696 },

{ 381, 676 },

{ 350, 654 },

{ 320, 626 },

{ 292, 606 },

{ 257, 570 },

{ 230, 540 },

{ 200, 500 },

{ 180, 470 },

{ 160, 430 },

{ 140, 390 },

{ 126, 342 },

{ 117, 293 },

{ 120, 250 },

{ 133, 203 },

{ 160, 170 },

{ 200, 140 },

{ 240, 130 },

{ 280, 135 },

{ 312, 146 },

{ 340, 170 },

{ 360, 195 },

{ 375, 230 }

};

char buff[46][50] = {

"一封信",

"两年未都",

"没动笔",

"三个字",

"过了",

"几个四季",

"你是有",

"多想逃避",

"来不及",

"问问你",

"我已经",

"错过",

"相爱",

"的日期",

"那天你",

"消失在",

"人海里",

"你的背影",

"沉默的",

"让人恐惧",

"你说的",

"那些问题",

"我回答得",

"很坚定",

"偏偏",

"那个时候",

"我最想你",

"我不曾",

"爱过你",

"我自己",

"骗自己",

"已经给你",

"写了信",

"又被我",

"丢进海里",

"我不曾",

"爱过你",

"我自己",

"骗自己",

"明明觉得",

"自己",

"很冷静",

"却还",

"掉入",

"我自己",

"的陷阱"

};

//通过时间做随机数的种子

srand((unsigned)time(NULL));

//如何在窗口显示文字

//编程  和计算机做交互 显示

//printf

InitImg();

//for (int i = 0; i < 20; i++)

//{

// //3.显示 printf("%d\n", x);//显示整数    putimage()

// putimage(0, 0, &img[i]);//图片在窗口显示的位置

// Sleep(1000);//格式化输出

//}

//out输出 text文本 xy位置

//在窗口对应的位置输出文本

//outtextxy(0,0,"Hello,World!");

//简单的绘图

for (int i = 0; i < 46; i++){

//设置颜色

settextcolor(RGB(rand() % 256, rand() % 256, rand() % 256));

//i 0-45

//outtextxy(arr[i].x, arr[i].y,buff[i]);

putimage(arr[i].x, arr[i].y, &imgSmall[i % 20]);

Sleep(80);

}

/*MOUSEMSG m;

while (1){

m = GetMouseMsg();

if (m.uMsg == WM_LBUTTONDOWN){

printf("X:%d,Y:%d\n", m.x, m.y);

}

}*/

int add = 0;

while (1){

//清除设备

cleardevice();

for (int i = 0; i < 46; i++){

//设置颜色

//settextcolor(RGB(rand() % 256, rand() % 256, rand() % 256));

//i 0-45

//outtextxy(arr[i].x, arr[i].y, buff[(i+add)%46]);

putimage(arr[i].x, arr[i].y, &imgSmall[(i + add) % 20]);

}

//ctrl +k  ctrl+c 注释  20张  0-19 rand%20  0-19

//ctrl +k  ctrl+u 取消注释

putimage(257, 308, &imgBig[add % 20]);

add++;

Sleep(1000);

}

//然文字动

system("pause");//暂停

return 0;

}

 

6.代码说多也多  说不多他也就100来行   希望大家可以用我的程序找到你的伴侣

那我就很开心了。

祝大家好运吧!

点击了解更多资料,更有免费开源项目和课程等你观看哦!

干货分享:用一百行代码做一个C/C++表白小程序,程序员的浪漫!的更多相关文章

  1. 通过 Mesos、Docker 和 Go,使用 300 行代码创建一个分布式系统

    [摘要]虽然 Docker 和 Mesos 已成为不折不扣的 Buzzwords ,但是对于大部分人来说它们仍然是陌生的,下面我们就一起领略 Mesos .Docker 和 Go 配合带来的强大破坏力 ...

  2. 通过Mesos、Docker和Go,使用300行代码创建一个分布式系统

    [摘要]虽然 Docker 和 Mesos 已成为不折不扣的 Buzzwords ,但是对于大部分人来说它们仍然是陌生的,下面我们就一起领略 Mesos .Docker 和 Go 配合带来的强大破坏力 ...

  3. delphi 牛逼 了 app (已在软件界掀起波澜)10分钟10行代码做出让人惊叹的程序

    (已在软件界掀起波澜)10分钟10行代码做出让人惊叹的程序 http://v.qq.com/x/page/m0328h73bs7.html?ptag=bbs_csdn_net

  4. 【云开发】10分钟零基础学会做一个快递查询微信小程序,快速掌握微信小程序开发技能(轮播图、API请求)

    大家好,我叫小秃僧 这次分享的是10分钟零基础学会做一个快递查询微信小程序,快速掌握开发微信小程序技能. 这篇文章偏基础,特别适合还没有开发过微信小程序的童鞋,一些概念和逻辑我会讲细一点,尽可能用图说 ...

  5. 【腾讯Bugly干货分享】人人都可以做深度学习应用:入门篇

    导语 2016年,继虚拟现实(VR)之后,人工智能(AI)的概念全面进入大众的视野.谷歌,微软,IBM等科技巨头纷纷重点布局,AI 貌似将成为互联网的下一个风口. 很多开发同学,对人工智能非常感兴趣, ...

  6. Html5游戏开发-145行代码完成一个RPG小Demo

    lufy前辈写过<[代码艺术]17行代码的贪吃蛇小游戏>一文,忽悠了不少求知的兄弟进去阅读,阅读量当然是相当的大.今天我不仿也搞一个这样的教程,目地不在于忽悠人,而在于帮助他人. 先看de ...

  7. 【编程教室】PONG - 100行代码写一个弹球游戏

    大家好,欢迎来到 Crossin的编程教室 ! 今天跟大家讲一讲:如何做游戏 游戏的主题是弹球游戏<PONG>,它是史上第一款街机游戏.因此选它作为我这个游戏开发系列的第一期主题. 游戏引 ...

  8. 强哥的分享--如何使用Spring Boot做一个邮件系统

    http://springboot.fun/ actuator是单机.集群环境下要使用Spring Boot Admin将各个单机的actuator集成越来 mvn clean package -Dm ...

  9. SpringBoot,用200行代码完成一个一二级分布式缓存

    缓存系统的用来代替直接访问数据库,用来提升系统性能,减小数据库复杂.早期缓存跟系统在一个虚拟机里,这样内存访问,速度最快. 后来应用系统水平扩展,缓存作为一个独立系统存在,如redis,但是每次从缓存 ...

随机推荐

  1. 5分钟掌握企业LVM磁盘划分

    逻辑卷管理LVM是一个多才多艺的硬盘系统工具.无论在Linux或者其他类似的系统,都是非常的好用.传统分区使用固定大小分区,重新调整大小十分麻烦.但是,LVM可以创建和管理“逻辑”卷,而不是直接使用物 ...

  2. pthon中取整的几个方法round、int、math

    取整的几种方法:1.四舍五入 round(x) 2.向下取整  int(x) 3.取商和余 4.向上取整,需要用到math.ceil(x)(可以理解成大于x且最接近x的整数)import math 5 ...

  3. 不懂 ZooKeeper?没关系,这一篇给你讲的明明白白

    本来想系统回顾下 ZooKeeper的,可是网上没找到一篇合自己胃口的文章,写的差不多的,感觉大部分都是基于<从Paxos到ZooKeeper 分布式一致性原理与实践>写的,所以自己读了一 ...

  4. MySQL/InnoDB中,乐观锁、悲观锁、共享锁、排它锁、行锁、表锁、死锁概念的理解

    文章出处:https://www.souyunku.com/2018/07/30/mysql/?utm_source=tuicool&utm_medium=referral MySQL/Inn ...

  5. mini logger for c++

    水平太菜,最近捣鼓这个 log,折腾了好一会.由于之前都是用 std::cout,不能满足同时输出到屏与文件的目的,故经过一番搜索,在stackoverflow 找到了答案,现总结如下: 头文件 lo ...

  6. Redis散列(Hash)的相关命令

    散列 就像一个减配的Redis 内部及其类似Java的Map 内容就是key:value结构 hash类型在面向对象编程的运用中及其适合,因为它可以直接保存编程语言中的实体类关系 增 hset hse ...

  7. 普转提Day2

    T1 给定一个区间,求这个区间中只有一个数字与其他数组不相同的数的个数. 给出的区间范围较大,但是要求的数比较少.所以我的想法是这样的:因为这些数只有一个数字和每个数字都相同的数不同,所以考虑将所有数 ...

  8. JavaEE的核心API与组件

    JAVAEE Java ee 平台由一整套服务(Services).应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对JAVAEE中的13种技术规范进行简单的描述( ...

  9. springboot项目根据不同的环境启动不同的配置,如开发环境dev,测试环境sit,生产环境application

    在项目开发中,会有多个环境,如在开发环境开发完,然后在测试环境测试,最后到生产环境,每个环境的配置是不一样的,如数据库配置:还好spring提供了一个管理配置的方式:

  10. Spring学习(八)--Spring的AOP

    自工作以后身不由己,加班无数,996.995不可控制,高高立起的flag无法完成,无奈,随波逐流,尽力而已! 1.advice通知 advice主要描述Spring AOP 围绕奥方法调用而注入的切面 ...