当前位置:网站首页>从零开始学习C语言日记——DAY27扫雷
从零开始学习C语言日记——DAY27扫雷
2022-04-21 06:47:00 【bearbearwww】
一、游戏框架

可以使用3个文件分开编写
第一个test.c测试游戏逻辑的文件——基本结构
第二个game.h关于游戏相关的函数声明,符号声明,头文件的包含——定义
第三个game.c游戏相关的函数的实现——每一个函数模块的内部逻辑的编写
二、程序
首先是test文件

菜单函数——给用户提供信息

主函数是判断用户选择的具体内容
1为开始扫雷,并且调用game()函数
当0为打印退出游戏,break跳出循环,while(input)判断为0结束不再循环
当为其他任意数重新输入

Game函数游戏执行的顺序和框架
此时用了rand函数生成一个随机数,需要引用一个头文件<stdlib.h>
如果用rand生成随机数是在0到RAND_MAX((int)0x7fff)之间,所以rand是返回了一个0到32767之间的数。但是不管是第一遍还是第二遍之后生成的都是同样的数。
解决需要在调用rand之前先调用srand来设置随机数的生成器。
Srand()——设置一个随机的起点
如果在括号里输入一个固定的值那么回生成一个随机值,但是这个随机值一直都是同一个数。传一个一直在发生变化的值就可以解决这个问题了。
电脑的时间一直在发生变化,我们把时间戳传入就可以解决了
可以使用一个库函数——time()函数——这个库函数就会返回一个时间戳,返回的是调用这个函数的那个时间点和计算机的起始时间。
先放入一个空指针NULL。Time是有符号整型,Srand需要的类型是nusigned int类型(无符号整型),我们把time的返回值强制转换nusigned int类型即可。
Time的使用需要引用头文件<time.h>
如果把srand((unsigned int)time(NULL));这段程序放在game函数里的话随机值会离得很
近,srand确实要在rand前面调用,但是随机值起点的设置只需要调用一次就可以了。
如果放入game函数里玩一次就要设置一次不太好。应该放在主函数里即可。
之后rand有了随机值之后把得到的随机值模上行和列,再进行判断就好
现在分别看每个函数的内容——————game.c

因为要重置两个数组所以需要设置单独的返回值变量set

打印棋盘内容

布置雷的信息这里采用rand设置随机值,具体查看之前的说明
判断格子内是否为0为0代表没有雷,则填入1.

判断玩家输入的的坐标是否合法,并且判断输入的坐标是否为雷区。
外部循环为游戏胜利的条件win<9*9-雷的个数一旦达到=即获胜
当选择完之后当前格子没有雷则进行判断周围8格有没有雷并且将有几个雷的信息返回到判断函数

版权声明
本文为[bearbearwww]所创,转载请带上原文链接,感谢
https://blog.csdn.net/bearbearwww/article/details/124299800
边栏推荐
- sqlmap post 注入方法
- php 文章关键字替换类
- Renesas ide: development environment configuration during bootloader upgrade of CS + for CC
- Usage notes of Axure product prototype tool
- 云原生KubeSphere实战多租户系统实战
- PHP实现AES加密解密
- [question 31] create two identical pets
- Solution to red flag with @ Autowired annotation in idea
- C# asp. Net calling Baidu character recognition interface
- 瑞萨IDE:CS+ for CC进行BootLoader升级时开发环境配置
猜你喜欢

迅为i.MX6Q开发板Openwrt 文件系统构建

《Qt 5.12实战》简介

Implementation and application of STM32 system and custom bootloader

Record the problems and solutions encountered in using fastjson message converter
![[question 31] create two identical pets](/img/3a/de5321bddd8fb24765a532a88d6809.png)
[question 31] create two identical pets

IDEA 批量修改变量名、批量替换代码快捷键

Hackmyvm综合靶机 | Driftingblues-9(完结)

网关与分布式id

PLSQL developer 14 installation details

MySQL5.7安装操作手册(Centos7)
随机推荐
可切换开始,战斗,结算三界面的飞机小对决 ,模块化,pygame,Rect,exe打包
delphi的json类:SuperObject,以及简单用法jsonHelper
C# WebService 接口 通过Request请求获取json参数
动态规划定点突破 --leetcode题目64.最小路径和
Dynamic programming fixed-point breakthrough -- leetcode topic 64 Minimum path sum
Number
Oracle-SQL脚本记录
迅为i.MX6Q开发板Openwrt 文件系统构建
STM32系统和自定义bootloader的实现和应用
Environment Variables
Regular Expressions
leetcode 142. Circular linked list II
High availability system design
343. Find the product of decomposed integers and maximize integer break
leetcode 203. Remove linked list elements
注解功能補充
禁用谷歌跨域的一个办法
云原生KubeSphere实战多租户系统实战
2022-04-20: the small regiment goes to participate in the military training. The military training is coming to an end. The officer wants to divide n people in a row into m groups, and then ask each g
Base64 Encoding