编程学习网 > 编程语言 > C/C++开发 > C语言实现消除类游戏
2022
09-29

C语言实现消除类游戏


本关任务:消除类游戏是一种益智游戏,其核心规则是将一定的彼此相邻的相同元素配对消除。现给定一个n行m列的棋盘,棋盘中的每一个方格上放着一个棋子,每个棋子都有颜色,编号用1~9表示。当一行或一列上有连续3个或3个以上同色棋子时,这些棋子都被同时消除,对应的方格用0表示,请输出经过消除后的棋盘。例如,给定棋盘为:


4 4 3 1 4

3 1 1 1 1

4 3 4 1 2

4 4 2 2 2

消除后为:

4 4 3 0 4

3 0 0 0 0

4 3 4 0 2

4 4 0 0 0

示例

输入(输入的前两个数字为棋盘的行数和列数):

4 5

4 4 3 1 4

3 1 1 1 1

4 3 4 1 2

4 4 2 2 2

输出(同行每个元素之间以空格分隔):

4 4 3 0 4

3 0 0 0 0

4 3 4 0 2

4 4 0 0 0

#include<stdio.h>
#define N 30
int n, m;
//用b数组保存a数组哪些位置到时清0
int a[N][N], b[N][N];
void machining(int[][N], int[][N], int, int);
void input();
void output();
 
int main()
{
input();
machining(a, b, n, m);
output();
return 0;
}
void machining(int a[][N], int b[][N], int n, int m)
{
int i, j;
for (i = 0; i < n; i++)
for (j = 0; j < m - 2; j++)
if (a[i][j] == a[i][j + 1] && a[i][j] == a[i][j + 2]) //行上有连续的则标记
b[i][j] = b[i][j + 1] = b[i][j + 2] = 1;
 


for (i = 0; i < n - 2; i++)
for (j = 0; j < m; j++)
if (a[i][j] == a[i + 1][j] && a[i][j] == a[i + 2][j])//列上有连续的则标记
b[i][j] = b[i + 1][j] = b[i + 2][j] = 1;
 
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
if (b[i][j] == 1) //根本b数组做过标识的位置把a对应位置写为0
a[i][j] = 0;

 
}
void input()
{
int i, j;
scanf("%d %d", &n, &m);
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
scanf("%d", &a[i][j]);
}
 
void output() {
int i, j;
printf("\n");
 
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
printf("%d ", a[i][j]);
printf("\n");
}
}
以上就是“C语言实现消除类游戏”的详细内容,想要了解更多C语言教程欢迎持续关注编程学习网

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取