扫雷的简单实现

本文详细介绍了使用C#和C语言实现扫雷游戏的步骤,包括棋盘创建、设置和排除雷区、判断输赢的逻辑。通过11x11的棋盘避免边界问题,用两个数组分别存储雷和显示状态。文章还分享了完整的代码实现。
摘要由CSDN通过智能技术生成

我提示:小白的扫雷实现

文章目录


前言

扫雷和之前的三子琪的原理相似,所以写起来会相对起来方便一点


提示:以下是本篇文章正文内容,下面案例可供参考

一、棋盘的创建

1、原理解释

我们以9*9的棋盘为例子

问题一:处理边界扫雷

         我们点击一个地方,显示的数字是以该数字周围八个格子里有几个雷,比如周围八个格子中有一个雷,那么你点击的那个数字会显示 “1”;

        但是如果我们的棋盘在做判断的时候,如果坐标是边界的话,那么可能还会导致越界访问,或者需要额外的函数来判断是不是该坐标处于边界的状态,这样写起来比较麻烦,所以我们创建数组的时候可以创建11*11的格子, 最外边一层不放雷就好了。

问题二:如何每次打印数组的时候只打印数字,不打印雷

        如果我们将雷随机放在了棋盘中,我们每下一步的时候都会再次打印改变后的数组,那么我们打印的数组可能会将放置好的雷再次打印出来。

        所以我们创建两个数组,一个数组放置雷,一个数组展示给玩家。

2、初始化数组

        与之前的三子棋一样,我们写一个初始化棋盘的函数

        我们将埋雷的 mind数组全部初始化为0,每次放置一个雷的时候 我们将0改成1

        我们再将展示的 show数组全部初始化为*,每次输入坐标的时候将* 改成周围八个格子所含雷的数量。

        并且提前定义

#define ROW 9
#define ROWS ROW+2
#define COL 9
#define COLS COL+2
	char mind[ROWS][COLS] = { 0 };
	char show[ROWS][COLS] = { 0 };
	initboard(mind, ROWS, COLS, '0');
	initboard(show, ROWS, COLS, '*');



    void initboard(char board[ROWS][COLS], int rows, int cols,char set)
{
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值