扫雷游戏

Posted 赤云封天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了扫雷游戏相关的知识,希望对你有一定的参考价值。

http://exam.upc.edu.cn/problem.php?cid=1050&pid=1

题目描述

扫雷游戏是一款十分经典的单机小游戏。在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格。

现在给出n行m列的雷区中的地雷分布,要求计算出每个非地雷格周围的地雷格数。

注:一个格子的周围格子包括其上、下、左、右、左上、右上、左下、右下八个方向上与之直接相邻的格子。

输入

第一行是用一个空格隔开的两个整数n和m,分别表示雷区的行数和列数。

接下来n行,每行m个字符,描述了雷区中的地雷分布情况。字符’*’表示相应格子是地雷格,字符’?’表示相应格子是非地雷格。相邻字符之间无分隔符。

输出

输出包含n行,每行m个字符,描述整个雷区。用’*’表示地雷格,用周围的地雷个数表示非地雷格。相邻字符之间无分隔符。

样例输入

3 3

*??

???

?*?

样例输出

*10

221

1*1

没有中石油OJ的账号,所以代码有待验证!!!

 1 #include <stdio.h>
 2 int a[105][105];
 3 int main(){
 4     int m,n;    
 5     int i,j;
 6 
 7     while(scanf("%d%d",&m,&n) != EOF){
 8         for(i=0;i<=m;i++)
 9         for(j=0;j<=n;j++){
10             a[i][j]=0;
11         }
12         int cnt=1;
13         char ch;
14         int row,cow; 
15         while(cnt<=n*m){
16             ch=getchar();
17             if(ch==\n)
18                 continue;
19             if(ch==*){
20                 row=(cnt-1)/n+1;
21                 cow=(cnt-1)%n+1;
22                 a[row][cow]=-1;
23                 
24                 if(a[row][cow-1] != -1)
25                     a[row][cow-1]++;     //
26                 if(a[row][cow+1] != -1)
27                     a[row][cow+1]++;     //
28                 if(a[row-1][cow] != -1)
29                     a[row-1][cow]++;     //
30                 if(a[row+1][cow] != -1)
31                     a[row+1][cow]++;     //
32                 if(a[row-1][cow+1] != -1)//右上
33                     a[row-1][cow+1]++;
34                 if(a[row-1][cow-1] != -1)//左上
35                     a[row-1][cow-1]++;
36                 if(a[row+1][cow-1] != -1)//左下
37                     a[row+1][cow-1]++;
38                 if(a[row+1][cow+1] != -1)//右下
39                     a[row+1][cow+1]++;
40             }
41             cnt++;
42         }
43         for(i=1;i<=m;i++){
44             for(j=1;j<=n;j++){
45                 if(a[i][j]==-1)
46                     printf("*");
47                 if(a[i][j] != -1)
48                     printf("%d",a[i][j]);
49                 if(j == n)
50                     printf("\n");
51             }
52         }
53     }
54     return 0;
55 }

 

 

以上是关于扫雷游戏的主要内容,如果未能解决你的问题,请参考以下文章

C语言游戏超详解扫雷游戏完整版,细节满满!!

C语言游戏超详解扫雷游戏完整版,细节满满!!

C语言实现扫雷游戏(一步步教你如何写扫雷)

运用HTML+CSS+JavaScript实现扫雷游戏

运用HTML+CSS+JavaScript实现扫雷游戏

c语言初学者如何代码实现 扫雷 游戏