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