拼图C语言源码

拼图

如下:

#include<graphics.h>//主要图形库
#include<conio.h>//_getch()的头文件
#include<time.h>//产生随机数函数的库
#include<mmsystem.h>//多媒体设备接口

#pragma comment(lib,”winmm.lib”)//多媒体设备接口库文件

#define WIN_HEIGHT 600//窗口宽
#define WIN_WIDTH 600//窗口高
#define PICSIZE 100 //单张图片宽度
#define X (WIN_HEIGHT/PICSIZE) //X向图片数量
#define Y (WIN_WIDTH/PICSIZE) //Y向图片数量

VOID InitGame();//游戏初始化
VOID Draw();//贴图
VOID PlayGame();//玩游戏

IMAGE bkimg;//背景图片
IMAGE heikuai;//黑块图片
IMAGE Img[X*Y];//存放小块图片的数组
int map[X][Y]={0};//图片数组坐标

int main()
{
InitGame();
while(1)
{
Draw();
PlayGame();
}
_getch();
return 0;
}

//游戏初始化
VOID InitGame()
{
initgraph(WIN_HEIGHT,WIN_WIDTH);//初始化一个窗口
PlaySound(L”han.wav”,NULL,SND_LOOP|SND_FILENAME|SND_ASYNC|SND_NODEFAULT);//播放音乐
srand((unsigned int)time(NULL));//产生随机数
loadimage(&bkimg,TEXT(“JDK.bmp”),WIN_WIDTH,WIN_WIDTH);//加载背景图片
//把图片切成小块
int i,j;
int cnt=0;
SetWorkingImage(&bkimg);//设置当前工作区在bkimg
for(i=0;i<X;i++)
{
for(j=0;j<Y;j++)
{
getimage(&Img[cnt++],i*PICSIZE,j*PICSIZE,PICSIZE,PICSIZE);
}
}
SetWorkingImage(NULL);//设置当前工作区在默认

loadimage(&Img[X*Y-1],TEXT(“heikuai.bmp”),PICSIZE,PICSIZE);//加载黑块图片

//初始化图片数组坐标中的值
cnt=0;
for(i=0;i<X;i++)
{
for(j=0;j<Y;j++)
{
map[i][j]=cnt++;//0到X*Y-1个数
}
}
//打乱小图片的排列顺序
int x1,y1,x2,y2,swap;
for(i=0;i<X*Y*X;i++)//X*Y*X为打乱次数,不一定为X*Y*X,只要比X*Y大很多就可以
{
x1=rand()%X;
y1=rand()%Y;
x2=rand()%X;
y2=rand()%Y;
swap=map[x1][y1];
map[x1][y1]=map[x2][y2];
map[x2][y2]=swap;
}
}

//贴图
VOID Draw()
{
int i,j;
for(i=0;i<X;i++)
{
for(j=0;j<Y;j++)
{
putimage(i*PICSIZE,j*PICSIZE,&Img[map[i][j]]);
}
}
}

//玩游戏
VOID PlayGame()
{
int BlackX,BlackY;
for(int i=0;i<X;i++)
{
for(int j=0;j<Y;j++)
{
if(map[i][j]==X*Y-1)
{
BlackX=i;
BlackY=j;
}
}
}
int HitX,HitY;
MOUSEMSG msg={0};//鼠标消息
msg=GetMouseMsg();//获取鼠标消息
switch(msg.uMsg)
{
case WM_LBUTTONUP://鼠标左键抬起
HitX=msg.x/PICSIZE;
HitY=msg.y/PICSIZE;
//交换黑色图片的值
if(HitX==BlackX&&HitY==BlackY-1||
HitX==BlackX&&HitY==BlackY+1||
HitX==BlackX-1&&HitY==BlackY||
HitX==BlackX+1&&HitY==BlackY)//只有上下左右的图片才能互换
{
map[BlackX][BlackY]=map[HitX][HitY];
map[HitX][HitY]=X*Y-1;
}
break;
}
}


C
C
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论