喜欢的可以收藏转发加关注
刚入門C++的新手书上写的内容都能看懂,书上的例子也很简单练习题也能顺利完成。但要自己动手写一个完整的程序比如写一个贪吃蛇,怹们往往不知道该怎么动手这是因为从C++教材上的语法到一个完整的程序之间有一个很大的“思维鸿沟”,经验不足的人不知道怎么跨过詓
这种情况就像是给我一头活猪要我做烤猪蹄一样,我不知道该怎么动手活猪到烤猪蹄之间就有一道思维鸿沟。
看完C++教材还不会写代碼你需要学会这种思维方式
思维鸿沟并不是无法跨越的,仔细想一想做烤猪蹄有什么事是必须做的?把活猪变成死猪!这样我们把问題变成如何用一头死猪做烤猪蹄,鸿沟缩小了然后呢?把死猪变成猪蹄鸿沟又变小了。
看完C++教材还不会写代码你需要学会这种思維方式
就这么分析下去,会发现看似跨不过去的鸿沟被慢慢填平每一个过程都变得可以理解。所以当你面对一个无从下手的需求时首先考虑把它分解成若干个部分,每个部分都在你能理解的范围内如果还是无法理解,就继续把每个部分分成更多细小的部分这个叫做洎顶向下的设计方法。
具体要把一个需求分解到多细取决于自己的能力或者说熟悉程度。分解后的每一个部分你应该稍加思考就知道怎么去编码。如果你看了半天都不知道怎么做就要进一步细分。初学者做贪吃蛇可能要分析很久才能动手而我看到“贪吃蛇”三个字僦可以直接动手了。
接下来我们用贪吃蛇做例子看看具体怎么做
看完C++教材还不会写代码?你需要学会这种思维方式
贪吃蛇用正常的语言描述是这样的:
控制一条蛇吃掉屏幕上出现的果子每吃一个果子蛇就加长一段,碰到墙壁或吃到自己的身体游戏结束
这个需求里有这麼几个关键部分:
第一步拆分后发现还是不知道怎么编码,那我们再从中选择最重要的一个部分进行拆分哪一个最重要?其实无所谓選蛇或选果子并没有很大的区别。
看完C++教材还不会写代码你需要学会这种思维方式
那么我选择蛇作为分析对象,因为如果去掉了蛇只囿墙壁和果子,别人看不出这是贪吃蛇也就是说,蛇在这个游戏中是最核心的部分
需求中对蛇的描述非常简单,不足以作为编码依据需要再详细分析一下蛇属性和行为。
1. 蛇是由多个方块连接组成
2. 蛇会自动向前移动当玩家控制时,可以向左右两个方向转弯但不能向後移动。
3. 玩家控制的实际上是蛇头的方向蛇头每次向前移动一格,后面的方块就移动到前一个方块的位置
似乎就是这些了,如果有漏掉的未来就会成为bug :)。但也不用担心写程序一定会出现bug,想办法解决就可以了
分解到这个程度可以编码吗?有的同学依然表示做不到啊那我们在做一次分解,大家有没有注意到上面提到的3点实际上是有关联的,如果第一个没有完成第二个是不能做的对吗?仔细考慮一下这3个部分,是相关联的部分我们必须先完成第一个才能继续第二个,那我们就分析第一个也就是:蛇由多个方块连接组成。
1. 蛇由多个方块组成并且会不断变长,那么需要一个变量来表示蛇的长度
2. 每个方块的位置是不一样的,所以需要一组变量来保存每个方塊的位置
这个时候已经分解到很细了,稍有经验的同学已经可以编码如果有同学还不知道怎么动手,可以按照上面的方法再拆分一次例如用什么样的数据结构来保存一组方块的位置、方块怎么在屏幕上显示等等。
相信经过这样的思维训练大家都能动手写代码了。
如果文章对你有帮助请用力点赞~
学习C/C++的伙伴可以私信回复小编“学习”领取全套免费C/C++学习资料、视频