首页 > 其他分享 >用c语言写“扫雷游戏”

用c语言写“扫雷游戏”

时间:2023-11-07 17:33:00浏览次数:34  
标签:需要 游戏 玩家 game 扫雷 数组 我们 语言

扫雷游戏是一款简单却富有挑战性的益智游戏,适合所有年龄段的玩家。游戏的操作简单,但是需要玩家具备较高的逻辑推理能力和观察力,让人在游戏的过程中不断思考、分析、判断。游戏同时也可以锻炼玩家的注意力和耐心,让人享受到难度和成功带来的成就感。总体来说,扫雷游戏是一款有趣又有益的游戏,能够为玩家带来很好的消遣和挑战。儿我们也可以用c语言实现这个游戏。

1.扫雷实现的逻辑

扫雷的核心思想也是二维数组的利用。要用到函数。我们大概需要四个函数

我们首先创建三个文件:game.h , game.c , test.c。在里面game.h是头文件,而game.c是主要写函数。而text.c主要是运行游戏的

1.用define定义常量,定义数组的行和列,这样改变数组行列不需要整个修改代码,只需要改变define后面定义常量的值;

2.需要一个菜单来供我们选择进入游戏还是退出游戏,menu函数;

3.玩游戏肯定不止玩一局,所以需要设置循环do...while这个很关键;

4.需要俩个数组,一个用来设置雷(mine),存放雷的信息;一个用来让玩家排查雷(show),存放玩家输入的坐标信息;

5.需要初始化俩个数组,我们把要埋雷的数组初始化为’0‘,要排雷的数组初始化为’*‘;

6.需要打印棋盘让玩家来排雷;

7.需要设置雷和排雷函数;

以上就是大致的流程。

2.游戏的实现

1.首先是menu函数


用c语言写“扫雷游戏”_数组

2.选择

我们在main()中采取do-while循环来实现重复游戏,用switch()来获取玩家的选择,这个是方便选择是否开始游戏

用c语言写“扫雷游戏”_数组初始化_02


结果如下:

用c语言写“扫雷游戏”_数组_03

这个就是我们成功的第一不

3.设计

假设我们实现一个9*9的棋盘,上面布置十个雷

这样我们就需要一个9*9的数组来存放雷

 

假设我们在排这个绿色坐标的时候,它不是雷,这时候我们需要统计它周围红圈中8个坐标的雷的个数;像上面这种情况,我们需要显示1;但是这个1会与我们表示雷的1冲突,为了解决这个问题,我们再单独给他一个数组,全部放成 ‘ * ’ ;


这个时候,我们在 ‘ * ’ 棋盘中,对应的位置显示‘1’表示这个坐标周围的八个坐标里有一个雷;我们给玩家展示的时候,展示第2个数组


假设我们要排查边缘的这个坐标,这个是超出了我们9*9的数组范围

这个时候为了防止越界,我们再把这个数组扩充,即在设置存雷的数组的时候,范围设置成11*11

**就是排查最边上的格子,我们会看他周围的8个

像这样这个时候,就不存在越界行为了

为了便于计算,我们的展示棋盘同样扩大到11*11(严丝合缝);

用c语言写“扫雷游戏”_二维数组_04

因此在设计的时候就要考虑这些问题

4.打印棋盘

这里就需要提前设计函数game,

用c语言写“扫雷游戏”_数组_05

game.c的代码,如下

用c语言写“扫雷游戏”_数组初始化_06

game.h的代码:

用c语言写“扫雷游戏”_数组_07

之前忘记说了,我们实际设计9×9的,但如果要11×11的,改起来比较复杂,所以用ROW和COL来代替。而那个+2就是让边界多一层。大家不要理解错了。

当大家做到这里,结果应该是这样的:

用c语言写“扫雷游戏”_二维数组_08

这样已经说明我们已经成功一半了。

5.布置雷

这里需要一个新函数,如下是代码。

用c语言写“扫雷游戏”_数组_09

这个是game.h里面的代码

用c语言写“扫雷游戏”_数组初始化_10

6.排雷

排查雷的逻辑是:

*如果这个位置不是雷,就计算这个位置周围八个坐标有几个雷,并显示雷的个数

*如果这个位置是雷,就炸死了,游戏结束

*如果把不是雷的位置都找出来了,那么游戏也结束,玩家胜利

在扫雷的过程中,我们还需要计算周围雷的个数

定义一个函数来统计周围雷的个数 

用c语言写“扫雷游戏”_数组_11

game.c的代码

用c语言写“扫雷游戏”_数组初始化_12


到这里已经基本完成了,大家看一看我最后的代码。


3.最终游戏代码

game.h

用c语言写“扫雷游戏”_数组初始化_13

game.c

用c语言写“扫雷游戏”_数组初始化_14


text.c

用c语言写“扫雷游戏”_数组_15


4.总结

总体来说,用C语言写扫雷代码需要充分运用循环和判断语句,灵活使用二维数组来记录游戏状态,能够帮助玩家更好地理解程序的运行过程,同时也提高了编程能力,大家应该多多尝试才可以。

标签:需要,游戏,玩家,game,扫雷,数组,我们,语言
From: https://blog.51cto.com/u_16297962/8237599

相关文章

  • 情侣飞行棋小程序游戏系统源码小程序搭建
      情侣飞行棋小程序一款适合情侣之间互动的游戏软件,小程序平台实现线上对战,双方在游戏中增进感情。下面就是关于游戏软件的系统搭建,开发功能的过程。  一、情侣飞行棋需求  1.游戏规则:两人游戏,多人游戏,轮流掷骰子,按照骰子点数前进,达到游戏的终点者胜利。  2.界......
  • 情侣飞行棋小程序真心话大冒险游戏开发
      情侣飞行棋小程序软件逐渐的出现在我们的视野中,因为不少的情侣也开始关注这一块了。情侣飞行棋小程序软件是一种新型的手机移动小程序软件,它以独特的游戏玩法,创新的设计,赢得了众多的年轻人的喜爱。  这款游戏的玩法模式是以飞行棋,真心话大冒险,互动游戏,对战模式等玩法。......
  • Base64编码、解码 C语言例子(使用OpenSSL库)
    #include<stdio.h>#include<string.h>#include<unistd.h>#include<openssl/pem.h>#include<openssl/bio.h>#include<openssl/evp.h>intbase64_encode(char*in_str,intin_len,char*out_str){BIO*b64,*bio;......
  • Python语言的特点
    Python语言的设计非常优雅,明确,简单。语法简洁:实现相同语言的代码行数,是其他语言的1/5或者1/10,编写起来更加简单与平台无关:Python程序可以在如何安装了Python解释器的计算机的环境上运行粘性拓展:能够整合各种代码,被称为胶水语言开源理念:为语言发展奠定了坚实的群众基础灵活通......
  • 通关Go语言,从基本原理到项目实战,由浅入深Go的底层原理与核心特性
    通关Go语言,从基本原理到项目实战,由浅入深Go的底层原理与核心特性go核心原理本人在一家go技术栈工作2年有余,因此梳理一下我认为比较重要的go语言技术知识,一些基础的概念,比如function,interface这些就忽略了。https://draveness.me/golang/https://www.bookstack.cn/read/qcr......
  • C语言 读取二进制文件中的数组
    获取最后n行数据把每个数组看成是1行#include<stdio.h>intmain(void){//示例数据成员大小最多20字节成员数量最多5个chars1[5][20]={"a1","a2","a3","a4","a5"};chars2[5][20]={"b1","b2",&qu......
  • go语言处理错误的正确姿势
    Go语言处理错误的正确姿势原创 枫潇潇兮 程序员技术成长之路 2023-09-2021:34 发表于福建收录于合集#go语言58个在Go语言中,错误处理是通过内置的error类型来实现的,而异常则是通过panic和recover函数来处理。Errorerror是一个内置的接口类型,它的定义如下:typeerro......
  • 生物信息专业都学些什么编程语言?
    以前上课学的C/C++/Java/C#/汇编。自学的perl/python/matlab/R/等等。其实用什么语言搞科研主要看老板,我最初老板和组里其他人都用perl,我也学perl。这样方便大家交换程序。现在的老板用python,我就开始学python了。其实觉得bioinformatics的本科都会教c或者java,会了c/java其中任......
  • 2011年春季-C语言课程设计-指导书
    C语言课程设计指导书注:请各班学习委员按学号顺序对本班同学进行分组(不允许同学自行组合),把后面所列的题目分割开交给各组保留,并组织同学按时上机。1.总体要求1)       按照名单上的顺序分配PC,按照学号的顺序每3人一组(如果剩余2人,则选择任务11;如果剩余1人,则分散到前面的组中......
  • 2011年春季-C语言课程设计-报告格式
    以下内容根据教务处最新要求制定,请严格遵守。附件:课程设计报告的内容及其文本格式1、课程设计报告要求用16k纸排版,单面打印,并装订成册,内容包括:除封面外,其他每页的页脚需要有页码。①封面(包括题目、院系、专业班级、学生学号、学生姓名、指导教师姓名、职称、起止时间等)②设计任务及......