c/c++ 表白小程序
程序员文章站
2022-05-11 14:14:21
1.开发工具: vs vc(任选一个) 2.准备材料 : a.一首音乐 (注意:音乐要求重命名为 “x” ) b.20张图片(注意: 图片要求重命名为 “1” "2" ”3“ ......"19" "20") 3.重要的一项 : 将Unicode字符集 更改为 多字节字符集 (重中之重 千万注意) ......
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坐标
};
#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(){
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);
}
//循环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));
//使用api来获取当前窗口的宽 高
//创建一个窗口 宽 高 单位px 像素
initgraph(getsystemmetrics(sm_cxscreen),
getsystemmetrics(sm_cyscreen));
//获取当前窗口句柄
hwnd hwnd = gethwnd();
hwnd hwnd = gethwnd();
//设置窗口风格 减去窗口标题
setwindowlong(hwnd, gwl_style,
getwindowlong(hwnd, gwl_style) - ws_caption);
setwindowlong(hwnd, gwl_style,
getwindowlong(hwnd, gwl_style) - ws_caption);
//设置窗口的起始点 默认风格
setwindowpos(hwnd, hwnd_topmost, 450, 150, getsystemmetrics(sm_cxscreen),
getsystemmetrics(sm_cyscreen), swp_showwindow);
setwindowpos(hwnd, hwnd_topmost, 450, 150, getsystemmetrics(sm_cxscreen),
getsystemmetrics(sm_cyscreen), swp_showwindow);
//拿到我背面的窗口风格
long windowlong = getwindowlong(hwnd, gwl_exstyle) | ws_ex_layered;
long windowlong = getwindowlong(hwnd, gwl_exstyle) | ws_ex_layered;
//设置窗口风格
setwindowlong(hwnd, gwl_exstyle, windowlong);
setwindowlong(hwnd, gwl_exstyle, windowlong);
//把黑色的背景设置为透明
setlayeredwindowattributes(hwnd, rgb(0, 0, 0), 0, lwa_colorkey);
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
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);//格式化输出
//}
//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!");
//在窗口对应的位置输出文本
//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);
}
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);
}
}*/
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);
}
//清除设备
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;
}
system("pause");//暂停
return 0;
}
6.代码说多也多 说不多他也就200来行 希望大家可以用我的程序找到你的伴侣
那我就很开心了。
祝大家好运吧!