首页 > 编程语言 >扫雷程序的实现和分析

扫雷程序的实现和分析

时间:2024-11-03 13:18:04浏览次数:3  
标签:分析 点位 函数 程序 game 扫雷 数组 输入

昨天下午看了鹏哥的录播课,在自修教室学了一下扫雷,等晚上回到寝室花了一点时间写了一部分扫雷程序,今天早上起来又花了一点时间写了扫雷,终于写完了,我自己比较满意的点是全程都是自己独立完成的,最后程序运行起来也没有问题。接下来主要讲讲我对扫雷这个程序的认识,以及我觉得写扫雷程序需要注意的点。

第一就是把一个大的项目拆开来,对于扫雷,就把他拆成了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

相关文章

  • 2024-2025-1 学号20241315《计算机基础与程序设计》第六周学习总结
    作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK06这个作业的目标Polya如何解决问题简单类型与组合类型复合数据结构查找与排序算法算法复杂度递归代码安全作业正文......
  • 2024-2025-1 20241412 《计算机基础与程序设计》第六周学习总结
    学期(如2024-2025-5)学号(如:20241404)《计算机基础与程序设计》第5周学习总结作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/homework/13276这个作......
  • 基于Django高校岗位招聘平台与数据可视化分析设计和实现
    开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:PyCharm浏览器:谷歌浏览器后台路径地址:localhost:8080/项目名称/admin/dist/index.html前台路径地址:localhost:8080/项目名称/front/dist/index.html(无前台......
  • 基于 SpringBoot 的食物营养分析与推荐网站
    2.1Java语言Java是一种在Web应用开发中得到广泛使用的脚本语言,经常被用来对用户的相关行为做出反应。它还具有面向对象的设计能力,使设计开发过程更加直观和模块化,并在HTML基础上进行交互Web页面的开发。这种脚本语言的问世,使用户与页面之间的实时、动态交互成为现实,丰富了......
  • FPGA(现场可编程门阵列)的时序分析
    在FPGA(现场可编程门阵列)的时序分析中,tsu(建立时间)、th(保持时间)、tco(时钟到输出延时)、tpd(引脚到引脚延时)以及tcd(可能指的是信号在组合逻辑中的传输延时,尽管它在FPGA时序分析中不是一个标准的术语,但在此为全面解答而提及)是几个至关重要的参数。这些参数共同决定了FPGA电路的性......
  • 使用 Elixir 实现简单的文字识别程序
    在这篇文章中,我们将手动实现一个简单的文字识别程序,使用Elixir编程语言。Elixir是一种函数式编程语言,特别适合处理并发和分布式任务。我们将通过分析图像数据,识别其中的字符。环境准备首先,请确保你已安装了Elixir。可以通过以下命令安装必要的依赖库,例如ex_image和ex_doc......
  • 基于微信小程序的高校教师成果管理系统的设计与实现-计算机毕业设计源码+LW文档
    摘 要互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对高校教师成果信息管理混乱,出错率高,信息安全性差,劳动强度大,费时费力等问题,采用基于web的高校教师成果管理可以......
  • 利用 D 编程语言实现文字识别程序
    在本篇文章中,我们将手动实现一个简单的文字识别程序,使用D编程语言。我们将通过分析图像中的像素数据,识别出其中的字符。尽管D是一种较少使用的编程语言,但它的高性能和简洁性使得我们能够高效地进行图像处理。环境准备首先,确保你已经安装了D编程语言的编译器和库。我们需要......