登陆注册
77391200000026

第26章 收尾(上)

于是在这些知识的支撑下,推箱子游戏地图的加载问题迎刃而解。现在地图数据装在了一个八行八列的二维数组中,只需要使用双重for循环遍历数组下标就能够取出其中的元素了。

在遍历二维数组时使用if来判断当前元素的值,为0时什么都不做,为1时加载灰太狼的图片,为2时加载懒羊羊的图片,为3时加载树,为4时加载煮羊的大黑锅,最后再根据当前数组元素的下标来计算出图片在窗体中的位置就大功告成了。

这其中的知识点可谓和环环相扣,难怪老爹会用这个例子来让我学习这些知识。

人啊,永远是贪心的。

一开始我总想着要如何实现加载地图这个功能,现在实现了,我又不满足于此,想要把整个游戏全部都完成。

老爹当然没有理由拒绝我想要完成这个游戏的请求,因为老爹他本身就是一个有始有终的人,自然不会让我半途而废。

当然,主要原因是我如今的知识储备已经完成能够完成这个游戏的核心功能了。

以上的两点内容纯属我个人想象。

多年以后,我回顾这段时间才发现,我还是年轻,太天真,老爹让我做的每一件事都有他的深意。换句话说,从学习C语言开始,老爹就步步为营,为我设下了无数的陷阱,正等着我往里面踩呢。

别看一个推箱子游戏操作起来简单,但这其中涉及到的逻辑还是挺复杂的,从分析到实现,整整用了两天。

因为这其中的逻辑着实有点绕,我听完第一遍的时候完全是一脸问号,不知道老爹说了些什么。于是老爹又从头到尾,仔仔细细地给我又说了一遍,我这才明白了七七八八。

即便如此,在实现过程中还是向老爹问了不少问题。

就拿移动一步来说,首先需要判断下一个位置是什么,如果是空,那就直接移动过去,并且将地图数组中灰太狼现在对应的元素从1修改成0,下一个位置对应的元素从0修改成1,最后再修改灰太狼的在窗体的位置就好了;如果是树,就什么也不干。这两种情况是最简单的,实现也不过分分钟的事情。

难就难在下一个位置是羊、黑锅以及羊正在黑锅里。

如果下一个位置是羊,还需要判断下下个位置是什么,这时又有五种可能:空、树、羊、黑锅、羊正在锅里。

其中下下个位置为树、羊、羊正在黑锅里边是最简单的,因为这个时候灰太狼是不能移动的,即什么都不做。麻烦的是下下个位置是为空和黑锅。

如果下下个位置是空,那么灰太狼将会把羊推到这个位置,而灰太狼自己则会在羊原来的位置,所以需要把下下个位置在地图数组中对应的元素从0修改成2,羊原来的位置从2修改成1,灰太狼原来的位置从1修改成0,最后再修改图片在窗体中的位置就好了。

下下个位置如果是黑锅的话,要相对简单一些,需要做的就是把羊扔进锅里,即黑锅的位置对应的地图数组元素要从原来的4变成6,因为2代表羊,4代表锅,4+2=6,所以6代表羊在锅里。

而羊原来的位置就从2变成1,灰太狼原来的位置从1变成0,最后修改它们在窗体中的位置。

这只是下一个位置为羊的这种情况,另外还有下一个位置是黑锅、以及羊在黑锅里边。

下一个位置是黑锅这种情况比较简单,除了要把黑锅在地图数组中对应的元素值从4改为5(1代表狼,4代表锅,4+1=5,所以5代表狼在锅里)之外,其他的操作和为空几乎一模一样。

不过这一点我有点不满,灰太狼自己怎么能够进锅里面呢?直播铁锅炖自己么?

对于我提出的这点诟病,老爹丢下了一句话:「觉得不满意就自己改。」

这肯定不能忍,于是我就加了一点逻辑,当地图数组元素的值等于5时,把黑锅隐藏起来,只显示灰太狼,其他的逻辑不变。

对于我的不将就,老爹给予了充分的赞许。

不过我还来不及高兴,就被最后一种情况给虐得体无完肤,因为这种情况比是羊还麻烦。

和下个位置是羊一样,需要考虑下下个位置分别是空、树、羊、黑锅和羊在黑锅里五种情况。

其中下下个位置是树、羊和羊在黑锅里不用做任何处理,因为灰太狼推不动。

首先是下下个位置如果是空,那么羊就从锅里面推出来了,而灰太狼自己掉进了锅里,本来也不怎么复杂,将下下个位置对应在地图数组里的元素从0修改成2,下个位置从原来的6变成5,灰太狼的位置从1变成0,然后再修改他们在窗体中的位置。

但是因为我自己作死,之前添加了灰太狼掉进锅里的时候隐藏锅。既然那边都添加了逻辑,这边肯定也不能落下啊。

现在就剩下最后一种情况,下下个位置是黑锅。这个时候羊从一个锅移动到了另外一个锅,所以下下个位置在地图数组中对应的元素就从原来的4变成了6,紧接这灰太狼掉进了原来羊所在的锅,所以这个锅在地图数组中对应的元素从6变成了5,灰太狼原来的位置从1变成了0。

这个时候我有点想抽自己两下,没得事自作聪明修改个什么劲儿?这不是自己坑自己么?

有道是:天作孽,犹可恕。自作孽,不可活。自己挖的坑,哭着也要往里面跳。

在费尽九牛二虎之力后,推箱子这个游戏的核心功能终于让我给完成了!此时我觉得成就感爆棚,仿佛自己真的就成了造物主,创造了一个世界。

但是我总觉得好像少了点什么,不过哪能想这么多,先玩儿一把过过瘾。

为了方便分析,老爹找的这个地图很简单,根本不用脑子就能完成,此时我有些不满足这个游戏的难度,于是在网上找了一个比较难的地图,用肉眼解析,将地图数组中的数据换了。

这个时候我就感受到了使用数组来存放地图数据以及用for和if结合来加载地图的好处,因为虽然我换了数据,其他逻辑完全不受影响。

所以如果要切换关卡,就只需要修改地图数组中的数据就行了。

花了些时间将所有的羊都推进了黑锅,我终于意识到了问题所在。

同类推荐
  • 钟家那些事儿

    钟家那些事儿

    做了一辈子独生女的钟意从未想到,她还有个同母异父的姐姐。当姐姐突然成了她的公司总裁,当准姐夫成为心中至爱,当平凡之家钟家碰上拆迁赔偿……钟家这些事儿,就开始说不清啦。
  • 剧院

    剧院

    大学毕业后如愿成为一名老师的程宣大学毕业后如愿成为一名老师的程宣,,
  • 海蓝之夜

    海蓝之夜

    海蓝城市很小,风光秀美,气候宜人,李闻却不再留恋她的美好。让林若然没有想到的是,与朋友们辛苦创办的安装公司会面临倒闭的困局……
  • 我愿我随我心

    我愿我随我心

    每一个人生来便肩负着使命,而他,做为家中独男,他肩负着父母的期望,但是,这个期望压得他喘不过气来……
  • 好春光之小镇风云

    好春光之小镇风云

    邑惊尘这个名字是花了五块钱让镇西的陈瞎子取的,他爹一直觉得亏大了。在他折戟沉沙,不得不远走他乡的时候,邑惊尘决定找陈瞎子好好算算这笔账。“惊才绝艳,笑傲红尘,你不觉得这八个字按在我身上太大了吗?五块钱啊,你是不是应该把那五块钱还给我?”陈瞎子微微一笑,摸着他的胡子,慢条斯理地说:“不大不大,只不过能成就你的那个贵人还没出现而已。相信我,你命中有一红粉知己,只有她能引你走上正道,助你成就一番大事业!”再大的时代浪潮也逃不开家长里短,细水长流。
热门推荐
  • 海鸥没有风

    海鸥没有风

    曾经的起点作家兮痕,更名灵魂笔者。再一篇巨著,海鸥没有风,就徐徐向我们走来。兮痕一改清丽的笔锋,大胆尝试,华丽写法,每一处用词片段都极其华贵,期待您与起点共见证她的成长!!!
  • 万道凌极

    万道凌极

    凌极,是那无法触碰的领域!凌极者必要凌驾于世,极致证道;入凌极必先历九劫一罚,以道证己。地球少年无意来到这异世,寻重回之法,练无上之诀,就巅峰之路。迷雾森林里,皇城大比上,百族之战中,遇见了她,是否是前世的她?绝情谷内,断情崖上,为爱而疯,自甘堕落,一切的一切只为她一人;一生一代一双人!
  • 闪婚前妻你别跑

    闪婚前妻你别跑

    参加前男友婚礼,失意醉酒后闪婚,结果发现老公劈腿,她愤怒离婚。再次相遇,她成了他的下属。误会?难道我这双眼睛是摆设?等等!怎么又冒出来一个跟前夫一模一样的人?
  • 林云踏天传

    林云踏天传

    茫茫太空,暴王星的身形掠过,所见到的文明,它都会将之摧毁……
  • 我做太监那些年

    我做太监那些年

    她从小失去亲生父母,跟着养父进了皇宫,只可惜是冷宫,养父突然暴毙,她六神无主,一位才人体恤她,为了大事化小,让她接替养父,假扮太监。女扮男装,还是假扮太监,这条路有多难走可想而知,可是,没有退路……--情节虚构,请勿模仿
  • 斗罗之我在斗罗大陆

    斗罗之我在斗罗大陆

    她穿越成为唐三的姐姐…PS:作者文笔不好,不要介意。1.我是第一次写,所以可能有点不咋地;2.故事纯属虚构,有些规则可能和原著不太一样;3.可能有错字,放心我不会改的。
  • 粒子跳跃

    粒子跳跃

    每章会讲一个悬疑科幻略带小怕怕的故事,故事本身耐人寻味,读后回味无穷,引人深思。
  • 我的室友是古人

    我的室友是古人

    言右草一觉睡到了唐朝,还多了三个奇怪的室友:无敌剑客、椒房书生、酿酒先生?他靠着自己的房子和智商,由此走向了称霸天下的境界。忽悠袁天罡,教训李诗仙,拳打老太监。过去我无法出人头地,现在我就要逆天改命!
  • 爱了痛了伤了哭了①

    爱了痛了伤了哭了①

    有些话只能偷偷拿出来纪念遗憾。有些人只能深深埋藏在记忆彼岸。要很久很久以后,才能明白,有些爱情注定开头失,结尾残。
  • 血色幽灵

    血色幽灵

    看似平静无波的小县城却暗潮汹涌,一连串的凶杀案搞的刑警队长李大川一个头两个大,他能否智擒凶手,保家乡一方平安?