扫雷与三子棋修改版

news/2024/12/28 4:56:38/

萌新第一用C写了一个不正经的三子棋跟扫雷,比较兴奋,控制不住自己想分享给其他人的欲望,让大家看看我这NB的代码

在听到这两个项目之后我当时就懵了,要用C学的那点东西去实现扫雷跟三子棋这两个游戏,我实在是。。。。。。很懵,感觉这么复杂的两个程序不是我学的那点东西可以做出来的,不过在看了别人写的过程之后,我的思路豁然开朗,满脑子就这!?就这!?
下面就说说这两个项目给我的启发

一,分析问题,模块化思想

1.分析问题 x

在写这两个项目的时候我门用了一种我认为比较重要的有意思的思考问题的方法我,要实现一个三子棋,我们要干什么,三子棋的本质就是读取用户输入,储存,读取电脑输入,判断输赢,而为了储存数据所以我创建了一个3*3的数组,所以我们程序的重点就是在这个数组上,而扫雷也是同理,用们也是要创建一个数组储存雷的位置,但我们不能直接把雷的位置告诉玩家,所以我创建了另外一个数组

2.模块化思想

知道问题的大致思路——控制数组上,但是到这还是没有实现的思路,

思考游戏主体,首先应该(打印棋盘),(读取用户输入),(判断输赢),然后再(打印棋盘),之后后电脑又是(电脑输入),在(判断输赢),在(打印棋盘)因为这一个过程是往复直到得出输赢的所以我用一个while(1)循环直到得出赢了或输了之后才跳出这个循环,这样,游戏主体部分就被分成了一个一个的(块)我们把括号中的东西再用函数的知识封装成一个一个的函数——把各项功能交给函数去实现,这样这个游戏就基本上没问题了

同样的方法去分析扫雷的话那就是创建雷区(两个数组),(初始化雷区),(打印雷区),(生成地雷),(排除雷),(判断输赢)

3.调试,调试的方法真的太灵活了,我真TM喜欢

二,具体实现

具体实现的时候我将项目分成了三个部分1.测试(游戏的逻辑部分包括菜单也在这)

2.一个.h文件包含了所我要遇到的头文件和函数声明(便于在其他文件夹使用这些函数,不用多次书写声明),3.实现,我所有的函数都是在这里实现的,这样编写程序有一个很明显的好处,易于调试

三,示例

1.头文件部分
在这里插入图片描述
这是我自己创建的名为“个不一般的三子棋.h”的头文件里面包含了我用到的一些库还有我的自定义函数声明,自定义常量是为了可以随时修改游戏的内容,这里我定义的是棋盘的行和列的长度,我随时可以把它改成三子棋或五子棋或围棋

2.测试部分

这个部分我认为是我游戏实现的思路,包含了开始菜单和游戏的主函数
在这里插入图片描述
因为玩家玩了一把之后可能还想继续再玩一把,并且至少让同学进入一次游戏菜单所以我用了一个do while()循环,并且根据用户的输入判断是否跳出循环退出游戏
在这里插入图片描述
这里的最后一部分,用于判断是玩家赢还是电脑赢还是和棋(根据pd函数的返回值去进行判断)

而之前的部分可以随时更改函数调用的顺序来实现调试等各种功能(这点在扫雷里面尤其好用)因为这个游戏不断重复人输入然后电脑输入这个步骤所以在外层用了一个while(1)循环指知道分出输赢之后才跳出循环结束一句游戏回到菜单部分

3.实现部分

1)菜单

在这里插入图片描述
2)游戏说明
在这里插入图片描述
3)初始化棋盘

在这里插入图片描述
4)打印棋盘
在这里插入图片描述
5)人输入
在这里插入图片描述
6)电脑输入

在这里插入图片描述
7)判断输
在这里插入图片描述
8)判断赢
在这里插入图片描述
对于调试,一定要分步调试,要不然写道最后东西多了错误比较难以排查,而且调试的方法非常多,尤其是在扫雷那个地方,可以通过更改调用函数的顺序实现各种不同的调试,修改定义的雷的数目,数组的大小等等,还有就是实现的方式是个不相同的,比如扫雷判断赢可以通过进入排查函数的次数,但我是通过统计数组中剩余的*的数目进行判断的,思路可能相同,但是实现的方式有很多

而且对于用户的输入一定要判断书否合法,因为你不知道这个世界上有多少傻逼用户

ps题外话,虽然这个项目看起来很难,但是用的知识确实不多,当你真的试过之后才会发现一切都不过如此,希望跟我一样的萌新们不要畏难,积极努力,才能取得成就

最后欢迎萌新加我WX:SHI2500111


http://www.ppmy.cn/news/918026.html

相关文章

Java项目之“拼图小游戏”

文章目录 一、项目简介二、游戏展示三、程序设计1. 创建游戏主界面( GameJFrame )2. 初始化界面 ( initJFrame )3. 初始化菜单 ( initJMenuBar )4. 初始化数据 ( initData )5. 初始化图片 ( initImage )6. 键盘监听事件 ( keyPressed 、keyReleased)7. 按钮监听事件 ( actionPe…

Java游戏开发——拼图游戏经典版

游戏介绍: 拼图游戏是一款经典的益智游戏,游戏难度分为 简单、正常、困难 三种难度,分别对应3*3,4*4,5*5布局,游戏开始前图片被随机打乱,空块位于最右下角,玩家通过点击空块周围图片或者按键方式对图片和空…

Java基础:拼图小游戏(包含Java代码)

涉及到的知识: 1.图形用户接口GUI(Graphical User Interface)用图形化的方式显示操作界面 两个体系: AWT包和Swing包 2.界面会用到JFrame类 3.界面中的菜单会用到JMenuBar, JMenu, JMenuItem 4.添加图片 在设置完JLabel的location之后还需要获得展示内容的窗体, 通过setLay…

FBI 树

题目描述 我们可以把由 0 和 1 组成的字符串分为三类:全 0 串称为 B 串,全 1 串称为 I 串,既含 0 又含 1 的串则称为 F 串。 FBI 树是一种二叉树,它的结点类型也包括 F 结点,B 结点和 I 结点三种。由一个长度为2的N次…

js Array集合

创建集合的多种方式 //创建集合 var arr new Array("1","2","3"); var arr ["a","b","c"];var arr{key:"zs",name:"张三"};//对象 var arr[{key:"zs",name:"张三"},{…

csgo 简单发光透视

带特征码搜索,官匹可用 依赖:pymem,win32api https://github.com/saiveen1/Csgo-GlowHack F1 显示队友,F2开关,END退出 另附上C版(自瞄 透视(D3D)): https://github.com/saiveen1/CsgoInternal 注入工具可以github搜…

Unity Shader人物发光特效

Unity Shader人物发光特效 写在前面效果实现方法项目地址写在后面 写在前面 当人物被击中或则有任务引导提升时,人物身上将会有发光特效,这里我自己实现一下。 效果 实现方法 核心思想就是将贴图试图向量(朝摄像机方向)与法线向量单位化后做点乘从而得…

Python脚本实现云顶之弈自动挂机刷局数!这操作怎么说?

前言 1.不使用外部硬件模块,仅使用Python库实现。 2.有些代码可以再优化,处理一些异常的情况。 我会在文章最后附上在win10下使用pyinstaller打包好的可执行程序。如果和我的电脑屏幕分辨率一样的,可以直接下载下来测试使用。 本文下面构…