我闻言后点了点头,有了之前的应用场景做铺垫,再加上老爹说得这么仔细,所以即便老爹没有故事来借喻,我也把这个for的用法听懂了。
「老爹老爹,我发现轮回变数那部分代码完全可以放在轮回执行的内容里边啊?对不对?」
结合这老爹在画图工具上打出的那一段代码,再加上老爹给我讲解时备注的那一段文字,我得出了这么一个结论。
「的确如此!至于为什么要放在那个地方嘛,老爹不知道开发这门语言的人当时是怎么想的,所以也给不出确切的答案。」
老爹点了点头,而后笑着对我说道。
我脸一红,看来老爹已经猜到我要问什么了,得到这么一个不算答案的答案,我虽然有些不甘心,但也只好作罢。
「还有一个问题,一维数组的赋值和取值的确可以用for来完成,那二维数组怎么办呢?二维数组需要用两个轮回分别控制行和列才行啊?」
「哈哈,你自己都已经说出答案了,为什么还要问我啊?」
听了我的提问后,老爹哈哈笑道。
「我说出答案了?你是说!可是我不知道怎么使用连个轮回啊!」
我愣了一下,意识到了问题的所在。
「一分钟等于多少秒钟?」
「啊?60秒啊,怎么了?」
我原本以为老爹会给解疑,没有想到他却突然问了一个莫名其妙的问题。
「那你见过那种指针式的钟表吧?」
「嗯,我们教室里面还挂了一个呢。」
我点了点头。
「好,你看哈,秒针走一圈,分针也才走一个刻度。如果我们把一个刻度比作一次轮回的话,那么分针轮回一次,秒针要轮回60次,这个没有问题吧?」
老爹见我点了点头,又接着说道:「如果我们用一个变量min来代表分针,用给一个变量sec来表示秒针,你觉得怎么用for来表示它们的关系?」
「
int min = 0;
for(int sec = 0; sec < 60; sec++)
{
min++;
}
」
「嗯,你说得也没有错了,不过老爹想告诉你的不是这样,而是这样的:
for(int min = 0; min < 1; min++)
{
for(int sec = 0; sec < 60; sec++)
{
}
}
你看,是不是min轮回一次,sec要轮回60次?」
「可是,sec在轮回的时候,为什么min就停下来了?」
我不解道。
「你忘了,我一开始就和你说过,当for在开启轮回的时候,它所在的空间时间会停止。同样sec在轮回的时候,min的轮回也就停止了,必须等到se才能开启下一轮轮回。」
「等等,我要捋一捋这其中的关系,感觉有些混乱了。」
经过长达十分钟的思考,我总算理顺了思路,不过问了确认我是对的,我特意写了一个遍历二维数组的案例。在得到老爹的肯定后,我总算是松了一口气。
真是没有想到,就想偷懒加载一个地图而已,居然弄出了这么多幺蛾子。不过这下好了,推箱子这个游戏加载地图这一块的功能总算是要完成了。
像这种程序编写起来才有意思嘛,之前那些案例简直……
「那个……不好意思哈,还有一个知识点没有讲完,你忘了,还有一个同样掌管轮回的while呢。」
我心里正得意的时候,老爹不合时宜地浇了我一盆冷水。我刚刚那点得意瞬间消失得无影无踪,小脸苦得跟苦瓜似的。
「while的用法比for简单多了,而且刚刚已经提到它了哦!」
「我说了么?我怎么不记得了?」
我摸着下巴想了一会儿,确认自己没有说过和这个叫「while」的混沌先民相关的东西。