C语言之拼图1.0

来源:互联网 发布:湖南纳米娱乐网络 编辑:程序博客网 时间:2024/05/21 08:46

要生成exe需要添加资源(图片,音乐等)

1.在解决方案资源管理器中的项目右键->添加->资源


2.在弹出的窗口选择导入

3.选择所有文件,从中导入想要的图片


4.选择完毕后在弹出的窗口,填写相应的类型(以导入图片为例)


第一次导入自己填写IMAGE,之后可直接选择(如果导入的是音乐,最好用wav格式,资源类型为WAVE)

5.导入后会出现以下数据


6.在项目头文件那一栏可找到resource.h


7.打开resource.h可看到相应对象


8.之后在程序中添加对象可参考如下




代码:

#ifndef _JIGSAW_H_#define _JIGSAW_H_#define PI 3.1415926535#include<stdio.h>#include<graphics.h>#include<conio.h>#include"resource.h"#include<mmsystem.h>#include<time.h>#include<stdlib.h>#pragma comment(lib,"winmm.lib");#define WINS_WIDTH 800#define WINS_HEIGHT 500#define PIC_SIZE 100//一张小图片的边长#define ROWWINS_WIDTH/PIC_SIZE#define COL WINS_HEIGHT/PIC_SIZEvoid init();//初始化图像void welcome();//欢迎界面void jigsawmain();//游戏界面void Playgame();#endif

#include"jigsaw.h"IMAGE img[6];IMAGE picImg[ROW*COL];//存放图片的一维数组int map[ROW][COL];//位置二维数组void init()//初始化图像{srand((unsigned int)time(NULL));int i;initgraph(WINS_WIDTH, WINS_HEIGHT);for (i = 0; i < 6; i++){loadimage(&img[i], L"IMAGE", MAKEINTRESOURCE(101 + i), WINS_WIDTH, WINS_HEIGHT);//Sleep(1000);//putimage(0, 0, &img[i]);}}void welcome()//欢迎界面{int flag = 1;//背景图、文字int i, n = 0;IMAGE temp;for (i = 0; i < 10; i++){rotateimage(&temp, &img[0], n*(2 * PI - PI / 6));putimage(0, 0, &temp);Sleep(20);n++;}putimage(0, 0, &img[0]);settextstyle(80, 80, L"黑体");settextcolor(YELLOW);setbkmode(TRANSPARENT);outtextxy(250, 120, L"拼图");//播放音乐PlaySound(LPCWSTR(IDR_WAVE1), NULL, SND_RESOURCE | SND_LOOP | SND_ASYNC);//获取鼠标信息MOUSEMSG mg;while (1){mg = GetMouseMsg();settextstyle(50, 50, L"黑体");setbkmode(TRANSPARENT);settextcolor(YELLOW);outtextxy(275, 400, L"START");settextstyle(20, 20, L"黑体");outtextxy(345, 470, L"MUSIC");switch (mg.uMsg){case WM_MOUSEMOVE:{if (mg.x > 275 && mg.x<510 && mg.y>400 && mg.y < 450){settextstyle(50, 50, L"黑体");setbkmode(TRANSPARENT);settextcolor(RED);outtextxy(275, 400, L"START");}else if (mg.x>345 && mg.x<450 && mg.y>470 && mg.y < 485){settextstyle(20, 20, L"黑体");setbkmode(TRANSPARENT);settextcolor(RED);outtextxy(345, 470, L"MUSIC");}break;}case WM_LBUTTONDOWN:{if (mg.x > 275 && mg.x<510 && mg.y>400 && mg.y < 450){settextstyle(50, 50, L"黑体");setbkmode(TRANSPARENT);settextcolor(BLUE);outtextxy(275, 400, L"START");/*进入游戏画面*/jigsawmain();}else if (mg.x>345 && mg.x<450 && mg.y>470 && mg.y < 485){settextstyle(20, 20, L"黑体");setbkmode(TRANSPARENT);settextcolor(BLUE);outtextxy(345, 470, L"MUSIC");flag = !flag;/*实现音乐的播放暂停*/if (!flag){PlaySound(NULL, NULL,NULL);}else{PlaySound(LPCWSTR(IDR_WAVE1), NULL, SND_RESOURCE | SND_LOOP | SND_ASYNC);}}}}}}void jigsawinit(){int n = 0;cleardevice();/*切割图片*///设置一张随机图片作为工作区SetWorkingImage(&img[rand() % 5 + 1]);for (int i = 0; i < ROW; i++){for (int j = 0; j < COL; j++){getimage(&picImg[n], i*PIC_SIZE, j*PIC_SIZE, PIC_SIZE, PIC_SIZE);n++;}}SetWorkingImage();//回到图形界面loadimage(&picImg[ROW*COL - 1], L"IMAGE", MAKEINTRESOURCE(IDR_IMAGE7), PIC_SIZE, PIC_SIZE);}void DrawMap()//二维数组和图片绑定{int i = 0;int j = 0;int n = 0;//cleardevice();BeginBatchDraw();/*for (i = 0; i < ROW; i++){for (j = 0; j < COL; j++){map[i][j] = n;n++;}}*/for (i = 0; i < ROW; i++){for (j = 0; j < COL; j++){putimage(i *PIC_SIZE, j * PIC_SIZE, &picImg[map[i][j]]);}}EndBatchDraw();}void RandomArray(){int i, j;int m,t;int size = ROW*COL;int temp[ROW*COL];for (i = 0; i < ROW*COL; i++)temp[i] = i;for (i = 0; i < ROW; i++){for (j = 0; j < COL; j++){m = rand() % size;//随机得到一个下标map[i][j] = temp[m];//从选中的下标开始,把后面的元素往前面移动for (t = m; t < size - 1; t++){temp[t] = temp[t + 1];}size--;}}}void jigsawmain()//游戏界面{jigsawinit();RandomArray();while (1){DrawMap();Playgame();}/*乱序数组*//**/}void Playgame(){int row, col;//鼠标点下的行列int rowb, colb;//空白的行列int blankx, blanky;for (int i = 0; i < ROW; i++){for (int j = 0; j < COL; j++){if (map[i][j] == 39){rowb = i;colb = j;}}}MOUSEMSG  msg={ 0 };msg = GetMouseMsg();switch (msg.uMsg){case WM_LBUTTONDOWN://交换row = msg.x / PIC_SIZE;col = msg.y / PIC_SIZE;map[rowb][colb] = map[row][col];map[row][col] = 39;break;}}

/*应用程序*/#include"jigsaw.h"extern IMAGE img[6];int main(void){init();welcome();getch();return 0;}


0 0