C语言实现简单扫雷游戏

本文介绍了如何使用二维数组和ASCII码设计扫雷游戏,包括规则解释、棋盘设计、代码示例,从初始化棋盘、布雷到排雷的操作过程详细阐述。
摘要由CSDN通过智能技术生成

一、游戏概述 

 扫雷游戏如下:规则大致是,打开一个格子,每个格子的数字代表已该格子为中心,四周存在雷的个数,如果所打开的格子是“雷”,则输。

二、想法设计 

1,以二维数组的形式来表示该区域,将该区域看作是棋盘。

2,接下来就是对棋盘的设计,我们用‘1’来表示“雷”,‘0’表示不是雷。

3,还需要另外一个棋盘,来表示某个格子处周围“雷”的个数。这时,用数字来表示“雷”的个数的意义就体现出来,当求某个格子周围“雷”的个数时,直接将周围数字加起来就可以了。

4,棋盘的设计,考虑到要将格子周围数加起来,为了防止再加的时候出现越界,所以对数组扩大一圈,扫雷的区域:行ROW,列COL,而设计的是:行ROWS,列COLS。

ROWS=ROW+2,COLS=COL+2;

三、代码展示

1,先拟定一个菜单,让用户进行选择:开始游戏还是退出游戏。用一个do...while循环实现 

 2,该部分完成后,开始设计游戏内容。

这里用一个自定义函数Initboard初始化棋盘。注:棋盘元素均时字符形式

 

 定义一个mine字符数组用来表示存放雷的棋盘,show数组用来表示排查出某个格子周围有几个雷的信息。再对两个数组初始化,将mine初始化为‘0’(0表示不是雷),将show数组初始化为‘*’,方便后面存放排查出雷的信息。

3,棋盘初始化之后,肯定要先打印出来,依然使用函数的形式处理。

 

 这样棋盘打印出的结果如下:

但为了方便,我们可以顺便把棋盘的行号和列号打印出来。代码可以进行如下改动:

4,棋盘大致已经形成,接下来需要对棋盘进行布雷,以‘1’表示雷。

 

 

count表示需要布置雷的个数。 

其中通过rand函数产生随机数,从而产生随机坐标(x,y)进行布雷,那么需要在main函数中加上

srand((unsigned int)time(NULL)),表示以时间戳为种子产生随机数。头文件中需包括

#include <time.h> 和#include <stdlib.h>

5,最后需要进行排雷操作

 

注:字符‘0’ 的ASSIC码值是48,‘1’的ASSIC码值是49,‘2’的ASSIC码值是50......

有‘1’-‘0’=1  ‘2’-‘0’=2 ......

因此再求周围雷的个数时,将周围8个字符加起来的ASSIC码值减去8*‘0’的ASSIC码值即可。

6,最后实践如下 

 

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值