概述
#include <iostream>=
using namespace std;
const int nGridCount = 8;
int s_color[nGridCount][nGridCount] = {
34, 92, 26, 34, 93, 10, 34, 39,
10, 10, 34, 39, 15, 15, 39, 93,
15, 26, 26, 93, 93, 39, 10, 15,
26, 34, 39, 15, 39, 34, 34, 26,
34, 39, 39, 34, 52, 26, 10, 10,
26, 34, 10, 15, 52, 52, 15, 39,
93, 15, 26, 26, 15, 39, 93, 93,
34, 52, 93, 10, 93, 10, 39, 26
};
#define OUTPUT_PAIR(x1, y1, x2, y2) printf("(%d, %d), (%d, %d)n", x1, y1, x2, y2);
printf("%d %dn", s_color[x1][y1], s_color[x2][y2])
int main()
{
// 横向地检查一遍
for (int i = 0; i < nGridCount; i++)
{
for (int j = 0; j < nGridCount - 1; j++)
{
// xx | x | xx | x | x xx | xx x
// x | xx | x | xx | | 这些情况的处理
if ( s_color[i][j] == s_color[i][j+1])
{
// ?
// xx 检查后端这两个点
// ?
if (i - 1 >= 0 && j + 2 < nGridCount &&
s_color[i-1][j+2] == s_color[i][j])
{
OUTPUT_PAIR(i, j+2, i-1, j+2);
}
if (i + 1 < nGridCount && j + 2 < nGridCount &&
s_color[i+1][j+2] == s_color[i][j])
{
OUTPUT_PAIR(i, j+2, i+1, j+2);
}
// ?
// xx 检查前端这两个点
// ?
if (i - 1 >= 0 && j - 1 >= 0 &&
s_color[i-1][j-1] == s_color[i][j])
{
OUTPUT_PAIR(i, j-1, i-1, j-1);
}
if (i + 1 < nGridCount && j - 1 >= 0 &&
s_color[i+1][j-1] == s_color[i][j])
{
OUTPUT_PAIR(i, j-1, i+1, j-1);
}
// ? xx ? 检查这两个点
if (j - 2 >= 0 && s_color[i][j-2] == s_color[i][j])
{
OUTPUT_PAIR(i, j-2, i, j-1);
}
if (j + 3 < nGridCount && s_color[i][j+3] == s_color[i][j])
{
OUTPUT_PAIR(i, j+3, i, j+2);
}
}
}
// x x | x
// x | x x 这些情况的处理
for (int j = 0; j < nGridCount - 2; j++)
{
if (s_color[i][j] == s_color[i][j+2])
{
if (i - 1 >= 0 && s_color[i][j] == s_color[i-1][j+1])
{
OUTPUT_PAIR(i, j+1, i-1, j+1);
}
if (i + 1 < nGridCount && s_color[i][j] == s_color[i+1][j+1])
{
OUTPUT_PAIR(i, j+1, i+1, j+1);
}
}
}
}
puts("- - - - - - - - - - ");
// 再纵向地看一遍
for (int j = 0; j < nGridCount; j++)
{
for (int i = 0; i < nGridCount - 1; i++)
{
// x | x | x | x
// x | x | x | x 这些情况的处理
// x | x | x | x
if ( s_color[i][j] == s_color[i+1][j])
{
// x
// x 检查后端这两个点
// ? ?
if (j - 1 >= 0 && i + 2 < nGridCount &&
s_color[i+2][j-1] == s_color[i][j])
{
OUTPUT_PAIR(i+2, j, i+2, j-1);
}
if (j + 1 < nGridCount && i + 2 < nGridCount &&
s_color[i+2][j+1] == s_color[i][j])
{
OUTPUT_PAIR(i+2, j, i+2, j+1);
}
// ? ?
// x 检查前端这两个点
// x
if (j - 1 >= 0 && i - 1 >= 0 &&
s_color[i-1][j-1] == s_color[i][j])
{
OUTPUT_PAIR(i-1, j, i-1, j-1);
}
if (j + 1 < nGridCount && i - 1 >= 0 &&
s_color[i-1][j+1] == s_color[i][j])
{
OUTPUT_PAIR(i-1, j, i-1, j+1);
}
// ? xx ? 检查这两个点
if (i - 2 >= 0 && s_color[i-2][j] == s_color[i][j])
{
OUTPUT_PAIR(i-2, j, i-1, j);
}
if (i + 3 < nGridCount && s_color[i+3][j] == s_color[i][j])
{
OUTPUT_PAIR(i+3, j, i+2, j);
}
}
}
// x | x
// x | x 这些情况的处理
// x | x
for (int i = 0; i < nGridCount - 2; i++)
{
if (s_color[i][j] == s_color[i+2][j])
{
if (j - 1 >= 0 && s_color[i][j] == s_color[i+1][j-1])
{
OUTPUT_PAIR(i+1, j, i+1, j-1);
}
if (j + 1 < nGridCount && s_color[i][j] == s_color[i+1][j+1])
{
OUTPUT_PAIR(i+1, j, i+1, j+1);
}
}
}
}
cin >> ws;
}
最后
以上就是爱笑乌龟为你收集整理的对对碰(宝石迷阵 Bejeweled)游戏求解算法的全部内容,希望文章能够帮你解决对对碰(宝石迷阵 Bejeweled)游戏求解算法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复