首頁 現(xiàn)實(shí)

程序媛養(yǎng)成計(jì)劃

第二十六章 收尾(上)

程序媛養(yǎng)成計(jì)劃 任煦之秋 2149 2020-04-29 21:48:14

  于是在這些知識(shí)的支撐下,推箱子游戲地圖的加載問題迎刃而解?,F(xiàn)在地圖數(shù)據(jù)裝在了一個(gè)八行八列的二維數(shù)組中,只需要使用雙重for循環(huán)遍歷數(shù)組下標(biāo)就能夠取出其中的元素了。

  在遍歷二維數(shù)組時(shí)使用if來判斷當(dāng)前元素的值,為0時(shí)什么都不做,為1時(shí)加載灰太狼的圖片,為2時(shí)加載懶羊羊的圖片,為3時(shí)加載樹,為4時(shí)加載煮羊的大黑鍋,最后再根據(jù)當(dāng)前數(shù)組元素的下標(biāo)來計(jì)算出圖片在窗體中的位置就大功告成了。

  這其中的知識(shí)點(diǎn)可謂和環(huán)環(huán)相扣,難怪老爹會(huì)用這個(gè)例子來讓我學(xué)習(xí)這些知識(shí)。

  人啊,永遠(yuǎn)是貪心的。

  一開始我總想著要如何實(shí)現(xiàn)加載地圖這個(gè)功能,現(xiàn)在實(shí)現(xiàn)了,我又不滿足于此,想要把整個(gè)游戲全部都完成。

  老爹當(dāng)然沒有理由拒絕我想要完成這個(gè)游戲的請(qǐng)求,因?yàn)槔系旧砭褪且粋€(gè)有始有終的人,自然不會(huì)讓我半途而廢。

  當(dāng)然,主要原因是我如今的知識(shí)儲(chǔ)備已經(jīng)完成能夠完成這個(gè)游戲的核心功能了。

  以上的兩點(diǎn)內(nèi)容純屬我個(gè)人想象。

  多年以后,我回顧這段時(shí)間才發(fā)現(xiàn),我還是年輕,太天真,老爹讓我做的每一件事都有他的深意。換句話說,從學(xué)習(xí)C語言開始,老爹就步步為營(yíng),為我設(shè)下了無數(shù)的陷阱,正等著我往里面踩呢。

  別看一個(gè)推箱子游戲操作起來簡(jiǎn)單,但這其中涉及到的邏輯還是挺復(fù)雜的,從分析到實(shí)現(xiàn),整整用了兩天。

  因?yàn)檫@其中的邏輯著實(shí)有點(diǎn)繞,我聽完第一遍的時(shí)候完全是一臉問號(hào),不知道老爹說了些什么。于是老爹又從頭到尾,仔仔細(xì)細(xì)地給我又說了一遍,我這才明白了七七八八。

  即便如此,在實(shí)現(xiàn)過程中還是向老爹問了不少問題。

  就拿移動(dòng)一步來說,首先需要判斷下一個(gè)位置是什么,如果是空,那就直接移動(dòng)過去,并且將地圖數(shù)組中灰太狼現(xiàn)在對(duì)應(yīng)的元素從1修改成0,下一個(gè)位置對(duì)應(yīng)的元素從0修改成1,最后再修改灰太狼的在窗體的位置就好了;如果是樹,就什么也不干。這兩種情況是最簡(jiǎn)單的,實(shí)現(xiàn)也不過分分鐘的事情。

  難就難在下一個(gè)位置是羊、黑鍋以及羊正在黑鍋里。

  如果下一個(gè)位置是羊,還需要判斷下下個(gè)位置是什么,這時(shí)又有五種可能:空、樹、羊、黑鍋、羊正在鍋里。

  其中下下個(gè)位置為樹、羊、羊正在黑鍋里邊是最簡(jiǎn)單的,因?yàn)檫@個(gè)時(shí)候灰太狼是不能移動(dòng)的,即什么都不做。麻煩的是下下個(gè)位置是為空和黑鍋。

  如果下下個(gè)位置是空,那么灰太狼將會(huì)把羊推到這個(gè)位置,而灰太狼自己則會(huì)在羊原來的位置,所以需要把下下個(gè)位置在地圖數(shù)組中對(duì)應(yīng)的元素從0修改成2,羊原來的位置從2修改成1,灰太狼原來的位置從1修改成0,最后再修改圖片在窗體中的位置就好了。

  下下個(gè)位置如果是黑鍋的話,要相對(duì)簡(jiǎn)單一些,需要做的就是把羊扔進(jìn)鍋里,即黑鍋的位置對(duì)應(yīng)的地圖數(shù)組元素要從原來的4變成6,因?yàn)?代表羊,4代表鍋,4+2=6,所以6代表羊在鍋里。

  而羊原來的位置就從2變成1,灰太狼原來的位置從1變成0,最后修改它們?cè)诖绑w中的位置。

  這只是下一個(gè)位置為羊的這種情況,另外還有下一個(gè)位置是黑鍋、以及羊在黑鍋里邊。

  下一個(gè)位置是黑鍋這種情況比較簡(jiǎn)單,除了要把黑鍋在地圖數(shù)組中對(duì)應(yīng)的元素值從4改為5(1代表狼,4代表鍋,4+1=5,所以5代表狼在鍋里)之外,其他的操作和為空幾乎一模一樣。

  不過這一點(diǎn)我有點(diǎn)不滿,灰太狼自己怎么能夠進(jìn)鍋里面呢?直播鐵鍋燉自己么?

  對(duì)于我提出的這點(diǎn)詬病,老爹丟下了一句話:「覺得不滿意就自己改?!?p>  這肯定不能忍,于是我就加了一點(diǎn)邏輯,當(dāng)?shù)貓D數(shù)組元素的值等于5時(shí),把黑鍋隱藏起來,只顯示灰太狼,其他的邏輯不變。

  對(duì)于我的不將就,老爹給予了充分的贊許。

  不過我還來不及高興,就被最后一種情況給虐得體無完膚,因?yàn)檫@種情況比是羊還麻煩。

  和下個(gè)位置是羊一樣,需要考慮下下個(gè)位置分別是空、樹、羊、黑鍋和羊在黑鍋里五種情況。

  其中下下個(gè)位置是樹、羊和羊在黑鍋里不用做任何處理,因?yàn)榛姨峭撇粍?dòng)。

  首先是下下個(gè)位置如果是空,那么羊就從鍋里面推出來了,而灰太狼自己掉進(jìn)了鍋里,本來也不怎么復(fù)雜,將下下個(gè)位置對(duì)應(yīng)在地圖數(shù)組里的元素從0修改成2,下個(gè)位置從原來的6變成5,灰太狼的位置從1變成0,然后再修改他們?cè)诖绑w中的位置。

  但是因?yàn)槲易约鹤魉?,之前添加了灰太狼掉進(jìn)鍋里的時(shí)候隱藏鍋。既然那邊都添加了邏輯,這邊肯定也不能落下啊。

  現(xiàn)在就剩下最后一種情況,下下個(gè)位置是黑鍋。這個(gè)時(shí)候羊從一個(gè)鍋移動(dòng)到了另外一個(gè)鍋,所以下下個(gè)位置在地圖數(shù)組中對(duì)應(yīng)的元素就從原來的4變成了6,緊接這灰太狼掉進(jìn)了原來羊所在的鍋,所以這個(gè)鍋在地圖數(shù)組中對(duì)應(yīng)的元素從6變成了5,灰太狼原來的位置從1變成了0。

  這個(gè)時(shí)候我有點(diǎn)想抽自己兩下,沒得事自作聰明修改個(gè)什么勁兒?這不是自己坑自己么?

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

  在費(fèi)盡九牛二虎之力后,推箱子這個(gè)游戲的核心功能終于讓我給完成了!此時(shí)我覺得成就感爆棚,仿佛自己真的就成了造物主,創(chuàng)造了一個(gè)世界。

  但是我總覺得好像少了點(diǎn)什么,不過哪能想這么多,先玩兒一把過過癮。

  為了方便分析,老爹找的這個(gè)地圖很簡(jiǎn)單,根本不用腦子就能完成,此時(shí)我有些不滿足這個(gè)游戲的難度,于是在網(wǎng)上找了一個(gè)比較難的地圖,用肉眼解析,將地圖數(shù)組中的數(shù)據(jù)換了。

  這個(gè)時(shí)候我就感受到了使用數(shù)組來存放地圖數(shù)據(jù)以及用for和if結(jié)合來加載地圖的好處,因?yàn)殡m然我換了數(shù)據(jù),其他邏輯完全不受影響。

  所以如果要切換關(guān)卡,就只需要修改地圖數(shù)組中的數(shù)據(jù)就行了。

  花了些時(shí)間將所有的羊都推進(jìn)了黑鍋,我終于意識(shí)到了問題所在。

按 “鍵盤左鍵←” 返回上一章  按 “鍵盤右鍵→” 進(jìn)入下一章  按 “空格鍵” 向下滾動(dòng)
目錄
目錄
設(shè)置
設(shè)置
書架
加入書架
書頁
返回書頁
指南