怎么用3d绘图器表白?

怎么用3d绘图器表白??生活中难免遇到很多问题,怎么解决? 让我们来看看好道义情感网兔兔小编给大家精心整理的答案,欢迎收藏转载。

怎么用3d绘图器表白?1

表白的句子,中英文都有: I'll love you to my dying day 我爱你,至死不渝 i can't love you more 我无法爱你更多!或我爱死你了! My heart belongs to you!

怎么用3d绘图器表白?2

用3d绘图器表白,需要掌握制图软件功能才可以做到。比如绘制一些立体的小爱心,两个手指比划爱的心型,就可以通过绘图软件表白,并且还是动态的。

怎么用3d绘图器表白?3

今天小编用简单的C语言知识写一个连连看的游戏,但是是有含义的哈,游戏玩完之后又是属于一个表白程序,也感觉不错的哦。

下面小编把全部的代码发出来一下,以及效果图发一下,最终的话把涉及的知识点也讲解一下,小编用的编译器是VS2015哈。

#include<graphics.h>//图形库

#include<stdio.h>

#include<time.h>//随机数

//#include<window.h> 图形库与windows.h有冲突

#include<mmsystem.h>//放音乐

#pragma comment(lib,"WINMM.LIB")//需要的库

/*

1.连连看部分

加载图片

数组部分 ---1.随机 2.成对出现

图片贴进去-----用数组 二维数组 xy图片贴的位置 元素的值 表示贴什么图片

获取用户点击

判断能否消除

2.表白部分

有背景图片

写出需要说的话

弹窗部分

*/

//窗口大小 640*480

IMAGE img[9];

int map[8][6];//数组大小 8*6 1.窗口大小 2.图片大小 80*80

int win;//全局变量

//函数声明

void putimg();//加载图片

void init();//数组赋值

void draw();//画图部分

int playgame();//获取鼠标点击

void play();//处理两次点击

void lo();

//void

//=====================================

//函数定义部分

void putimg()

{//图形库里面的函数

initgraph(640, 480);//创建窗口

loadimage(&img[0], "1.jpg", 80, 80);//加载图片

loadimage(&img[1], "2.jpg", 80, 80); //L多字节字符集

loadimage(&img[2], "3.jpg", 80, 80);

loadimage(&img[3], "4.jpg", 80, 80);

loadimage(&img[4], "5.jpg", 80, 80);

loadimage(&img[5], "6.jpg", 80, 80);

loadimage(&img[6], "7.jpg", 80, 80);

loadimage(&img[7], "8.jpg", 80, 80);

loadimage(&img[8], "背景.jpg", 640, 480);//窗口大小一样大

}

void init()

{

//1.map 赋值 每张图片放哪里 放哪张图片

//map随机赋值 成对出现 保证每个都有

//用arr数组先处理下地图

int arr[8 * 6] = { 0,0,0,0,0,0,

1,1,1,1,1,1,

2,2,2,2,2,2,

3,3,3,3,3,3,

4,4,4,4,4,4,

5,5,5,5,5,5,

6,6,6,6,6,6,

7,7,7,7,7,7 };//初始地图

//把arr打乱之后放到这个map数组里面

//随机数

srand((unsigned)time(NULL));//生成随机数 随机数种子 time.h

int lenth = 48;//arr长度

int temp;

//给map赋值

for (int i = 0; i < 8; i++)

{

for (int j = 0; j < 6; j++)

{

//随机取出arr中的一个 赋给map[i][j]

temp = rand() % lenth;

map[i][j] = arr[temp];//取出的数字的话不能再用

//取出的数字放到后面

for (int k = temp; k < lenth - 1; k++)

{

arr[k] = arr[k + 1];//k+1<lenth

}

lenth--;//数组有效长度减一

}

}

win = 48;//记录当前的图片个数

//map被打乱了 按照map 贴图

}

void draw()

{

BeginBatchDraw();

//背景 --贴背景

putimage(0, 0, &img[8]);

//再贴别的图片

for (int i = 0; i < 8; i++)

{

for (int j = 0; j < 6; j++)

{

//遍历数组

switch (map[i][j])

{

case 0://贴第一张图

putimage(80 * i, 80 * j, &img[0]); break;

case 1:putimage(80 * i, 80 * j, &img[1]); break;

case 2:putimage(80 * i, 80 * j, &img[2]); break;

case 3:putimage(80 * i, 80 * j, &img[3]); break;

case 4:putimage(80 * i, 80 * j, &img[4]); break;

case 5:putimage(80 * i, 80 * j, &img[5]); break;

case 6:putimage(80 * i, 80 * j, &img[6]); break;

case 7:putimage(80 * i, 80 * j, &img[7]); break;

}

}

}

EndBatchDraw();

}

int playgame()

{

//图形库的函数

//1.鼠标信息

MOUSEMSG msg;//存储鼠标信息

msg = GetMouseMsg();//获取鼠标信息

//根据鼠标位置 鼠标信息

switch (msg.uMsg)

{

case WM_LBUTTONDOWN:

//msg.x msg.y 第一张图片 0< msg.x <80 0<msg.y<80

//返回坐标值 map[msg.x / 80][msg.y / 80] ;

//86-->map[8][6]

return msg.x / 80 * 10 + msg.y / 80;

//return msg.x/8+msg.y/80;

//int 除法不保留小数 3/4 0 3/4*4=0

break;

}

return -1;//没有获取到值

}

void play()

{

//获取两次鼠标点击 1.两次鼠标点击都要有效

int point1, point2;//获取到两次鼠标点击

while ((point1 = playgame()) == -1 || map[point1 / 10][point1 % 10] == -1);//获取到一个坐标

//outtextxy(point1 / 10 * 80, point1 % 10 * 80, "get");

setlinecolor(RED);

rectangle(point1 / 10 * 80, point1 % 10 * 80, point1 / 10 * 80 + 80, point1 % 10 * 80 + 80);

//根据坐标判断

//1.是不是获取到了内容point1 = playgame() != -1

//2.是不是已经赋值的内容 map[point1 / 10][point1 % 10] != -1

//消掉的部分 =-1

while ((point2 = playgame()) == -1 || map[point2 / 10][point2 % 10] == -1);

//加一条就可以

//可以消除或不可以消除

//可以消除 1.坐标不一样 2.图片一样

if (point1 != point2 && map[point1 / 10][point1 % 10] == map[point2 / 10][point2 % 10])

{

//连线部分

line(point1 / 10*80+30,point1 % 10*80+30,point2 / 10*80+30,point2 % 10*80+30);//连线 两个坐标

Sleep(500);//500毫秒

map[point1 / 10][point1 % 10] = -1;//图片和数组挂钩 -1没有对应的图片 draw

map[point2 / 10][point2 % 10] = -1;

win -= 2;//消除部分

}

else

{

//没有消掉

}

}

void lo()

{

//alias song

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

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

setbkmode(TRANSPARENT);//设置文字背景透明

settextcolor(LIGHTGRAY);//设置文字颜色

settextstyle(30, 0, "黑体");

char poem[2][9] = { "默然相爱","寂静欢喜" };

//一个中文占两字节 8个字节 考虑字符串 \0

//两只黄鹂鸣翠柳 你还没有男朋友

/*outtextxy(0, 0, poem[0]);

outtextxy(0, 30, poem[1]);*/

//文字一个个出现 循环做 每次输出一个中文

//1.中文占两个字节 不能char存储 字符串\0 三个字节

char word[3];//保存一个中文字

for (int i = 0; i < 2; i++)

{

for (int j = 0; j < 9; j+=2)

{

word[0] = poem[i][j];

word[1] = poem[i][j + 1];

word[2] = '\0';

outtextxy(15* j+100,30*i,word);

Sleep(200);

if (poem[i][j + 2] == '\0') break;

}

}

//弹窗内容

HWND hwnd = GetHWnd();//获取当前窗口句柄

MessageBox(hwnd, "I Love You", "NAME", MB_OK);

MessageBox(hwnd, "夏七", "制作人", MB_OK);

}

//=======================

int main()

{

putimg();

init();

draw();

while (win!=0)//循环部分

{

play();

draw();// 贴图

}

//表白部分

//一首诗 写的句子 一个喜欢的人

//一段话

/*initgraph(640, 480);

loadimage(NULL, "背景.jpg", 640, 480);*/

lo();

getchar();

return 0;

}

最终的效果图,小编发一下,只是素材的话有时候可以自己找的哈,需要小编的素材图片可以加下我的群466572167,群内也有资料下载学习,可以交流讨论的

加群466572167,可以交流学习

加群466572167 可以交流学习

编译工具的话,小编给个建议:开发工具 VS 2013 2015 (Vs2017不可以) VC 都可以

但是DEV C /GCC /CODEBLOCK 不可以,之所以vs2017不行,因为图形库还不支持。

额外需要的东西有1.图形库 easyx graphics.h 需要安装 2.素材9张图片

涉及到的知识点:

图形库的一些函数(注释)

1.数组

2.if for 分支循环

3.函数

4.随机数

小编就暂时说到这,需要素材的话可以加小编的群466572167,自然群内也有资料下载学习的,以及可以交流提升,今天的话就暂时写个小项目,注意点,小编也已经写出来了,自然素材的话,自己也都可以去找下图片的哈,也不一定要跟小编的写的一模一样。涉及到的知识点也不是很多也就C语言里面的基本知识罢了,主要是编程学的是思维逻辑,这个很重要的。

上一篇:没有了 下一篇:没有了