美女拼图游戏必备技能,切割图片思想解析,自动切图片由此开始

美女拼图游戏必备技能,切割图片思想解析,自动切图片由此开始

首页休闲益智拼图循环更新时间:2024-05-09
前言

大家好,我就是智慧与美貌并重,英雄与狭义的化身的小编大人,几天授课,发现同学们对拼图游戏的切图理解不是很清楚,在这里就切图核心算法思想做一个讲解,希望对大家做拼图游戏有帮助。

切图主要思路

二维数组描述地图

二维数组可以描述一个平面,因此我们采用特殊数字表示特殊形状或者图片,这样就可以把整个游戏的地图给绘制出来,主要问题是窗口坐标与数组的下标同步问题。根据数组填坑过程如下图:

二维数组随机初始化

拼图游戏当中首先是用0-15表示图片的16个模块,首要做的是随机打乱二维数组的顺序,主要算法是采用一维数组给二维数组初始化,随机差生一维数组的下标,拿出当前下标的值给二维数组进行初始化,然后调整一维数组防止产生重复的值。

1.首先产生如下数组

int array1D[16]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; int array2D[4][4]={0};

2.随机产生一维数组下标

int length=15; srand((unsigned int)time(NULL)); int pos=rand()%length;

3.一维数组给二维数组进行初始化

array2D[i][j]=array1D[pos] 此处省略for循环嵌套

4.调整一维数组

for(int k=pos;k<length;k ) { array1D[k]=array1D[k 1]; //覆盖掉用掉的值 } length--; //数组长度-1 防止产生重复的内容

算法示意图:

根据数组的值拿相应序号的图片

准备操作已结束,接着只需要按照数组中的值去一张完整的图片拿相应序号的那块照片贴到窗口上即可。

部分代码

void loadResource() { srand((unsigned int)time(NULL)); int length = 15; int pos = 0; int i, j; for (i =0 ; i < 15; i ) { array1D[i] = i; } for (i = 0; i < 4; i ) { for (j = 0; j < 4; j ) { if (i == 3 && j == 3) { array2D[i][j] = 15; //最后位置永远都是白块 break; } pos = rand() % length; array2D[i][j] = array1D[pos]; for (int k = pos; k < length; k ) { array1D[k] = array1D[k 1]; } length--; } if (i == 3 && j == 3) { array2D[i][j] = 15; //最后位置永远都是白块 break; } } loadimage(&img, "Love.jpg", 800, 800); loadimage(&blank, "blank.jpg", 200, 200); } void drawMap() { for (int i = 0; i < 4; i ) { for (int j = 0; j < 4; j ) { int x = j * 200; //j=x/200 int y = i * 200; //i=y/200 switch (array2D[i][j]) { case 0: case 1: case 2: case 3: putimage(x, y, 200,200,&img, array2D[i][j] * 200, 0); break; case 4: case 5: case 6: case 7: putimage(x, y, 200, 200, &img, (array2D[i][j]-4) * 200, 200); break; case 8: case 9: case 10: case 11: putimage(x, y, 200, 200, &img, (array2D[i][j] - 8) * 200, 400); break; case 12: case 13: case 14: putimage(x, y, 200, 200, &img, (array2D[i][j] - 12) * 200, 600); break; case 15: putimage(x, y, &blank); break; } } } }

效果图:

好了今天的内容到这里就结束了,完整拼图游戏视频教学关注学习,私信 “代码”可获取相关视频与源码。

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved