美文网首页C语言学习程序员我爱编程
C语言拼图游戏,C语言视频,C语言零基础学习,C语言视频与源码

C语言拼图游戏,C语言视频,C语言零基础学习,C语言视频与源码

作者: C语言基础 | 来源:发表于2017-12-31 14:33 被阅读56次

C语言视频,C语言速成,C语言拼图游戏


C语言拼图游戏零基础视频教程

完整源码:

#include

#include

#include

#define WINDOW_WIDTH   600//窗口的宽

#define WINDOW_HEIGHT  500//窗口的高

#define PIC_SIZE   100//要把整张图片分成100*100的大小

#define ROW          WINDOW_WIDTH/ PIC_SIZE

#define COL          WINDOW_HEIGHT/PIC_SIZE

IMAGE  img;//定义一个存放图片的变量

IMAGE  picImg[ROW*COL];

int map[ROW][COL];

void RandArry()

{

int temp[ROW*COL];

for (int i = 0; i < ROW*COL; i++)

{

temp[i] = i;

}

int num = 0;//一维数组的下标

int maxSize = ROW*COL;//temp数组的大小

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

{

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

{

num = rand() % maxSize;

map[i][j] = temp[num];

//从选中的下标开始,把后面的元素移动一个单位

for (int tep = num; tep < maxSize - 1; tep++)

{

temp[tep] = temp[tep + 1];

}

maxSize--;

}

}

}

void GameInit()

{

RandArry();

loadimage(&img, L"t.jpg", WINDOW_WIDTH, WINDOW_HEIGHT);

//putimage(0, 0, &img);

//切割图片

SetWorkingImage(&img);

int n = 0;

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(NULL);

//读取一张白色图片加载到最后一张

loadimage(&picImg[ROW*COL - 1], L"ti.jpg", PIC_SIZE, PIC_SIZE);

}

//绘制界面

void DrawMap()

{

//把二维数组的元素跟图片绑定在一起

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

{

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

{

putimage(i*PIC_SIZE, j*PIC_SIZE, &picImg[map[i][j]]);

}

}

}

//游戏规则

void PlayGame()

{

int row, col;//鼠标点击的图片对应的数组下标

int blankR, blankC;//空白图片的对应的数组下标

int blankX, blankY;

MOUSEMSG msg = { 0 };

//1.鼠标点下去时 确定鼠标点的是哪张图片 确定空白图片的位置

//2.点中的图片是不是和空白图片是相邻的

//3.交换二维数组的这两个元素

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

{

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

{

if (map[i][j] == ROW*COL - 1)

{

blankR = i;

blankC = j;

}

}

}

blankX = blankR*PIC_SIZE;

blankY = blankC*PIC_SIZE;

//确定鼠标点击图片的下标

msg = GetMouseMsg();

switch (msg.uMsg)

{

case WM_LBUTTONDOWN:

row = msg.x / PIC_SIZE;

col = msg.y / PIC_SIZE;

if ((msg.x > blankX&&msg.xblankY - PIC_SIZE&&msg.y

(msg.x>blankX - PIC_SIZE&&msg.xblankY &&msg.y < blankY + PIC_SIZE)||

(msg.x>blankX + PIC_SIZE&&msg.xblankY &&msg.y < blankY + PIC_SIZE) ||

(msg.x>blankX &&msg.xblankY + PIC_SIZE &&msg.y < blankY + 2*PIC_SIZE))

{

map[blankR][blankC] = map[row][col];

map[row][col] = ROW*COL - 1;

}

break;

default:

break;

}

}

int main()

{

initgraph(WINDOW_WIDTH, WINDOW_HEIGHT);//初始化一个界面

srand((unsigned)time(NULL));//种下随机因子

GameInit();

while (1)

{

DrawMap();

PlayGame();

}

getchar();

closegraph();

return 0;

}

相关文章

网友评论

    本文标题:C语言拼图游戏,C语言视频,C语言零基础学习,C语言视频与源码

    本文链接:https://www.haomeiwen.com/subject/cexagxtx.html