扫雷游戏 (15 分)

玩过扫雷游的朋友都知道,该游戏的目标是找出一个nm矩阵内的所有的地雷,在本题中,你需要为每一个单元格统计出它周围地雷的个数,每个单元格最多有8个相邻单元格,如下图,44 的格子里,用“*”表示雷,用“^” 表示没有雷。

*^^^

^^^^

^*^^

^^^^

计算后的输出结果为:

100 2210 110 1110

输入格式:

输入包含若干个矩阵,对于每一个矩阵,第一行包含两个数M和N,分别表示该矩阵的行数和列数(0<N,M<100),接下来N行包含M个字符,就是该矩阵,用“*”表示地雷,用“^”表示空白。当N=M=0时,表示结束,不用处理该行。

输出格式:

对于每一个矩阵,首先在单独一行打印出矩阵序号:Field #X: 其中X是矩阵的编号,从1开始编号,接下来N行中,读入的“^”用该位置周围的地雷数目所代替,地雷处,仍用“*”表示。输出相邻的两个矩阵之间,空一行。

输入样例:

在这里给出一组输入。例如:

4 4
*^^^
^^^^
^*^^
^^^^
8 8
*^^^*^^^
*^****^^
^*^^**^^
^^**^**^
^*^^**^^
*^^^*^^^
^^**^**^
^*^^**^^
0 0

输出样例:

在这里给出相应的输出。例如:

Field #1:
*100
2210
1*10
1110Field #2:
*324*310
*4****20
2*56**41
23**6**1
2*34**31
*334*531
23**5**1
1*33**31

思路:

逐个扫描,判断上下左右八个格子有没有“ * ”,统计“ * ”数,替换“ ^ ”, 直接输出。

/*扫雷游戏*/
#include <bits/stdc++.h>
using namespace std;
int n, m;
char field[101][101];
bool judge(int x, int y){   //判断 *  if(x < 0 || y < 0 || x >= m || y >= n){ //判断坐标是否在field[][]内 return false;}if(field[x][y] == '*')return true;elsereturn false;
}
int sxzy(int x, int y){     //逐个判断,累加 * 数 int sum = 0;if(judge(x - 1, y))sum++;if(judge(x + 1, y))sum++;if(judge(x - 1, y - 1))sum++;if(judge(x + 1, y + 1))sum++;if(judge(x - 1, y + 1))sum++;if(judge(x + 1, y - 1))sum++;if(judge(x, y - 1))sum++;if(judge(x, y + 1))sum++;return sum;
}
int main (void){int cnt = 0;while(scanf("%d %d", &n, &m) != EOF){if(n == 0 && m == 0)break;for(int i = 0; i < m; ++i){for(int j = 0; j < n; ++j){cin >> field[i][j];}}for(int i = 0; i < m; ++i){for(int j = 0; j < n; ++j){if(field[i][j] != '*')field[i][j] = sxzy(i, j) + '0';  //转换char型变量 }}cnt++;cout << "Field #" << cnt << ":" <<endl;for(int i = 0; i < m; ++i){for(int j = 0; j < n; ++j){cout << field[i][j];}cout << endl;}cout << endl;   //每个样例结束,有一个空行 }return 0;
}

扫雷游戏 (15 分)相关推荐

  1. 实验4-1-9 猜数字游戏 (15 分)

    实验4-1-9 猜数字游戏 (15 分) 猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了("To ...

  2. 扫雷游戏 (20 分)

    无聊的老 H 最近迷上了扫雷游戏,但是真正的扫雷游戏老 H 还不会玩,只能尝试更为简单 且纯粹依靠运气的扫雷游戏 简易扫雷游戏规则: 给定扫雷的游戏棋盘是一个 N * N 的矩阵,且棋盘中只有 X 和 ...

  3. 练习4-6 猜数字游戏 (15分) 代码比较长,新手上路请多关照

    猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了("Too big"),还是小了(&qu ...

  4. PTA L1-093 猜帽子游戏 (15 分)

    宝宝们在一起玩一个猜帽子游戏.每人头上被扣了一顶帽子,有的是黑色的,有的是黄色的.每个人可以看到别人头上的帽子,但是看不到自己的.游戏开始后,每个人可以猜自己头上的帽子是什么颜色,或者可以弃权不猜.如 ...

  5. c语言扫雷游戏计时功能_做游戏,学编程(C语言) 20 扫雷

    应 @姑娘的衣扣 同学的要求,分享16级同学大一上学期实现的扫雷游戏.分步骤代码.可执行程序.录屏效果可以从百度网盘下载:http://pan.baidu.com/s/1gf6AHKv 开局画面: 胜 ...

  6. 详解C语言实现扫雷游戏

    目录 一.摘要 二.文件配置 三.功能实现 1 开始游戏界面 2 游戏主体game() 2.1 初始化 2.2 打印信息 2.3 设置地雷 2.4 排查地雷 2.4.1 统计该坐标周围八个坐标的雷的个 ...

  7. 编程之美——4.11 扫雷游戏的概率

    http://blog.csdn.net/fivedoumi/article/details/7705073 题目说, 一局16×16的扫雷游戏刚开始, 只翻开了两格, 分别显示数字1和2, 如下图所 ...

  8. c语言程序设计扫雷游戏实验报告,C语言程序设计扫雷游戏实验报告.pdf

    中南大学 程序设计基础实践报告 题 目 设计一个和window系统类似的小游戏[挖地雷] 学生姓名 张兰兰 学 院 信息科学与工程学院 专业班级 物联网工程1301班 完成时间 2014.1 < ...

  9. Java Swing扫雷游戏demo分享

    好多年前写过简略的扫雷游戏,模拟windows的. 后来由于多次搬迁环境,弄丢了,遗憾不已啊. 于是趁着这两年还在编程的道路上,趁热再次编写了一次,同时也扩展了功能,更接近windows的扫雷. 此次 ...

最新文章

  1. 如何通过在ViewPager中用手指轻扫来禁用分页,但是仍然能够以编程方式轻扫?
  2. 对 makefile 中 .NOTPARALLE 的学习体会
  3. 【转】Ubuntu 安装截图工具Shutter,并设置快捷键 Ctrl+Alt+A
  4. Unity3d之AssetBundle打包与读取
  5. 样本不均衡、长尾分布问题的方法整理(文献+代码)
  6. 在位运算中_Java常见的运算符(下)
  7. python从大到小排序_python作业:用嵌套的列表存储学生成绩数据,并编程完成如下操作...
  8. php tomcat配置_php+tomcat 配置运行环境
  9. 单片机ADC采样算法----一阶低通滤波
  10. 《CATIA V5 从入门到精通(第二版)》——2.5 草绘可视化设置(Visualization)
  11. AS使用NDK Cmake方式依赖第三方库注意事项
  12. OCP-1Z0-042-V12.39-47题
  13. AES-GCM加密算法
  14. 高德地图No implementation found for long com.autonavi.amap.mapcore.MapCore
  15. Scratch二次开发7:Scratch3.0作品的生命周期(各类状态)分析讲解
  16. 苏宁小店上线咖啡业务,成为国内O2O社区便利店的创领者!
  17. 【coq】函数语言设计 笔记 05 -tactics
  18. 二维码门禁(基于微信小程序)
  19. 第3章 随机点名器案例
  20. ASM磁盘介绍及PIGOSS BSM支持ASM磁盘监控

热门文章

  1. 整理:状态机的C语言编程
  2. 醋泡三宝可以吃出长寿
  3. GD GD5F4GQ6UEYIGR 存储IC
  4. python基础——数据可视化
  5. 计算机常见的应用系统,计算机常见的系统软件
  6. 国际及国内计算机界核心期刊和会议
  7. 丽江文化旅游学院易腾创想Java实训第14组总结
  8. latex如何绘制标准三线表 lllegal charactor in array arg 如何合并单元格?
  9. JS实现飞行的小鸟游戏-简易版
  10. 看这篇就够了——ubuntu系统中的cuda cudnn cudatookit及pytorch使用