c语言扫雷游戏实现(函数与数组实现).(●‘◡‘●).(✧∇✧).超详细

目录

一.扫雷游戏的大致思路:

二.头文件的设计:

​编辑

 三.函数的设计

1.用initboard和displayboard初始化棋盘。初始化棋盘 initboard(用于存储雷的信息‘0’与‘1’,‘0’表示无雷,‘1’表示有雷,用‘*’掩盖雷的信息)与displayboard(打印外围行列信息,打印要展现的‘*’隐藏信息)

 2.布置雷的函数(用随机数生成,将是‘0’的数组中的元素布置为‘1’,用count计数,count=EASY_COUNT 也就是10,每布置完一个雷就让count减一)

3.排查雷的函数(设置变量x,y,用于表示要输入的坐标,win表示排雷的过程,如果xin=row*col-EASY_COUNT,说明除了雷的位置都已经排除,剩下的都是雷,也就是排雷成功,如果输入的坐标刚好是‘1’的位置,那么就说明排雷失败,打印输出“你被炸死了”,如果排雷的坐标不存在,就显示输入错误,并重新输入,其中注意雷所处的位置,是数组从1开始的)字符减去‘0’表示该字符所对应的ASCLL码值。

 四.最终代码呈现:

game.h:

game.c:

test.c:


一.扫雷游戏的大致思路:

首先,我们先看看最终设计好后的页面(用c语言实现):

c语言扫雷游戏实现(函数与数组实现).(●‘◡‘●).(✧∇✧).超详细_第1张图片

①、通过页面,我们可以知道要设计以个9*9的扫雷区间,为了方便我们写出对应坐标,我们要在外围加上行数与列数。这⾥我们采⽤另外⼀种⽅案,我们专⻔给⼀个棋盘(对应⼀个数组mine)存放布置好的雷的信息,再 给另外⼀个棋盘(对应另外⼀个数组show)存放排查出的雷的信息。这样就互不⼲扰了,把雷布置到 mine数组,在mine数组中排查雷,排查出的数据存放在show数组,并且打印show数组的信息给后期排查参考。 同时为了保持神秘,show数组开始时初始化为字符 '*',为了保持两个数组的类型⼀致,可以使⽤同⼀ 套函数处理,mine数组最开始也初始化为字符'0',布置雷改成'1'。

②、为了不让数组越界,我们将数组设计成11*11比较合适。c语言扫雷游戏实现(函数与数组实现).(●‘◡‘●).(✧∇✧).超详细_第2张图片c语言扫雷游戏实现(函数与数组实现).(●‘◡‘●).(✧∇✧).超详细_第3张图片

③、创建文件进行分布操作: 

c语言扫雷游戏实现(函数与数组实现).(●‘◡‘●).(✧∇✧).超详细_第4张图片

c语言扫雷游戏实现(函数与数组实现).(●‘◡‘●).(✧∇✧).超详细_第5张图片

其中为了方便后续的引用,我重定义了行(ROW,ROWS)、列(COL,COLS)、和要排的雷的个数(EASY_COUNT): 

c语言扫雷游戏实现(函数与数组实现).(●‘◡‘●).(✧∇✧).超详细_第6张图片

④、页面设计

c语言扫雷游戏实现(函数与数组实现).(●‘◡‘●).(✧∇✧).超详细_第7张图片

这步在test.c文件中实现 ,同时,需要随机数的生成与应用。不会的小伙伴可以看看这篇:

C语言随机数的生成【详解】_c语言生成随机数-CSDN博客

 ⑤、接下来就是函数的实现了:

1.初始化棋盘 initboard(用于存储雷的信息‘0’与‘1’,‘0’表示无雷,‘1’表示有雷,用‘*’掩盖雷的信息)与displayboard(打印外围行列信息,打印要展现的‘*’隐藏信息)

2.布置雷的函数(用随机数生成,将是‘0’的数组中的元素布置为‘1’,用count计数,count=EASY_COUNT 也就是10,每布置完一个雷就让count减一)

3.排查雷的函数(设置变量x,y,用于表示要输入的坐标,win表示排雷的过程,如果xin=row*col-EASY_COUNT,说明除了雷的位置都已经排除,剩下的都是雷,也就是排雷成功,如果输入的坐标刚好是‘1’的位置,那么就说明排雷失败,打印输出“你被炸死了”,如果排雷的坐标不存在,就显示输入错误,并重新输入)

c语言扫雷游戏实现(函数与数组实现).(●‘◡‘●).(✧∇✧).超详细_第8张图片 

主要难点:函数的设计与实现 

 c语言扫雷游戏实现(函数与数组实现).(●‘◡‘●).(✧∇✧).超详细_第9张图片

二.头文件的设计:

c语言扫雷游戏实现(函数与数组实现).(●‘◡‘●).(✧∇✧).超详细_第10张图片

c语言扫雷游戏实现(函数与数组实现).(●‘◡‘●).(✧∇✧).超详细_第11张图片

 三.函数的设计

1.用initboard和displayboard初始化棋盘。初始化棋盘 initboard(用于存储雷的信息‘0’与‘1’,‘0’表示无雷,‘1’表示有雷,用‘*’掩盖雷的信息)与displayboard(打印外围行列信息,打印要展现的‘*’隐藏信息)

c语言扫雷游戏实现(函数与数组实现).(●‘◡‘●).(✧∇✧).超详细_第12张图片

 为了防止第一行第一个元素中行与列的重复,这里列从0开始,行从1开始打印外围的行与列的信息

 2.布置雷的函数(用随机数生成,将是‘0’的数组中的元素布置为‘1’,用count计数,count=EASY_COUNT 也就是10,每布置完一个雷就让count减一)

c语言扫雷游戏实现(函数与数组实现).(●‘◡‘●).(✧∇✧).超详细_第13张图片

 其中EASY_COUNT是10;上面头文件中已经定义

3.排查雷的函数(设置变量x,y,用于表示要输入的坐标,win表示排雷的过程,如果xin=row*col-EASY_COUNT,说明除了雷的位置都已经排除,剩下的都是雷,也就是排雷成功,如果输入的坐标刚好是‘1’的位置,那么就说明排雷失败,打印输出“你被炸死了”,如果排雷的坐标不存在,就显示输入错误,并重新输入,其中注意雷所处的位置,是数组从1开始的字符减去‘0’表示该字符所对应的ASCLL码值。

c语言扫雷游戏实现(函数与数组实现).(●‘◡‘●).(✧∇✧).超详细_第14张图片

这些函数都处于game.c文件中

 c语言扫雷游戏实现(函数与数组实现).(●‘◡‘●).(✧∇✧).超详细_第15张图片

 四.最终代码呈现:

game.h:

c语言扫雷游戏实现(函数与数组实现).(●‘◡‘●).(✧∇✧).超详细_第16张图片

game.c:

 c语言扫雷游戏实现(函数与数组实现).(●‘◡‘●).(✧∇✧).超详细_第17张图片

test.c:

c语言扫雷游戏实现(函数与数组实现).(●‘◡‘●).(✧∇✧).超详细_第18张图片

运行结果:

c语言扫雷游戏实现(函数与数组实现).(●‘◡‘●).(✧∇✧).超详细_第19张图片c语言扫雷游戏实现(函数与数组实现).(●‘◡‘●).(✧∇✧).超详细_第20张图片 

首先,选择0或1的操作,0表示退出,1表示开始游戏,输入坐标进行扫雷,会出现三种情况

1.扫雷成功 2.被炸死 3.数据输入错误。

 博客到这里也是结束了,喜欢的小伙伴可以点赞加关注支持下博主,这对我真的很重要~~ 

 

你可能感兴趣的:(游戏)