官术网_书友最值得收藏!

第21章 神奇的口袋(上)

  • 程序媛養成計劃
  • 任煦之秋
  • 2187字
  • 2020-04-24 21:53:54

既然背景圖片加載好了,狼已經套住了,那么接下來自然應該讓灰太狼最喜歡的肥羊們上場,可是肥羊們應該放在哪兒呢?總不能挨著挨著放啊。

這個時候我有點狐貍捉刺猬——無從下手的感覺,所以只能夠向老爹求助了。

老爹笑而不語,默默打開瀏覽器,在搜索引擎里邊輸入「推箱子」三個字,瀟灑干脆地敲擊了回車鍵。

「看到沒,推箱子游戲總共有5中元素:角色、箱子、目標、障礙物和背景,并且這其中蘊含了一些玄機,如果隨便亂放很可能導致箱子根本就沒有辦法全部移動到目標上面。」

老爹打開了一張經典推箱子游戲的地圖,詳細和我說起了上面的門道。

「現在咱們的背景是青青草原,角色是灰太狼,箱子自然就是可愛的小羊們了,至于目標嘛,就是這些黑鍋,灰太狼最終的目標是把所有的羊都送進鍋里煮著吃,至于障礙物嘛,就是這些樹咯。」

老爹一邊講解,一邊將昨天冒著坐牢風險爬下來的素材展示給我看。不管是灰太狼還是小羊們,以及黑鍋和樹都被老爹處理成了相同的寬和高。

「灰太狼這貨也是,其他狼都吃生羊肉,它非得吃涮羊肉,多少次小羊們都是在涮羊肉的過程中逃跑了。」

我搖了搖頭感嘆了一句。

「不讓羊跑了那不就沒戲了么?接下來還怎么演?」

老爹無奈地笑了笑。

「有道理!」

我深以為然地點了點頭。

「好了,你現在來數數,如果把灰太狼、小羊們、黑鍋和樹都當成一個格子的話,這個地圖上有多少個格子?」

「啊!真要數啊,看上去有七八十個吧。」

我苦著臉說道。

「你看哈,這個地圖其實是一個14行15列的表格,只不過這個表格中有些地方是空著的,有的是障礙物、箱子、目標和主角,如果我們一個一個的來加載,確定它們的位置,這是一個多么大的工程量?」

「那怎么辦啊?要是按照老爹你這么說的話,那得等到何年何月才能完成啊?」

聽完老爹的話,我滿臉愁容。原本以為實現這么一個游戲應該不難的,哪曾想是困難重重,看來老爹經常說萬事開頭難,中間難,結尾更難果然是真的。

不過我轉念一想,不對,老爹既然這么說肯定有什么解決方法。

「老爹,你直接說怎么解決吧,別賣關子了。」

我小心試探道。

「你個鬼丫頭,居然這么快就反應過來了。好吧,那我就跟你說說怎么解決這個問題。

首先,我們得把窗體的工作區分成15x14個格子,這樣窗體就和地圖對應其起來了,這一步倒是簡單,只需要設置窗體工作區的寬度和高度就可以了。

灰太狼、小羊們、黑鍋和樹都是正方形的圖片,并且變長是50像素,那么窗體工作區的寬度和高度分別是15x50和14x50,也就是750x600像素。

當然了,這個格子是不存在的,只是我們人為劃分的。」

老爹為了讓我更容易理解,充分利用了畫圖工具,圖文并茂地向我解析這其中的道理。

「為了方便描述和分析,我們先用一個8x8的表格,然后對灰太狼、小羊們、黑鍋和樹進行一個轉換,假設用數字0代表空白表格,1代表灰太狼,2代表羊,3代表樹,4代表黑鍋的話,那么整個地圖就變成了這樣:

0 0 3 3 3 0 0 0

0 0 3 4 3 0 0 0

0 0 3 0 3 3 3 3

3 3 3 2 0 2 4 3

3 4 0 2 1 3 3 3

3 3 3 3 2 3 0 0

0 0 0 3 4 3 0 0

0 0 0 3 3 0 0 0

現在1也就是灰太狼所在的格子在從零開始數第4行,第4列中,那么它在窗體工作區的位置是多少?」

老爹將灰太狼的圖片貼在了他在畫圖工具上繪制的表格中,所以很容易就看出來表格的行數、列數和位置的關系。

「灰太狼位置x=列號x圖片寬度,y=行號x圖片高度,所以x=4x50=200,y=4x200=100。」

我脫口而出道,這種級別的乘法題,都不用經過大腦。

「沒錯,這樣一來只要知道灰太狼、小羊們、黑鍋和樹在表格中的行數和列數,就能夠愛確定它們在窗體中顯示的位置了!」

「哦!」

我恍然大悟道。

「所以現在需要用一種方式把上面的表格和數字表示出來,然后讓計算機挨著去判斷表格里面的數字是多少,如果是0,說明是空白,什么都不做。如果是1就加載灰太狼的圖片,并且計算它的位置顯示在窗體中,如果是2就加載羊,3加載樹,4加載鍋。

最終問題鎖定在如果表示表格以及挨著判斷表格里的內容,這樣就引出了我們今天的內容——數組。」

老爹擰開水杯喝了一口溫水潤喉,畢竟為了引出這個內容繞了這么大的彎子。

「數組?What this?」

「顧名思義,就是一組數。」

老爹笑了笑。

「額……」

我有點無言以對,這說了不是跟沒說一樣嘛。

「好吧,數組其實就是一個魔法袋子。設想一下,假設你喜歡吃的薯片被你媽吃光了,這個時候你拉著老爹去超市買薯片。」

「什么?我的薯片又被你老婆偷偷吃光了?這個饞嘴貓,比我嘴都饞!」

聽到這個不幸的消息,我瞬間火氣直往頭上竄。

「不要激動,假設,只是假設而已!」

看著我雙眼都要噴出火的樣子,老爹立刻將我按在了椅子上。

「好吧,既然是假設,那就沒事了,你繼續講……」

「……好吧,因為你不想天天去超市買薯片,于是你一次性往購物車里放了10包薯片,這才推著購物車去收銀處付錢。

這個時候收銀的小姐姐看到你買了這么多薯片,但是因為購物車不準推出超市,于是小姐姐問你要不要袋子。

為了方便省事,你當然要袋子咯,于是十包薯片就裝在袋子里提回家了。

而數組的作用就和這個袋子一樣,只是里面裝的不是薯片了,而是一堆數據。在C語言中,我們創建一個數組需要聲明它的數據類型以及長度。如果把int型的數據比作一包薯片,那么在C語言中應該這么表示:

int arr[10];

arr就是那個袋子的名字,int表示袋子里面放的是什么,[10]表示口袋里最多只能放10個int元素。

但是C語言中的袋子比現實中的袋子更神奇,它會給袋子里的每個元素,相當于現實袋子里的一包薯片進行編號,我們可以通過編號拿到指定的元素,這就是它神奇的地方。」

主站蜘蛛池模板: 西林县| 永德县| 大方县| 马公市| 崇左市| 西宁市| 黑水县| 道真| 奉化市| 宜君县| 庆元县| 万山特区| 同江市| 永城市| 西贡区| 衡水市| 彭泽县| 城口县| 华坪县| 墨江| 宜昌市| 永川市| 建平县| 巴里| 泸州市| 恩施市| 柘城县| 双辽市| 荥经县| 海伦市| 门源| 巧家县| 宿州市| 平塘县| 永福县| 宜兰县| 长汀县| 甘洛县| 万州区| 江门市| 马尔康县|