扫雷游戏c语言实现办法

1.实现软件vs2022。

游戏大致分为三个文件:分别是头文件(包含所需的头文件和函数的声明等)源文件1(主函数部分,游戏是如何运行的),源文件2(实现游戏的函数定义),源文件与头文件之间的连接要使用"(头文件名称)",此时源文件还是头文件都不能用中文进行命名。

扫雷的大致思路是1、制作菜单 2、游戏部分。

一、制作菜单

菜单的制作是在主函数之中,可以自己写一个打印菜单的函数然后进行调用,菜单制作好之后要么进入游戏和退出游戏,这时就要给用户提供选项是否进入游戏,这时也不乏用户输入错的选项,也是程序的一个bug。我们就需要采用switch语句,输入1就是进入游戏,2就是退出,输入其他的便是重新输入(default),注意,此时每一个case语句后都需要break。由此就需要循环,而且我们可能玩一把还不过瘾,结束之后还想继续玩,此时便是循环,这个时候菜单的打印也要进入到循环之中,所以采用的是do-while循环语句。这便是此次游戏的大致框架。

二、游戏部分

1,先思考,扫雷游戏是什么样子的?

2、如何实现?

1.扫雷游戏在这里就不过多介绍了。

2.我们先来做一个最简单的扫雷游戏,9x9棋盘的游戏,为了后期好改难度,我们可以自定义棋盘的大小和雷的数量(在头文件里面)。棋盘的形式有点像二维数组,所以我们就用二维数组来作为棋盘的”模具“,我们就要在其中存放雷和扫雷,没有雷的位置我们就为0,有雷就要为1,而且雷是随机生成的,就要调用srand函数、rand函数和time函数,就要包含stdilb.h和time.h的头文件,在主函数里面随机生成雷(因为每一次玩都需要重新生成)。雷生成完后就需要进行扫雷,我们可以将棋盘的行列号打印出来供用户输入行列号进行排雷。但是在这里我们遇到了两个问题,第一个是排雷的时候,周围有一个雷会与放雷的数组冲突,因为雷也显示的是1;第二个问题是,在棋盘的边界上进行排雷的时候,有许多种复杂的情况,对于周围雷的计算如果要硬写代码的话是难于登天的,所以在这个时候我们就需要两个数组,如果我们把这两个数组都增加一圈,但是放雷的时候只放中间的9x9的棋盘,在边界上雷的计算和在中间雷的计算是一致的,这时我们就需要写一次代码,来判断周围雷的个数。在排雷之后就是判断怎么样才是排完了?万一踩到雷了该怎么办?这两个功能需要if语句来实现我们要排雷的位置有9x9-10=71这么多个,如果玩家排了71次还没有被炸死就算游戏结束排雷成功,踩到雷了就直接退出到菜单是否重新来一次。

这就是整个游戏的思路。

三、如何实现游戏的函数

1.首先,我们需要定义两个11x11的二维数组,一个用来存放雷,一个用来排雷。为了以后好改数值,我们在原来9x9的基础上给行+2,列+2,自定义到头文件中。

2.初始化数组,排雷的数组是提供给玩家看的,所以全部用” * “初始化,为了保持一致,埋雷的数组需要用' 0 '(字符0)来初始化。为了不再写一个循环,我们采用set及传参时set的初始化的值。

3.初始化后就是打印棋盘,将玩家要玩的棋盘打印出来,周围要有行列号供玩家输入排雷。

4.埋雷。在另外一个二维数组中随机生成雷10个,有雷的地方为‘ 1 ’,其他为‘ 0 ‘。将字符进行替换。

4.周围雷的数量。以玩家输入的位置为九宫格,显示埋雷数组中雷的数量然后把这个数字替换到给玩家玩游戏显示的这个数组中,周围雷数量的计算可以采用坐标法然后减去8* ’ 0 ‘,因为是字符之间的计算,不是整数之间的计算,替换的时候需要+ ’ 0 ‘,因为数组还是字符数组需要保持一致。

5.排查雷。用户输入雷的坐标,进行排雷,周围雷的数量嵌套在这个函数之中,也需要写循环来判断坐标的输入和是否被雷炸死,具体详解看代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值