听老爹这么一说,我心里居然产生了一种胜利就在前方的感觉,照这么算来的话,C语言的内容也不是很多嘛。
当然了,随着我对编程世界的了解逐渐加深,才深感我这个时候还是too young too simple。C语言就像是「道生一,一生二,二生三,三生万物」中的三,催生了程序的万物。
「指针」这词语被老爹提起不是一次两次了,现在老爹由对塔它如此推崇备至,不免让我对它产生那么一丝丝好奇。
函数这部分内容涉及到的理论知识的确还是太多了,在老爹的带领下,我们重头到位将理论知识实践了三遍才理解透彻。到了这一步,自然少不了把推箱子游戏优化完成。毕竟我能够坚持到这个时候,很大程度上取决于想将这个程序写好。
由于我和小弦子的开发经验的确是太少了,所以一时之间根本就没有办法在现有代码的基础上抽出关键信息。老爹思虑了一番,决定以此为契机,培养我们在这方面的意识。
「我们先来剖析一下,在对灰太狼上下左右四个方向按键的逻辑处理上的相同点和不同点。首先来说相同点:需要判断灰太狼移动的方向下一个位置,下下个位置,以此来决定是否进行移动。如果要移动,进行相应的逻辑处理,如修改地图数组中内容,移动灰太狼图片。
不同点其实只有一个:方向不同,因为方向不同造成灰太狼下个位置,下下个位置不同。
按照我们之前的逻辑,我们是在代码中是根据方向来确定灰太狼的下一个位置、下下个位置的坐标,如果我们事先知道了下个和下下个位置的坐标,那么逻辑处理是不是就能够统一了?」
老爹一句点醒梦中人,我和小弦子在一瞬间恍然大悟。归根究底,一切的不同就是因为方向,进而造成了确定灰太狼下个、下下个位置的坐标的过程不同。
如果确定了下个、下下个位置的坐标,在进行判断的时候就可以直接通过坐标来获取地图数组对应位置的值进行判断即可,那么判断逻辑自然就统一了!
分析到这里,我感觉问题已经解决了,恨不得立刻动手,先写为快。
「所以现在问题来了,我们应该如何根据方向来确定灰太狼下个和下下个位置的坐标。
目前我们已知的条件是灰太狼当前位置的坐标以及灰太狼移动的方向,答案肯定要从这两个已知条件来获取。
给你们10分钟的考虑时间,看看能不能确定这其中的关系。」
老爹笑了笑,说完就烧开水泡茶去了。
我和小弦子闻言后就开始思考这个问题,只见小弦子不断在空中比划,好像是在演算什么。
我的空间想象能力不如小弦子,于是只能取来笔和纸画了一个网格,开始寻找这其中的关系。
在我刚刚将灰太狼前后左右的坐标标出来后,我好像就发现了其中的规律所在。
假设灰太狼当前的位置坐标为x=3,y=4,那么它向上移动的下一个位置的坐标就是x=2,y=4;向下移动的下一个位置的坐标是x=4,y=4;向左移动的下一个位置的坐标是x=3,y=3,;向右移动的一个位置的坐标是x=3,y=5。
也就是说,如果向上或者向下移动,是对x做加减,向左或者向右移动,是对y做加减。
等等,按照这个逻辑,下下个位置的坐标好像也能够确定了。
向上,下下个位置的坐标为x=1,y=4;
向下,下下个位置的坐标为x=5,y=4;