在之前的文章中,我po過(guò)這么一張圖片。
玩過(guò)的都知道這是簡(jiǎn)(chou)易(lou)版的貪食蛇游戲。當(dāng)然我不會(huì)告訴你這是用傳說(shuō)的c語(yǔ)言寫(xiě)的。
在覺(jué)得自己能親手打出這個(gè)很酷(er)炫(huo)的同時(shí),你有沒(méi)有想過(guò)如果是自己去編寫(xiě)要如何去做呢?好了,今天我就來(lái)兌現(xiàn)一下我說(shuō)過(guò)的話,給大家展示一下貪食蛇是怎么制作出來(lái)的。以及一個(gè)我認(rèn)為非常重要的學(xué)習(xí)方法。
黃金十二宮
標(biāo)題純粹好玩,請(qǐng)忽略
當(dāng)我重新整理完代碼,制作完課件之后,發(fā)現(xiàn)整個(gè)貪食蛇的制作正好分為了十二個(gè)步驟。
你好,世界
萬(wàn)變不離其中,一切都從最簡(jiǎn)單的開(kāi)始。
會(huì)飛的“你好,世界”
接著就是使用圖形庫(kù),讓字符“飛起來(lái)”。體驗(yàn)一下圖形庫(kù)是如何控制終端窗口的。
提示窗口
好了,前兩部玩過(guò)了,接下來(lái)要干點(diǎn)正事了。游戲中我們要先做什么呢?我們先來(lái)繪制一個(gè)消息提示窗口,用來(lái)提示按鍵的使用,游戲結(jié)束等信息吧。
嗯,提示窗口放在下面,當(dāng)然你也可以選擇放在上面哈。
輸出提示
有了提示窗口,不能空著。那就要寫(xiě)點(diǎn)東西唄。
看著是不是很簡(jiǎn)單?可不要小看哦。有時(shí)候我們認(rèn)為簡(jiǎn)單的,往往不是,而認(rèn)為難的卻會(huì)意想不到的容易。
游戲窗口
來(lái)了,這次得給我們的貪食蛇設(shè)置一個(gè)空間了。有了提示窗口的經(jīng)驗(yàn),這步簡(jiǎn)直就是小菜~
小蛇誕生
樣子畫(huà)好了,就可以畫(huà)我們的小蛇啦。從最小的開(kāi)始吧。
瞧,最開(kāi)始就一個(gè)點(diǎn)~
接收輸入
既然是游戲,那總得有地方接收輸入來(lái)控制。這步就來(lái)制作接收按鍵信息的功能。
控制小蛇
接收了輸入后,就可以判斷按鍵信息來(lái)控制小蛇啦。
小蛇能動(dòng)啦~ 是不是覺(jué)得蠻興奮的。
小蛇覓食
小蛇已經(jīng)能動(dòng)啦,那我們就來(lái)給小蛇投食,讓小蛇來(lái)找吃的吧。注意,食物每次出現(xiàn)的位置不一樣哦。
做一把上帝
哈哈,這么名字有點(diǎn)牛,實(shí)在想不到啥好名字了~
之前我們只有按鍵后小蛇才能動(dòng),這樣沒(méi)有天理啊。我們要讓小蛇自動(dòng)運(yùn)行起來(lái)~
仔細(xì)看是不是能看到每吃一個(gè)食物,速度就越快一些?
越吃越長(zhǎng)
萬(wàn)事俱備,只欠東風(fēng)
跑了這么一路,我們的貪食蛇終于只剩下最后一個(gè)步驟了。那就是越吃越長(zhǎng)~
牛逼了~我們的貪食蛇完成啦!
精雕細(xì)琢
哎,不對(duì),我們這蛇好像有點(diǎn)問(wèn)題。仔細(xì)觀察的你有沒(méi)有發(fā)現(xiàn)一些問(wèn)題呢?
對(duì)啦,有兩個(gè)問(wèn)題:
- 長(zhǎng)身體不是在吃到食物的時(shí)候,而是快要結(jié)束的時(shí)候
- 蛇頭碰到邊界的時(shí)候沒(méi)死,而是尾巴碰到的時(shí)候
所以寫(xiě)完代碼記得測(cè)試!!!
分而治之
好了,嘮叨了這么久,我要祭出這次文章的主題
divide and conquer
在編程學(xué)習(xí)工作過(guò)程中,乃至任何學(xué)習(xí)過(guò)程中,重要的思想之一就是分而治之。
比如像貪食蛇這樣的游戲,對(duì)于沒(méi)有經(jīng)驗(yàn)的人來(lái)說(shuō)是不是兩眼一抹黑,感覺(jué)手足無(wú)措,不知道如何下手?那如果我把整個(gè)過(guò)程分解成了十二個(gè)步驟,是不是覺(jué)得好像沒(méi)什么難的?不就是畫(huà)個(gè)框,打點(diǎn)字,動(dòng)一下,長(zhǎng)一點(diǎn)?
是的,其實(shí)編程沒(méi)有這么難,其實(shí)學(xué)習(xí)新知識(shí)能夠正確分解也就沒(méi)有這么難了。
希望大家在編程的道路上越走越黑
更多信息請(qǐng)關(guān)注我的微信公眾號(hào)《楊小偉的世界》,想要學(xué)習(xí)的同學(xué)可以報(bào)名我《通過(guò)c理解計(jì)算機(jī)系統(tǒng)》的課程。