C语言实现扫雷小游戏(简易版,超详细!)



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

在线扫雷游戏:http://www.minesweeper.cn/

一、扫雷游戏分析和设计

1.功能(控制台实现)

①菜单
②游戏选项
③页面设计
④放置雷
⑤可以排查雷
我们主要的实现这几个功能,接下来我们逐步分析

2.流程逻辑

2.1菜单

我们玩游戏首先展现出来的就是菜单,我们可以给自己的扫雷游戏设计一个菜单,这个也是比较简单。如下:

#include<stdio.h>
int main()
{
    
	printf("--------------------\n");
	printf("-----1.开始游戏-----\n");
	printf("-----0.退出游戏-----\n");
	printf("--------------------\n");
   return 0;
}

就是这样的简易菜单:
在这里插入图片描述

2.2游戏选项

接下来我们要根据菜单的选项进行游戏的选择,要可以选择的我们利用我们学过的知识,首先想到的是switch的选择语句,然后要想我们游戏结束后还可以进行选择继续或者退出,这里又要用到我们的循环语句,do...while在合适不过了,每一次循环菜单都要打印出来,所以我们菜单应该在循环内。整个思路就大致清晰了,我们接下来就是进行代码的翻译。如下:

 #include<stdio.h>
 void menu()
 {
   
   	printf("--------------------\n");
	printf("-----1.开始游戏-----\n");
	printf("-----0.退出游戏-----\n");
	printf("--------------------\n");
 }
int main()
{
    
   int input=0;
   do
   {
   
      menu();
      printf("请选择:>");
      scanf("%d",&input);
   switch (input)
{
   
case 1:
	       //game();//此时我们还没有对游戏内容进行定义,先注释掉,看能不能跑起来
	       break;
case 0:
	       printf("您已退出游戏!\n");
	       break;
default :
	      printf("选择错误,请重新选择!\n");
	      break;
}
   }while(input);	
   return 0;
}

当我们选择1时:
在这里插入图片描述
当我们选择0时:
在这里插入图片描述
当我们选择0或1以外的数字时:
在这里插入图片描述

我们在游戏选项这一步也完成了,接下来我们要进行的是对我们游戏内容进行设计。

2.3页面设计(游戏内容)

当我们选择进行游戏时,我们要给出玩家我们的游戏页面,我们一般玩的扫雷游戏是由一个n*n的棋盘,让我们进行“扫雷”,要打印出我们的棋盘,我们要能够有可以容纳那么多字符的东西,没错就是我们的二维数组,在进行遍历就可以打印出我们的棋盘了,打印前首先要对我们的棋盘进行初始化。
如下:

 void game()
 {
   
    char mine[ROWS][COLS];//存放布置好的雷,ROWS代表行,COLS代表列
    char show[ROWS][COLS];//存放排查出来雷的信息 
    //初始化棋盘
    InitBoard(mine, ROWS, COLS, '0');//mine数组里最先都存放'0',这里存放的是字符0,而不是数字0,不要搞混
    InitBoard(show, ROWS, COLS, '*');//展现出来的show数组里最先存放'*',以防我们直接看到雷的位置
    //打印棋盘
    DisplayBoard(mine, ROW, COL); 
    DisplayBoard(show, ROW, COL);
	//放置雷
	SetMine(mine, ROW, COL);
	//查找雷
	FindMine(mine, show, ROW, COL);
 }
 

我们整个的游戏内容就是这样的一个流程,此时我们会发现我们如果在一个文件里,那么我们的代码就很显得很杂乱无章,此时我们就要使用多个文件进行分装,使得我们整个代码看起来有序,我一共将整个代码分装成三个文件,①test.c ②game.h ③game.h

我们自定义函数,将我们打印棋盘的打印出来
如下:

//初始化化棋盘
//mine数组最开始是全'0' 
//show数组最开始是全'*' 
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++
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值