溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發(fā)布時間:2021-08-27 18:14:43 來源:億速云 閱讀:214 作者:chen 欄目:互聯(lián)網(wǎng)科技

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

方案設計

首先初始化背景,使用全局二維數(shù)組map[][]表示實體內(nèi)容,設置邊界條件,即數(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; }

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

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

食物設置

在map數(shù)組內(nèi)找到一格空地放置食物。為了防止每次產(chǎn)生的隨機數(shù)相同,初始化時種子設置為time,同時這里注意出現(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;}

蛇移動方案

1、空地

移動方向前方為空地,刪除蛇尾,空地置為蛇頭:

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

2、食物

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

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

3、墻/蛇身/蛇頭

下一位置非SPACE時游戲結束。

方向控制

讀取鍵盤中斷,忽略大小寫,這里注意一點就是蛇往右運動的時候選擇往左是無效操作,即忽略反向運動的命令。

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

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

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

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI