干货分享:用一百行代码做一个C/C++表白小程序,程序员的浪漫!
前言:很多时候,当别人听到你是程序员的时候。第一印象就是,格子衫、不浪漫、直男。但是程序员一旦浪漫起来,真的没其他人什么事了。什么纪念日,生日,情人节,礼物怎么送?
做一个浪漫的程序给她,放上你们照片,找一段有符合情景的音乐,既有心意,又有浪漫。所以说,程序猿的浪漫你根本想象不到啊。
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++表白小程序,程序员的浪漫!的更多相关文章
- 通过 Mesos、Docker 和 Go,使用 300 行代码创建一个分布式系统
[摘要]虽然 Docker 和 Mesos 已成为不折不扣的 Buzzwords ,但是对于大部分人来说它们仍然是陌生的,下面我们就一起领略 Mesos .Docker 和 Go 配合带来的强大破坏力 ...
- 通过Mesos、Docker和Go,使用300行代码创建一个分布式系统
[摘要]虽然 Docker 和 Mesos 已成为不折不扣的 Buzzwords ,但是对于大部分人来说它们仍然是陌生的,下面我们就一起领略 Mesos .Docker 和 Go 配合带来的强大破坏力 ...
- delphi 牛逼 了 app (已在软件界掀起波澜)10分钟10行代码做出让人惊叹的程序
(已在软件界掀起波澜)10分钟10行代码做出让人惊叹的程序 http://v.qq.com/x/page/m0328h73bs7.html?ptag=bbs_csdn_net
- 【云开发】10分钟零基础学会做一个快递查询微信小程序,快速掌握微信小程序开发技能(轮播图、API请求)
大家好,我叫小秃僧 这次分享的是10分钟零基础学会做一个快递查询微信小程序,快速掌握开发微信小程序技能. 这篇文章偏基础,特别适合还没有开发过微信小程序的童鞋,一些概念和逻辑我会讲细一点,尽可能用图说 ...
- 【腾讯Bugly干货分享】人人都可以做深度学习应用:入门篇
导语 2016年,继虚拟现实(VR)之后,人工智能(AI)的概念全面进入大众的视野.谷歌,微软,IBM等科技巨头纷纷重点布局,AI 貌似将成为互联网的下一个风口. 很多开发同学,对人工智能非常感兴趣, ...
- Html5游戏开发-145行代码完成一个RPG小Demo
lufy前辈写过<[代码艺术]17行代码的贪吃蛇小游戏>一文,忽悠了不少求知的兄弟进去阅读,阅读量当然是相当的大.今天我不仿也搞一个这样的教程,目地不在于忽悠人,而在于帮助他人. 先看de ...
- 【编程教室】PONG - 100行代码写一个弹球游戏
大家好,欢迎来到 Crossin的编程教室 ! 今天跟大家讲一讲:如何做游戏 游戏的主题是弹球游戏<PONG>,它是史上第一款街机游戏.因此选它作为我这个游戏开发系列的第一期主题. 游戏引 ...
- 强哥的分享--如何使用Spring Boot做一个邮件系统
http://springboot.fun/ actuator是单机.集群环境下要使用Spring Boot Admin将各个单机的actuator集成越来 mvn clean package -Dm ...
- SpringBoot,用200行代码完成一个一二级分布式缓存
缓存系统的用来代替直接访问数据库,用来提升系统性能,减小数据库复杂.早期缓存跟系统在一个虚拟机里,这样内存访问,速度最快. 后来应用系统水平扩展,缓存作为一个独立系统存在,如redis,但是每次从缓存 ...
随机推荐
- 藏在Java数组的背后,你可能忽略的知识点
目录 引言 概念 区别于C/C++数组 区别于容器 数组特性 随机访问 Java数组与内存 解惑 数组的本质 Java中的数组是对象吗? Java中数组的类型 Java中数组的继承关系 参考资料 引言 ...
- Linux下 ls 命令的高级用法8例
Linux下 ls 命令的高级用法8例 在Linux下,ls这个命令大家肯定太熟悉了,良许相信只要是Linux工程师,每天都会离不开这个命令,而且一天会使用个几百次.但是,除了 ls -l 以外,你还 ...
- get、post请求方式区别
1.get请求只有请求头,没有请求体,它的参数只能写在url里面,post请求数据放在请求体里面 (HTTP协议:两台电脑交互url请求头Request Headers:一些额外的信息,比如用的什么浏 ...
- 使用PXE+VNC方式安装CentOS 7
U盘坏了,用个下面的方法安装 安装配置dhcp yum -y install dhcp tftp-server 修改如下,网段改为你自己的网段 vim /etc/dhcp/dhcpd.conf sub ...
- 使用GO实现Paxos分布式一致性协议
什么是Paxos分布式一致性协议 最初的服务往往都是通过单体架构对外提供的,即单Server-单Database模式.随着业务的不断扩展,用户和请求数都在不断上升,如何应对大量的请求就成了每个服务都需 ...
- CountDownLatch、CyclicBarrier
CountDownLatch CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能.比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行 ...
- 理解 JAVABEAN EJB POJO
<Spring实战>第一章:基本理念.各类名称熟语 POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混 ...
- Kubernetes K8S之存储Secret详解
K8S之存储Secret概述与类型说明,并详解常用Secret示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 ...
- Quartz.NET集成UI版
Quartz.NET Quartz.NET是NET的开源作业调度系统. Quartz.NET是一个功能齐全的开源作业调度系统,可用于从最小的应用程序到大型企业系统. Quartz.NET目前支持NET ...
- Centos-删除文件或目录-rm
rm 删除目录或者文件,如果是链接文件,则只删除这个链接文件而不是链接指向的文件 相关选项 -r 递归删除目录 -f 忽略不存在提示和确认提示,本身确认提示系统默认添加-i参数 -i 删除文件前提示, ...