C语言小游戏之扫雷完整版

本文详细介绍了如何使用C语言实现扫雷游戏,包括初始化雷盘、打印雷盘、随机布置雷、玩家排雷、防止第一次被炸死、统计周围雷数、递归拓展区域和标记雷等功能。通过代码实现,玩家可以在控制台进行扫雷游戏,锻炼思维能力。
摘要由CSDN通过智能技术生成

一.游戏介绍

在这里插入图片描述

看到这张图片,相信很多小伙伴都非常熟悉,很多小伙伴都玩过扫雷这个小游戏,扫雷是一款益智类游戏,在放松娱乐的同时可以锻炼各位小伙伴的智商。

游戏规则:如上图,玩家需要在不被炸死的前提下找出图中雷的位置,若能找出所有雷,则游戏胜利,若不幸踩到雷则被炸死。

注:先介绍程序实现的主要功能,后文会有完整代码

二.游戏步骤及实现的功能

(一) 游戏步骤

  1. 程序开始执行时玩家需要选择是否开始游戏,输入1则游戏开始,输入0则退出游戏
    在这里插入图片描述
  2. show地图出现后玩家开始选择进行选择,输入1则开始选择区域,输入2则可以标记自己认为是雷的区域,输入3则可以取消原先被标记的区域
    在这里插入图片描述
  3. 当所有非雷区域全部被排出来后则游戏胜利
//遍历show地图,以便判断最后的胜利
int Travel(char show[ROWS][COLS], int row, int col)
{
   
	int i = 0;
	int j = 0;
	int win = 0;
	for (i = 1; i <= row; i++)
	{
   
		for (j = 1; j <= col; j++)
		{
   
			if (show[i][j] == '*' || show[i][j] == '!')
			{
   
				win++;
			}
		}
	}
	return win;
}

以下为效果图:
在这里插入图片描述
(二)实现的功能

  1. 初始化雷盘
  2. 打印雷盘
  3. 随机布置雷
  4. 玩家开始排雷
  5. 防止玩家第一次被雷炸死.
  6. 统计所选位置周围八个位置中雷的个数
  7. 递归拓展已选位置周围的区域
  8. 标记雷及取消标记

1.初始化雷盘

初始化雷盘时需要构造两个二维数组,一个数组(mine数组)里面是存放雷的,用于实现各种功能,另一个数组(show数组)是给玩家操作时看的,看不到雷的具体位置。
由于需要统计每个位置周围八个区域中雷的个数,在统计最边缘的位置时为了利于功能的实现,在初始化雷盘时构建的二维数组mine数组的行和列比show数组多两行两列

//初始化雷盘
//主函数中函数的调用
//Initboard(mine, ROWS, COLS,'0');
//Initboard(show, ROWS, COLS, '*');
void Initboard(char board[ROWS][COLS], int rows, int cols,char set)
{
   
	int i = 0, j = 0;
	for (i = 0; i < rows; i++)
	{
   
		for (j = 0; j < cols; j++)
		{
   
			board[i][j] = set;
		}
	}
}

初始化雷盘时,mine数组全部初始化为字符‘0’,show数组全部初始化为字符‘*’

2.打印雷盘

玩家需要通过打印出的show数组雷盘进行游戏,打印雷盘时将行号和列号全部打印出来有利于玩家进行操作

void DisplayBoard(char board[ROWS][COLS], int row, int col)
{
   
	int i = 0, j = 0;
	//打印列号
	for (i = 0; i <= col; i++)
	{
   
		printf("%d ", i);
	}
	printf("\n");
	for (i = 1; i <= row; i++)
	{
   
		printf("%d ", i)
评论 63
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值