昨天下午看了鹏哥的录播课,在自修教室学了一下扫雷,等晚上回到寝室花了一点时间写了一部分扫雷程序,今天早上起来又花了一点时间写了扫雷,终于写完了,我自己比较满意的点是全程都是自己独立完成的,最后程序运行起来也没有问题。接下来主要讲讲我对扫雷这个程序的认识,以及我觉得写扫雷程序需要注意的点。
第一就是把一个大的项目拆开来,对于扫雷,就把他拆成了entry.c game.c game.h三个部分,然后把需要共用的的标准头文件和自定义的函数,以及宏定义都放在了game.h这个自定义的头文件中。这样整个程序看下来就不会很复杂。第二、就是把一个大问题拆成几个子问题,分别写多个功能较单一的函数来完成每个功能。第三对于要用到多次的整型数字,可以用宏定义用字符来代替。在写这个程序过程中很关键的两点,第一是要创建两个字符二维数组分别表示不让用户看到的类图(上面是雷的点位以及不是雷的点位),和每次扫雷需要供用户看的类图(显示所输入点位周围一圈的雷的数量,供用户来排查雷的消息);第二,虽然难度是9*9的难度,但是我们在创建二维数组的时候,要创建11*11的数组,为了对于边界的点位的周围一圈的排查不造成越界访问。
其次就是按部就班一步一步分析完成整个程序的构建。运用srand,time函数来随机生成一个种子,使得每次程序启动rand函数能随机生成1-9的数字,用于后续雷的随机布置;menu函数用于打印选择菜单,运用do while循环,因为不论如何,选择至少执行一次,输入1进入游戏,输入0退出游戏,输入其他数字提示输入错误,要求用户重新输入(因为非零即为真,循环不会停止)。输入1进入游戏进入game函数,prime_Board函数用来初始化两个二维数组,Mine数组分别用‘0’表示非雷点,‘1’用来表示有雷的点,Show数组用'*'表示还未排查的点位,已排查的点位,则会显示这个点位周围一圈的雷的数量。Set_Mine函数用来随机布置雷的位置。enter_game函数表示输入坐标开始扫雷,输入一个坐标,若是踩雷则游戏结束,若是没有踩雷,则通过Count_Mine函数来数这个点位周围一圈的雷的数量,并且显示到Show数组上,注意整型和字符型的转换。并且在enter_game来控制循环,因为总共有81个点位,10颗雷,所以count函数初始化为71,每成功排查一个点位count就减1,当count等于0,循环结束,当然如果踩到雷循环也会结束,所以在循环下面还要加一个判断,如果count==0就代表扫雷成功。然后整个一次扫雷就结束了,用户可以选择退出游戏或者再次进入游戏。注意.h头文件用来函数的声明.c源文件用来函数的实现。
好的整个扫雷过程就是这样,还有不足的地方,欢迎指正,我们下次再见!
标签:分析,点位,函数,程序,game,扫雷,数组,输入 From: https://blog.csdn.net/2401_86861045/article/details/143463166