精品欧美无遮挡一区二区三区在线观看,中文字幕一区二区日韩欧美,久久久久国色αv免费观看,亚洲熟女乱综合一区二区三区

        ? 首頁(yè) ? 百科知識(shí) ?貪吃蛇游戲

        貪吃蛇游戲

        時(shí)間:2023-10-16 百科知識(shí) 版權(quán)反饋
        【摘要】:貪吃蛇游戲是一款經(jīng)典的游戲,在使用Visual C++6.0控制臺(tái),調(diào)用基本的C語(yǔ)言語(yǔ)句,盡可能少的使用控制臺(tái)函數(shù)和系統(tǒng)函數(shù)的情況下,編寫了本章的貪吃蛇游戲。為了便于讀者的理解,本游戲只實(shí)現(xiàn)貪吃蛇的核心功能,讀者可自行開發(fā)完善。為了使用方便,使用該結(jié)構(gòu)分別建立蛇頭結(jié)點(diǎn)、蛇身結(jié)點(diǎn)和蛇尾結(jié)點(diǎn)。判斷蛇吃到食物的方法是比較蛇頭和食物的位置是否重合。

        貪吃蛇游戲

        貪吃蛇游戲是一款經(jīng)典的游戲,在使用Visual C++6.0控制臺(tái),調(diào)用基本的C語(yǔ)言語(yǔ)句,盡可能少的使用控制臺(tái)函數(shù)和系統(tǒng)函數(shù)的情況下,編寫了本章的貪吃蛇游戲。為了便于讀者的理解,本游戲只實(shí)現(xiàn)貪吃蛇的核心功能,讀者可自行開發(fā)完善。

        一、需求分析

        為了把貪吃蛇游戲的核心功能分析透徹,把游戲功能分解成以下幾個(gè)方面逐一講述和實(shí)現(xiàn):

        (1)構(gòu)建蛇結(jié)構(gòu)和食物數(shù)據(jù)結(jié)構(gòu);

        (2)蛇身如何移動(dòng);

        (3)食物如何隨機(jī)出現(xiàn);

        (4)吃到食物,蛇身變長(zhǎng);

        (5)蛇死亡,游戲結(jié)束判讀;

        (6)繪制場(chǎng)景、蛇和食物。

        二、總體設(shè)計(jì)

        考慮到存儲(chǔ)蛇和控制蛇的實(shí)現(xiàn)方便性,建立如下數(shù)據(jù)結(jié)構(gòu),存儲(chǔ)蛇結(jié)點(diǎn)如下:

        img463

        描述一個(gè)蛇結(jié)點(diǎn),僅僅知道結(jié)點(diǎn)位置顯然是不夠的,需要建立該結(jié)點(diǎn)與前驅(qū)和后繼的關(guān)系才行,這樣移動(dòng)蛇身才變成了可能。為了使用方便,使用該結(jié)構(gòu)分別建立蛇頭結(jié)點(diǎn)、蛇身結(jié)點(diǎn)和蛇尾結(jié)點(diǎn)。

        食物有位置、不同的外觀和分值(這一點(diǎn)代碼中沒(méi)有涉及),所建立食物結(jié)構(gòu)如下:

        img464

        img465

        三、功能模塊實(shí)現(xiàn)

        下面將分別講解蛇身移動(dòng)方法、食物如何隨機(jī)出現(xiàn)、吃到食物、蛇身加長(zhǎng)和蛇的死亡判斷,最后給出題目源代碼。

        (1)蛇身移動(dòng)方法

        舉一個(gè)簡(jiǎn)單的例子,有兩個(gè)數(shù)分別是a和b,如果要把a(bǔ)變?yōu)閜,把b變?yōu)閍,偽代碼該如何實(shí)現(xiàn)呢?

        應(yīng)該這樣寫:b=a;a=p;從后至前依次賦值,才能得到正確結(jié)果。這和移動(dòng)蛇身的道理是一樣的,循環(huán)遍歷需要從蛇尾至蛇頭,最后移動(dòng)蛇頭至下一個(gè)位置。

        (2)食物隨機(jī)出現(xiàn)

        出現(xiàn)的食物要滿足兩個(gè)要求:①食物的位置是隨機(jī)的,可以是場(chǎng)景中的任何位置;②食物不允許出現(xiàn)在蛇身中。

        要實(shí)現(xiàn)第一個(gè)要求,需要使用隨機(jī)函數(shù)發(fā)生器產(chǎn)生食物的垂直和水平位置,和食物的價(jià)值;要實(shí)現(xiàn)第二個(gè)要求,需要在生成一組位置值后,判斷和蛇身位置的關(guān)系,如果存在相同的情況,就需要重新生成食物位置,直到不相同為止。

        這里需要注意的是,如果蛇身太長(zhǎng),判斷的次數(shù)就會(huì)很多,游戲就可能消耗了很多時(shí)間仍無(wú)法找到滿足要求的位置值,此時(shí)可以根據(jù)蛇頭的位置,直接指定它周圍空閑的位置為食物出現(xiàn)的位置(如果蛇頭周圍不存在任何一個(gè)空閑位置,這種情況蛇肯定死亡了,游戲也要結(jié)束了)。

        (3)吃到食物和蛇身增長(zhǎng)

        判斷蛇吃到食物的方法是比較蛇頭和食物的位置是否重合。如果吃到了食物,簡(jiǎn)單處理的話,就可以增長(zhǎng)一次蛇身,新增的結(jié)點(diǎn)追加到蛇尾,再隨機(jī)生成一個(gè)新食物。

        (4)蛇的死亡判斷

        判斷蛇是否死亡的方法是檢查蛇頭和蛇身其他結(jié)點(diǎn)是否重合,如果有重合,就標(biāo)志著蛇死亡。

        四、源代碼

        基于上面的講解,下面代碼詳細(xì)注釋了函數(shù)和語(yǔ)句的功能,能夠讓讀者更好的領(lǐng)會(huì)貪吃蛇游戲的具體實(shí)現(xiàn)方法。

        img466

        img467

        img468

        img469

        img470

        五、系統(tǒng)運(yùn)行

        單擊【調(diào)試】工具欄中的編譯按鈕、鏈接按鈕和運(yùn)行按鈕即可運(yùn)行該游戲,下面是游戲運(yùn)行中的截圖。

        img472

        六、小結(jié)

        本章所給出的貪吃蛇游戲代碼是使用鏈表實(shí)現(xiàn)的,功能還很不完善,讀者可以在分析并理解后,編寫功能更加完善的貪吃蛇游戲代碼。

        免責(zé)聲明:以上內(nèi)容源自網(wǎng)絡(luò),版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請(qǐng)告知,我們將盡快刪除相關(guān)內(nèi)容。

        我要反饋