#include <iostream>
#include <cstring>
using namespace std;
const int N = 30;
struct ChessBoard
{
// C++11支持在类定义的时候对属性赋初值(此处只是声明类,只有在类的实例调用构造函数时,才为该实例分配内存)
int val = 0;
bool deleted = false; // 标记是否可以消除
// ChessBoard() {
// val = 0;
// deleted = false;
// }
} chessboard[N + 4][N + 4]; // 上下左右各添加两行
void inputData(int n, int m)
{
// 扩展的棋盘
for (int i = 0 + 2; i < n + 2; i++)
{
for (int j = 0 + 2; j < m + 2; j++)
{
cin >> chessboard[i][j].val;
}
}
}
// 判断棋盘上的对应位置的棋子能否被消除
void updateFlag(int n, int m)
{
for (int i = 0 + 2; i < n + 2; i++)
{
for (int j = 0 + 2; j < m + 2; j++)
{
// cout << chessboard[i][j].val << chessboard[i - 1][j].val << chessboard[i - 1][j].val;
bool vertical_1 = (chessboard[i][j].val == chessboard[i - 1][j].val) && (chessboard[i][j].val == chessboard[i - 2][j].val);
bool vertical_2 = (chessboard[i][j].val == chessboard[i + 1][j].val) && (chessboard[i][j].val == chessboard[i + 2][j].val);
bool vertical_3 = (chessboard[i][j].val == chessboard[i + 1][j].val) && (chessboard[i][j].val == chessboard[i - 1][j].val);
bool horizon_1 = (chessboard[i][j].val == chessboard[i][j - 1].val) && (chessboard[i][j].val == chessboard[i][j - 2].val);
bool horizon_2 = (chessboard[i][j].val == chessboard[i][j + 1].val) && (chessboard[i][j].val == chessboard[i][j + 2].val);
bool horizon_3 = (chessboard[i][j].val == chessboard[i][j + 1].val) && (chessboard[i][j].val == chessboard[i][j - 1].val);
if (vertical_1 || vertical_2 || vertical_3 || horizon_1 || horizon_2 || horizon_3)
{
chessboard[i][j].deleted = true;
}
}
}
}
void updateData(int n, int m)
{
for (int i = 0 + 2; i < n + 2; i++)
{
for (int j = 0 + 2; j < m + 2; j++)
{
if (chessboard[i][j].deleted)
{
chessboard[i][j].val = 0;
}
}
}
}
void printData(int n, int m)
{
for (int i = 0 + 2; i < n + 2; i++)
{
for (int j = 0 + 2; j < m + 2; j++)
{
cout << chessboard[i][j].val << " ";
}
cout << endl;
}
}
int main(int argc, char const *argv[])
{
int n, m;
cin >> n >> m;
inputData(n, m);
updateFlag(n, m);
updateData(n, m);
printData(n, m);
return 0;
}
201512-2 消除类游戏
最新推荐文章于 2023-12-26 18:52:25 发布