#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <time.h>
#include <easyx.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")
#define ROW 4
#define COL 4
int map[ROW][COL];
IMAGE img [ROW][COL];
IMAGE* pimg = (IMAGE*)img;
IMAGE img_total;
void gameInit()
{
int cnt = 0;
for (int i=0;i<ROW;i++)
{
for (int j=0;j<COL;j++)
{
map[i][j] = cnt++;
}
}
for (int i=0;i<100;i++)
{
int r1, c1;
int r2, c2;
r1 = rand() % ROW;
c1 = rand() % COL;
r2 = rand() % ROW;
c2 = rand() % COL;
int t = map[r1][c1];
map[r1][c1] = map[r2][c2];
map[r2][c2] = t;
}
loadimage(&img_total, _T("妮寇.jpg"), getwidth(), getheight());
SetWorkingImage(&img_total);
for (int i=0;i<ROW;i++)
{
for (int j=0;j<COL;j++)
{
getimage(&img[i][j], j * 100, i * 100, 100, 100);
}
}
SetWorkingImage();
loadimage(&img[ROW - 1][COL - 1], _T("white.png"), 100, 100);
}
void gameDraw()
{
for (int i=0;i<ROW;i++)
{
for (int j=0;j<COL;j++)
{
putimage(j * 100, i * 100, &pimg[map[i][j]]);
}
}
for (int i=0;i<=ROW;i++)
{
line(0, i * 100, getwidth(), i * 100);
line(i*100,0,i*100,getheight());
}
}
void showmap()
{
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
printf("%2d ", map[i][j]);
}
printf("\n");
}
}
void MouseEvent()
{
ExMessage msg = getmessage();
if (msg.message == WM_LBUTTONDOWN)
{
int r=msg.y/100;
int c=msg.x/100;
int wr = 0;
int wc = 0;
for (int i=0;i<ROW;i++)
{
for (int j=0;j<COL;j++)
{
if (map[i][j] == 15)
{
wr = i;
wc = j;
}
}
}
if (r == wr + 1 && c == wc||
r== wr -1 && c==wc ||
r==wr && c==wc+1 ||
r==wr && c==wc-1
)
{
int t = map[r][c];
map[r][c] = map[wr][wc];
map[wr][wc] = t;
}
}
else if (msg.message == WM_RBUTTONDOWN)
{
int* p = (int*)map;
for (int i=0;i<ROW*COL-1;i++)
{
for (int j=0;j<ROW*COL-1-i;j++)
{
if (p[j] > p[j + 1])
{
int t = p[j];
p[j] = p[j + 1];
p[j + 1] = t;
}
}
}
}
}
bool judge()
{
int* p = (int*)map;
for (int i=0;i<ROW*COL-1;i++)
{
if (p[i] > p[i + 1])
return false;
}
return true;
}
int main()
{
srand((unsigned int)time(NULL));
initgraph(400, 400,EX_SHOWCONSOLE);
mciSendString("open aaa.mp3", NULL, 0, NULL);
mciSendString("play aaa.mp3", NULL, 0, NULL);
gameInit();
showmap();
BeginBatchDraw();
while (true)
{
gameDraw();
FlushBatchDraw();
if (judge())
{
MessageBox(GetHWnd(), _T("恭喜你,过关鸟!!!"), _T("boom"), MB_OK);
exit(0);
}
MouseEvent();
}
EndBatchDraw();
getchar();
return 0;
}