听老爹这么一说,我心里居然产生了一种胜利就在前方的感觉,照这么算来的话,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;
向左,下下个位置的坐标为x=3,y=2;
向下,下下个位置的坐标为x=3,y=6;
上下方向的规律是:下个位置坐标的x=灰太狼坐标的x±1,下下个位置坐标的x=灰太狼坐标的x±2。
同理左右方向的规律是:下个位置坐标的y=灰太狼坐标的y±1,下下个位置坐标的y=灰太狼坐标的y±2。
「逻辑是没错,关系也很容易的出来,通过switch语句来判定方向,然后就能够确定下个位置和下下个位置的坐标了。
这样实现功能是没有什么问题了,但总觉得似乎还有其他的办法?能不能不通过switch来判断方向?对了,方向按键有自己的键值,左37,上38,右39,下40,这其中会不会有什么联系?」
在将坐标和方向的关系理清了后,我又开始考虑如何在不使用switch语句的情况下来计算出下一个位置以及下下个位置的坐标。
一旁的小弦子摸着下巴,眉头紧皱,想必也是陷入了某个死胡同当中。
10分钟悄然而过,然而我还是没有想出如何通过键值和灰太狼当前的位置坐标来推算出下一个位置坐标。
「怎么样,小家伙们?有没有什么收获呀?」
老爹笑着问道。
「上下方向的规律是:下个位置坐标的x=灰太狼坐标的x±1,下下个位置坐标的x=灰太狼坐标的x±2。
左右方向的规律是:下个位置坐标的y=灰太狼坐标的y±1,下下个位置坐标的y=灰太狼坐标的y±2。」
我和小弦子一起回答道。
然而我们俩却不约而同地露出了一副苦瓜脸,丝毫没有因为得出了这个规律而沾沾自喜。
不仅如此,就连坐在一旁的六叔叔都露出了一副沉思的样子。
「对呀,那你们两个小家伙还一副愁眉苦脸的样子?」
老爹哑然。
「老爹,我总觉得按键的键值和这个规律应该是有某种联系的,如果能够找出来这种联系,我们就可以不使用switch了!可是我想了半天也没有想出这种关系是什么。」
我叹了一口气。
「我赞同玥玥的说法,也认为键值和这个规律必然存在某种联系!可惜始终没有找到这其中的关键所在。」
小弦子也是皱着眉头说道。
「嗯,不错不错,你们已经在开始钻研算法的问题了,算是和它的第一次接触了吧!虽然还很浅显,但这是一个好的开端。你们说得没错,键值的确和这个规律有着联系,一旦找到了这个联系,就可以通过计算的方式把规律给呈现出来,从而达到不使用switch的目的。」