C語(yǔ)言實(shí)現(xiàn)的貪吃蛇游戲代碼分享

本篇內(nèi)容介紹了“C語(yǔ)言實(shí)現(xiàn)的貪吃蛇游戲代碼分享”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)企業(yè)建站,十多年網(wǎng)站建設(shè)經(jīng)驗(yàn),專注于網(wǎng)站建設(shè)技術(shù),精于網(wǎng)頁(yè)設(shè)計(jì),有多年建站和網(wǎng)站代運(yùn)營(yíng)經(jīng)驗(yàn),設(shè)計(jì)師為客戶打造網(wǎng)絡(luò)企業(yè)風(fēng)格,提供周到的建站售前咨詢和貼心的售后服務(wù)。對(duì)于網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)中不同領(lǐng)域進(jìn)行深入了解和探索,創(chuàng)新互聯(lián)在網(wǎng)站建設(shè)中充分了解客戶行業(yè)的需求,以靈動(dòng)的思維在網(wǎng)頁(yè)中充分展現(xiàn),通過(guò)對(duì)客戶行業(yè)精準(zhǔn)市場(chǎng)調(diào)研,為客戶提供的解決方案。

方案設(shè)計(jì)

首先初始化背景,使用全局二維數(shù)組map[][]表示實(shí)體內(nèi)容,設(shè)置邊界條件,即數(shù)組邊界設(shè)置為WALL:

 //初始化墻 for (int i = 0; i < ROW; i++) {        map[i][0] = map[i][COL - 1] =WALL; } for (int j = 0; j < COL; j++) {        map[0][j] = map[ROW - 1][j] =WALL; }

游戲啟動(dòng)時(shí)設(shè)置蛇在map數(shù)組中的位置,用全局一維數(shù)組snake保存蛇位置信息。

C語(yǔ)言實(shí)現(xiàn)的貪吃蛇游戲代碼分享

食物設(shè)置

在map數(shù)組內(nèi)找到一格空地放置食物。為了防止每次產(chǎn)生的隨機(jī)數(shù)相同,初始化時(shí)種子設(shè)置為time,同時(shí)這里注意出現(xiàn)死循環(huán)。

voidcreate_food(){     int row, col;     int cnt = 100;     do     {                 cnt--;            row = rand() % (ROW - 1) + 1;            col = rand() % (COL - 1) + 1;     } while (map[row][col] != SPACE&& cnt);     map[row][col] = FOOD;}

蛇移動(dòng)方案

1、空地

移動(dòng)方向前方為空地,刪除蛇尾,空地置為蛇頭:

case SPACE:    map[snake[SnakeSize -1].X][snake[SnakeSize - 1].Y] = SPACE; //原蛇尾位置置空    for (int i = SnakeSize - 1; i >0; i--)                                       //蛇尾到蛇頭整體移動(dòng)一位    {           snake[i] = snake[i - 1];    }    map[snake[0].X][snake[0].Y] =SNAKE;                                         //原蛇頭位置設(shè)置為蛇身    snake[0] = next;                                                                          //下一個(gè)位置設(shè)置為蛇頭    map[snake[0].X][snake[0].Y] =HEAD;                                           //更新map    break;

2、食物

更新分?jǐn)?shù)及蛇尺寸信息,下一位置設(shè)置為蛇頭,同時(shí)新生成食物。

case FOOD:      for (int i = SnakeSize; i > 0;i--)                                            //蛇尾到蛇頭整體移動(dòng)一位      {         snake[i] = snake[i - 1];                                                        }      map[snake[0].X][snake[0].Y] =SNAKE;                                         //蛇頭置 蛇      snake[0] = next;                                                                          //將下一個(gè)位置賦值給蛇頭      score++;              //分?jǐn)?shù)加一                              SnakeSize++;       //蛇尺寸加一      map[snake[0].X][snake[0].Y] =HEAD;                                           //更新map      create_food();      break;

3、墻/蛇身/蛇頭

下一位置非SPACE時(shí)游戲結(jié)束。

方向控制

讀取鍵盤(pán)中斷,忽略大小寫(xiě),這里注意一點(diǎn)就是蛇往右運(yùn)動(dòng)的時(shí)候選擇往左是無(wú)效操作,即忽略反向運(yùn)動(dòng)的命令。

主流程用while(1)死循環(huán):

 while (1) {        t2 = GetTickCount();        DrawMap();        if (kbhit())       //獲取鍵盤(pán)敲擊事件        {           ChangeDir();   //根據(jù)輸入字符設(shè)置運(yùn)動(dòng)方向           creep();       //根據(jù)下一位置做出決策
          t2 = GetTickCount();           t1 = t2;        }
       if (t2 - t1 > time_interval) //這里是為了保證即使用戶不操作,time_interval超時(shí)后蛇同樣能前進(jìn)一個(gè)位置        {           creep();           t1 = t2;        } }

“C語(yǔ)言實(shí)現(xiàn)的貪吃蛇游戲代碼分享”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

網(wǎng)站題目:C語(yǔ)言實(shí)現(xiàn)的貪吃蛇游戲代碼分享
文章源于:http://muchs.cn/article30/jiocso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、微信小程序、ChatGPT、全網(wǎng)營(yíng)銷推廣品牌網(wǎng)站制作、手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作