中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

C語言實現的貪吃蛇游戲代碼分享

發布時間:2021-08-27 18:14:43 來源:億速云 閱讀:222 作者:chen 欄目:互聯網科技

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

方案設計

首先初始化背景,使用全局二維數組map[][]表示實體內容,設置邊界條件,即數組邊界設置為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數組中的位置,用全局一維數組snake保存蛇位置信息。

C語言實現的貪吃蛇游戲代碼分享

食物設置

在map數組內找到一格空地放置食物。為了防止每次產生的隨機數相同,初始化時種子設置為time,同時這里注意出現死循環。

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、食物

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

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++;              //分數加一                              SnakeSize++;       //蛇尺寸加一      map[snake[0].X][snake[0].Y] =HEAD;                                           //更新map      create_food();      break;

3、墻/蛇身/蛇頭

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

方向控制

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

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

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

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

向AI問一下細節

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

AI

高青县| 施甸县| 滨州市| 南木林县| 达孜县| 镇雄县| 潍坊市| 二连浩特市| 太保市| 双牌县| 乌鲁木齐市| 敦煌市| 宜丰县| 改则县| 陇南市| 古交市| 九台市| 安溪县| 翁源县| 西充县| 蓝田县| 达日县| 永寿县| 疏勒县| 金塔县| 香格里拉县| 江孜县| 久治县| 汤阴县| 德惠市| 历史| 治县。| 吴江市| 湟中县| 楚雄市| 武鸣县| 惠东县| 天气| 湖南省| 特克斯县| 高安市|