扫雷小游戏:第一步不被炸死,并且棋盘可以展开

本文介绍了扫雷游戏的实现思路,包括使用两个棋盘(设计者棋盘和玩家棋盘),布雷和扫雷过程。在开始时,若首次点击到雷,则不会立即失败,而是将雷标记为0并找一个空位标记为1。游戏功能包括初始化棋盘、打印、布雷、获取相邻雷数、无雷区域展开、安全启动、胜负判断和排雷。文章还提到了关键的`game.h`、`test.c`和`game.c`源文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

扫雷的实现思路

首先我们需要两个棋盘,设计者棋盘和玩家棋盘。打印棋盘后要在棋盘上布雷,这里采用的是九乘九的棋盘放置十个雷。棋盘存储信息用由二维数组来完成,让这个二维数组开始先全部存储0,然后把要布置雷的地方改为1,用来区分雷和非雷。布完雷后开始扫雷,如果第一次输入的坐标处是雷,为了实现第一次不炸死,把这个位置的1改为0,但此时雷的总数就减少一个,需要寻找一个字符为0的坐标将其改成1以维持雷的总数不变;如果第一次输入的坐标不是雷,程序需要实现两个功能,在玩家输入一个周围都没有雷的坐标时用递归展开为空格,在玩家输入一个周围有雷的坐标时显示周围雷的个数。扫完雷后我们需要判断输赢,切忌不要用空格数来判断,因为不是所有没有雷的的地方都显示为空格,有一部分无雷的坐标会显示周围的雷数,空格的个数无法确定,所以要用雷的个数来判断,因为雷的个数是永远不变的。有雷的地方永远显示为’*’,所以玩家扫完所有雷的时只要判断雷的个数是否为10,个数为10时玩家扫雷成功,游戏结束。

需要哪些功能的函数

1.初始化棋盘

扫雷规模为九成九的棋盘布置十个雷,但是为了使玩家能清晰明了的输入坐标,需要给棋盘的行列标上数字,所以实际上我们需要的是一个十一乘十一的棋盘。 

2.打印棋盘

3.布置所有的雷

4.获取这个坐标周围的雷数

5.展开一个周围没有雷的坐标

6.第一次不会炸死

7.判断输赢

8.排雷

game.h

#ifndef __GAME_H__
#define __GAME_H__
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<time.h>
#include<string.h>
#include<stdlib.h>
#define EASY_COUNT 10

#define ROW 9
#define COL 9
#define ROWS ROW+2
#define COLS COL+2

void InitBoard(char board[ROWS][COLS], int rows, int cols,char set);
void DisplayBoard(char board[ROWS][COLS],int row,int col);
void SetMine(char board[ROWS][COLS], int row, int col);
void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);
void SafeM
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值