C语言-扫雷游戏程序设计

一.问题要求

1,问题描述

本题目要求我们设计一个程序实现扫雷游戏,在游戏时利用最短时间内去点击九宫格的格子显示数字去找出非地雷的格子,并且避免踩到地雷。在完成基本要求的情况下,去提高游戏性,同时增强用户的体验感受和可玩性,以及对数字的反应能力。

2,程序的功能

(1)首先当确定第一个格子里为地雷时,需要将地雷转换到其他格子,防止游戏一开始后就结束。
(2)当我们选择的格子位置周围不存在地雷时,就要以九宫格的形式散步开来,再进行扫雷周围过程,并判断该坐标是否有地雷,同时进行统计地雷的总数,以便减去不必要的过程,从而提升游戏效率。

二.基本要求

1,要求分析

1.首先用C语言程序设计思想,明确编写思路,先写一个菜单,用来显示下面程序的过程,比如设置棋盘,进行埋雷,接着去扫雷,当扫雷结束后去统计地雷数量。
2.其次用C语言去建立一个二维数组,并对二维数组初始化,一个存放地雷,一个去显示地雷并且统计地雷的数量。
3.在程序设计好行数和列数时,此时需要在此基础上设置一个辅助棋盘,就是在现有的基础上每行每列加2,然后我们设置地雷数量,使用宏定义的方法,以便后期改变数字,而扩大的2行2列格子只是辅助计算,不显示也不起作用。
4.最后计算剩余地雷数量,若@显示为0则周围没有地雷,若显示数字,则表示周围的地雷数量,#代表地雷,当此坐标显示#则会被炸死,游戏结束。

2,需求分析

3.1系统目标
1.首先要满足系统以及玩家的不同方面和不同层次的需求,同时提高程序的设计性能。
2.为了增强扫雷游戏的玩家的信息的安全性,同时提高扫雷游戏的游戏效率,节约扫雷游戏资源的成本。
3.为游戏将来信息化建设,以及发展趋势提供一定的支持,在游戏项目发展的同时适应当下游戏建设趋势化。
4.游戏本身要满足玩家的要求,玩家通过此游戏项目去体验扫雷游戏的乐趣,从而激发玩家对数字的反应能力和手的灵活能力。

3.2系统功能

1.对于游戏项目的设计人员,可以管理游戏者的信息以及游戏的后台设计。
2.对于游戏者来说,当玩家去体验这个扫雷游戏时,不仅仅是玩游戏,更应该是感受扫雷过程中的感染力,以及对数字独立思考的反应能力和敏感程度。
3.对于游戏项目的本身,首先要去满足游戏者的需求,其次根据人们的所需设计出适合的扫雷游戏项目。
4.首先当确定第一个格子里为地雷时,需要将地雷转换到其他格子,防止游戏一开始后就结束。
5.当我们选择的格子位置周围不存在地雷时,就要以九宫格的形式散步开来,再进行扫雷周围过程,并判断该坐标是否有地雷,同时进行统计地雷的总数,以便减去不必要的过程,从而提升游戏效率。

3.3用户需求

1.首先满足用户在登陆扫雷游戏时可以选择通关模式以及难易模式,选择之后根据地雷的数量去判断通关是否。
2.接着游戏项目根据用户需求设置项目的用户人数,防止人数过多情况下,系统发生崩溃现象,当用户人数设置好,再去选择扫雷游戏开始。
3.当用户使用时出现某些意外发生时,用户离开后,下次进入游戏界面,依然可以玩扫雷游戏,而不是退出界面后自动游戏结束,降低用户玩游戏的体验性。

3.4非功能需求

1.安全性:对于一个扫雷游戏项目的安全,防止病毒入侵,以及恶意网站攻击,确保系统的安全性能,以及用户的信息安全性。
2.游戏项目的质量问题以及发生事故的处理问题。
3.游戏项目的系统,以及后台,反应时间的快慢,用户体验游戏时间和多个用户玩游戏的冲突问题。

四.设计概要

1,程序的设计概要

1.首先我们需要知道扫雷游戏程序设计的本质,用函数实现游戏的过程,先分一个大的模块,接着去分成小的模块,比如先去设置九宫格棋盘,再去初始化二维数组,设置地雷的数量,
为避免重复要去扫雷,根据每个坐标位置的数字显示判断。
2.与布雷的设计流程一样,也要将雷阵设计成(A+2) ×(A+2);因为这个地雷阵为玩家雷阵,为了增加神秘性,可以将它其初始化为字符*,或是其他字符也可以。
3.游戏设计中,#代表地雷,而0代表没有地雷,每个坐标位置的数字代表周围8个格子的地雷数量。

2,程序的主要流程

1.设置棋盘

设计一个A*A(A代表雷阵大小,根据设计者需要自行设计)的雷阵,布有X(X代表雷的个数,根据设计者与玩家需求自己设计)个雷,那我们可以用二维数组来实现雷阵,用字符‘1’表示有雷,字符‘0’表示没有雷。

代码如下:

void Init_Ar(Grid ar, int row, int col) //初始化
{
 //*显示
 for (int i = 1; i <= row; ++i)
 {
  for (int j = 1; j <= col; ++j)
  {
   ar[i][j] = INITSHOW;
  }
 }
输出行输出列代码:
void Print_Ar(Grid ar, int row, int col)
{
 printf("  ");
 for (int i = 1; i <= col; ++i)
 {
  printf("%2d", i);  //输出列
 }
 printf("\n");
 for (int i = 1; i <= row; ++i)
 {
  printf("%2d", i);   //输出行

2.布地雷

先随机取值,去判断这个坐标位置处是否有地雷,然后排除地雷的重复,再去设置地雷的数量。

int i = 0;
 while (i < MINENUM)
 {
  int r = rand() % ROWSIZE + 1;  //随机取值,判断这个坐标是否有雷
  int c = rand() % COLSIZE + 1; 
//排除地雷重复
  if (!(ar[r][c] & MAKEMINE))
  {
   ar[r][c] = (ar[r][c] | MAKEMINE);  //设置地雷数
   ++i;
  }
 }

五.用户说明

1.首先运行结果显示的是以*分布的格子,而#代表了地雷,0代表此位置的周围没有地雷,而数字表示周围有几个地雷。
2.用户在使用时,可以通过在键盘输入 5 6 0,代表了第5行第6列没有地雷,如果此坐标位置没有地雷,则展开一大片,如果是数字,则游戏接着进行,如果此位置是地雷,则游戏直接结束,就会显示炸死了。
3.当用户进行到游戏中间时,由于特殊原因退出游戏,此时应该保持安静,等待一会,游戏会给用户反应时间去缓解心情,和游戏的可玩性,当游戏结束后,用户对于这个扫雷游戏会有不同的体验。
4.当游戏结束后,用户可以关闭这个扫雷游戏项目的窗口,然后可以去休息,做一些别的事情,同时学会独立思考问题,加强对数字的判断以及反应能力。

六.测试结果

1,运行结果说明

首先扫雷游戏程序的详细过程在此设计报告均说明,用测试的数据经过程序不断运行时得到的数据与预测出结论的结果大致一样,而且没有很大的差距。

2.测试结论

(1)功能性出现错误:在运行测试的过程中,每个功能模块有些并不可以正常实现全部功能,扫雷游戏的扫雷过程出现的问题最多,就需要对于这个问题去改正,不断测试,还有“可输入空格”等缺陷问题,这个问题在程序设计也可改进,但都影响到一个扫雷游戏项目的安全问题,所以进行多次测试是必要的。
(2)代码出现错误:其次在程序的测试过程中,每个功能模块的文本框会出现一些无限输入的缺陷,甚至还有用户信息数据的显示问题,每个功能都存在一些缺陷导致不能实现或产生错误结果;导致扫雷游戏项目不稳定、或者是破坏被数据的情况等,这些情况也不可避免。而这就需要不断进行测试,优化系统,提高系统的稳定性。

七.程序设计总结

1.首先根据此扫雷游戏项目的程序设计,通过C语言程序设计的语言各方法技巧,对一些问题进行分析和解决问题,正确完整的去分析问题,进一步去提高自己解决问题的能力,从而不断得学习新知识,新方法,然后设计出解决问题的算法和程序设计。
2.通过这个系统的程序设计,用来验证为解决扫雷游戏中扫雷问题而去设计的算法与程序的正确性,然后进一步去学会利用基本调试方法,最后根据理论知识和语言技巧去寻找出这个程序代码中的错误,然后对于错误的地方去进行修改和改正,从而进一步去提高自己的程序设计水平和对于问题分析处理的能力,在实践中不断锻炼自己,以便对于问题分析的完整性
3.最后还得到一些教训,比如在写程序时需要认真,细心,否则写程序时会字母和大小写书写错误,所以应该加强自己的专注力以及多看多读课外知识,不能只局限于课本和老师所讲的内容。

  • 11
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜羊羊zz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值