貪吃蛇開(kāi)發(fā)隨筆 V1.0版本
貪吃蛇是我用c語(yǔ)言寫的真正意義上的一個(gè)程序。感覺(jué)很新奇。以前都是用c語(yǔ)言解題,現(xiàn)在用c語(yǔ)言寫了一個(gè)游戲,中間的差距還是挺大的。這個(gè)貪吃蛇,基本上是照著別人的源碼抄的。自己還沒(méi)有這方面的思維。抄完了之后,又修改了一下。感覺(jué)思維正在發(fā)生跳轉(zhuǎn)。通過(guò)這個(gè)程序,認(rèn)識(shí)到自己的水平還是挺差勁的。不過(guò),估計(jì)在抄上幾個(gè)小游戲后,就應(yīng)該能形成自己的思維。到時(shí)候就能開(kāi)發(fā)出自己的程序了。
另外還學(xué)到了一點(diǎn)。就是在這個(gè)程序中,把一個(gè)游戲分成了很多的模塊,然后每個(gè)模塊寫一個(gè)函數(shù),這樣寫出來(lái)的程序很耐讀。調(diào)試也方便。學(xué)習(xí)之。
還需努力 ———————————————————————————————————
V1.1版本(Sarah,thinking獻(xiàn)禮版)
與v1.0版本改進(jìn)說(shuō)明
1.注冊(cè)BGI驅(qū)動(dòng),使之可以脫離.BGI文件運(yùn)行
2.增加啟動(dòng)界面,引入音樂(lè)
3.改進(jìn)注釋,增加函數(shù)注釋。
這三項(xiàng)都是收別的程序的啟發(fā)。第一項(xiàng)的方法在TC的示例程序中就有。第二項(xiàng)很簡(jiǎn)單,一個(gè)圖形結(jié)束后,然后再清屏就是了。第三個(gè)是看著別人的注釋很不錯(cuò)。尤其是對(duì)函數(shù)的注釋。
/*******************************************************************************
** 函數(shù)名稱:drawmat
** 函數(shù)描述:依次:字模指針、點(diǎn)陣大小、起始坐標(biāo)(x,y)、顏色
** 輸入?yún)?shù):*mat,matsize,x,y,color
** 輸出參數(shù):無(wú)
*******************************************************************************/
雖然占用的行數(shù)有點(diǎn)多了。不過(guò)注釋的很清晰,于是引進(jìn)之。 在下面的學(xué)習(xí)中,希望能找到用C語(yǔ)言引進(jìn)位圖,和音樂(lè)的方法。是游戲更生動(dòng)一些。
———————————————————————————————————
V1.2版本(自動(dòng)尋路版)
此版本與前面版本的不同之處在于,增加了自動(dòng)尋路函數(shù)。在開(kāi)始畫面中可以選擇,如果選1。則手動(dòng)。選2。則自動(dòng)。
想法:增加一個(gè)findway()函數(shù)。此函數(shù)的功能是判斷蛇頭與食物之間的坐標(biāo)關(guān)系。蛇頭的橫坐標(biāo)減去食物的橫坐標(biāo),負(fù)則發(fā)出右行指令;正責(zé)發(fā)生左行指令?v坐標(biāo)減去食物的縱坐標(biāo),負(fù)責(zé)發(fā)出下行指令;正則發(fā)出上行指令。(注:計(jì)算機(jī)中坐標(biāo)系的原點(diǎn)在左上角)。但是要注意的是:1。發(fā)出的指令不能與行使的方向相反。這樣的話,則需要在函數(shù)中添加一個(gè)判斷,如果發(fā)出的指令與蛇行駛的方向相反的話,先讓蛇垂直運(yùn)動(dòng)一下。2:在某些特殊情況下,在會(huì)撞墻,因此還需要加個(gè)撞墻判斷條件。
bug:1.容易撞到自己。2.如果食物出現(xiàn)在墻壁,容易死亡。
此版本是個(gè)失敗的版本。蛇的走法千奇百怪,撞墻的方法多種多樣。目前的水平還不能考慮到那么多情況。寫出來(lái)一個(gè)很容易自身的貪吃蛇。哎。,。
———————————————————————————————————
在家編的這個(gè)小程序,深深地體會(huì)到自己的不足。學(xué)完c語(yǔ)言,僅僅開(kāi)了一扇門而已。也體會(huì)到為啥能成為一個(gè)程序員,至少需要兩年的時(shí)間。太多的領(lǐng)域需要我們?nèi)ヌ剿。windows,Linux,Unix,算法,網(wǎng)絡(luò),圖像,3D,引擎。。。。每一項(xiàng)都有著很深的學(xué)問(wèn)。浩浩蕩蕩,無(wú)窮無(wú)盡。我們必須不斷地努力,在繁雜的表面下,找到共同的地方。抓住根源,才能成為一代宗師。 我們還太嫩,即使學(xué)完c語(yǔ)言,學(xué)完數(shù)據(jù)結(jié)構(gòu),學(xué)完算法分析?粗娔X里滿滿的一點(diǎn)都看不懂得資料,我們必須有壓力。突然想起一個(gè)有人評(píng)論以前的中美黑客大戰(zhàn),讀來(lái)汗顏不止“你們?cè)诿绹?guó)人的系統(tǒng)上,利用美國(guó)人發(fā)現(xiàn)的漏洞,拿著美國(guó)人寫的工具,去攻擊美國(guó)人”。在此不做評(píng)論。 現(xiàn)在不想說(shuō)過(guò)多的廢話,最后只想問(wèn)自己一句,你盡力了么?
/* WIN-TC BGI 圖形編程模板 */
#include "Conio.h"
#include "graphics.h"
#define closegr closegraph
void initgr(void) /* BGI初始化 */
{
int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同樣效果 */
registerbgidriver(EGAVGA_driver);/* 注冊(cè)BGI驅(qū)動(dòng)后可以不需要.BGI文件的支持運(yùn)行 */
initgraph(&gd, &gm, "");
}
int main(void)
{
initgr(); /* BGI初始化 */
/*****此部分添加你自己的代碼,例如
line(25, 25, 220, 220);
circle(100, 100, 50);
等等*****/
getch(); /* 暫停一下,看看前面繪圖代碼的運(yùn)行結(jié)果 */
closegr(); /* 恢復(fù)TEXT屏幕模式 */
return 0;
}
|