C语言小游戏---扫雷

本文介绍了使用C语言开发扫雷小游戏的过程,包括游戏规则、代码框架和主要函数的解析。详细讲解了如何初始化棋盘、打印棋盘、布置雷、排雷以及获取周围雷的数量。通过函数组合实现游戏流程,提供了game.h、game.c和test.c的代码实现。
摘要由CSDN通过智能技术生成

目录

1.游戏规则

2.游戏代码的框架

3.游戏函数的一一解析

1。对于一些宏定义,头文件

2.初始化一个棋盘

3.打印棋盘

4.布置雷

5.排雷

1.获得周围的雷的数量

2.主体函数

4.函数主体

1.菜单函数

2.游戏函数

3.test函数

4.main函数

5.代码实现

1.game.h

2.game.c

3.test.c


1.游戏规则


扫雷相信大家都玩过,但是我还是要大概说一下这个游戏的规则。以vs这个运行窗口玩的扫雷,肯定没有正规的软件小程序来的全面,希望大家见谅。就拿简单模式来讲,是一个9*9的方阵内,随机安排10个雷,然后通过对每一个位置的周围一圈的8个位置,判断是否有雷,并将他们的数量统计加起来放在中间的位置。通过不断地推断排雷最终把10个雷排出来。管你听没听懂,看就完啦。

2.游戏代码的框架


  • game.h --- 游戏函数的声明定义
  • test.c  ---  游戏的测试
  • game. c --- 游戏函数的实现

3.游戏函数的一一解析


1。对于一些宏定义,头文件

#include<stdlib.h>
#include<time.h>
这两个头文件是用来生成随机数所必须的。

EASY_COUNT 代表着雷的数量

因为9*9的数组,在边界线的上的数组元素,找他的一周的雷的数量是会出现数组越界的情况,所以需要将数组的行和列设置位11行。

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

#define EASY_COUNT 10

#define ROW 9
#define COL 9

#define ROWS 11
#define COLS 11

2.初始化一个棋盘

初始化棋盘,我们需要初始化两个棋盘,一个给玩家看,一个不给,这样做可以更方便的。mine字符数组代表设置雷区的一个棋盘,show字符数组代表着给玩家展示的棋盘。

这样的一个函数,参数中给到字符数组board,行数列数,还有一个字符。通过for循环将整个数组的元素都赋值set,这个set不同的棋盘给不同的字符。

void InitBoard(char board[ROWS][COLS], int rows, int cols, char set)
{
	int i = 0;
	int j = 0;
	for (i = 0; i < rows; i++)
	{
		for (j = 0; j < cols; j++)
		{
			board[i][j] = set;
		}
	}
}

3.打印棋盘

如果直接打印这个9*9的数组的话,会让玩家很难找打要找的位置,所以我们可以给每行每列标上数字,这样可以方便玩家找到需要排雷的位置下标。如图所示的样子。

代码的实现。先打印一行扫雷标志。通过for循环打印第一行的数字提示1-9,然后换行,循环打印每一行的元素,但是在每一行的前面需要打印数字提示,所以打印元素的循环就需要嵌套在内部,因为这个数组的首元素下标是0,二我们给的提示是1,并且玩家输入的也是提示数字,所以for循环需要从下标1开始,循环打印每一个元素,这样就可以打印出一个完整的棋盘,最后也可以再打印扫雷提示的标志。

void DisplayBoard(char board[ROWS][COLS], int row, int col)
{
	int i = 0;
	int j = 0;
	printf("-------扫雷--------\n");
	for (j = 0; j <= row; j++)
	{
		printf("%d ", j);
	}
	printf("\n");
	for (i = 1; i <= col; i++)
	{
		printf("%d ", i);
		for (j = 1; j <= col; j++)
		{
			printf("%c ", board[i][j]);
		}
		printf("\n");
	}
	printf("-------扫雷--------\n");
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值