色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何用C語言實現貪吃蛇游戲項目

C語言編程學習基地 ? 來源:C語言編程學習基地 ? 作者:C語言編程學習基地 ? 2021-11-09 16:38 ? 次閱讀

這篇文章主要為大家詳細介紹了C語言實現——《貪吃蛇項目》,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下!

本項目主要用到了C語言的循環,函數,指針,結構體,枚舉,聯合,文件操作,簡單的數據結構,并且對邏輯也是有一定的要求,但是這些在我們項目源碼里面都會有注釋,大家到時候學習的時候千萬不要忽略注釋,注釋可以更好地幫你理解代碼,尤其是C語言初學者。

本項目編譯環境:VS2019/VS2013;

插件:圖形庫插件easyX;

效果圖演示:

本案例配套學習教程:精講貪吃蛇——嗶哩嗶哩

源代碼示例:

#include#include//包含easyx圖形庫,可以使用給我們提供的一些函數,繪圖,貼圖#include#define WIN_WIDTH 640#define WIN_HEIGHT 480#define MAX_SNAKE 500 //蛇的最大節數
//枚舉enum DIR //枚舉蛇的方向{  UP,  DOWN,  LEFT,  RIGHT,};struct Food //食物{  int x;  int y;  DWORD color;  bool flag;//是否被吃掉,是否要重新生成食物}food;struct Pos{  int x;  int y;  DWORD color;};struct Snake//蛇的結構體{  int num;//當前節數  int dir;//蛇的方向  int score;//分數  int size;//蛇的寬和高  int speed;//蛇的移動速度  //表示每一節蛇的坐標 數組  struct Pos coor[MAX_SNAKE];}snake;void GameInit(){  //設置隨機數種子  srand(GetTickCount());  snake.num = 3;  snake.dir = RIGHT;  snake.score = 0;  snake.size = 10;  snake.speed = 10;  snake.coor[2].x = 0;  snake.coor[2].y = 0;  snake.coor[2].color = RGB(rand() % 256, rand() % 256, rand() % 256);//隨機生成三個數,用三原色表示顏色  snake.coor[1].x = 10;  snake.coor[1].y = 0;  snake.coor[1].color = RGB(rand() % 256, rand() % 256, rand() % 256);//隨機生成三個數,用三原色表示顏色  snake.coor[0].x = 20;  snake.coor[0].y = 0;  snake.coor[0].color = RGB(rand() % 256, rand() % 256, rand() % 256);//隨機生成三個數,用三原色表示顏色  //初始化食物  food.x = rand() % (WIN_WIDTH/10)*10;//1*10  10 20 30 40 50 60   food.y = rand() % (WIN_HEIGHT/10)*10;  food.color = RGB(rand() % 256, rand() % 256, rand() % 256);//隨機生成三個數,用三原色表示顏色  food.flag = true;}void GameDraw(){  cleardevice();
  for (int i = 0; i < snake.num; i++)  {    //設置填充顏色    setfillcolor(snake.coor[i].color);    //畫矩形    fillrectangle(snake.coor[i].x, snake.coor[i].y, snake.coor[i].x + 10, snake.coor[i].y + 10);  }  //繪制食物  //solidcircle(food.x,food.y,5)  if (food.flag)  {    setfillcolor(food.color);    solidellipse(food.x, food.y, food.x + 10, food.y + 10);  }  //繪制分數    //先把整數轉成字符串  char temp[20] = " ";  sprintf(temp, "分數:%d", snake.score);  outtextxy(10,10,temp);//如果報錯  “outtextxy”: 2 個重載中沒有一個可以轉換所有參數類型  一定是字符集問題  /*怎么修改字符集呢?三種方法    
  */
}void GameMove(){  for (int i = snake.num-1; i >0; i--)  {    snake.coor[i].x = snake.coor[i - 1].x;    snake.coor[i].y = snake.coor[i - 1].y;  }  switch(snake.dir)  {  case UP:    snake.coor[0].y -= snake.speed;    if (snake.coor[0].y < 0)    {      snake.coor[0].y = WIN_HEIGHT;    }    break;  case DOWN:    snake.coor[0].y += snake.speed;    if (snake.coor[0].y > WIN_HEIGHT)    {      snake.coor[0].y = 0;    }    break;  case LEFT:    snake.coor[0].x -= snake.speed;    if (snake.coor[0].x < 0)    {      snake.coor[0].x = WIN_WIDTH;    }    break;  case RIGHT:    snake.coor[0].x += snake.speed;    if (snake.coor[0].x > WIN_WIDTH)    {      snake.coor[0].x = 0;    }    break;  }}void GameControl(){  //獲取鍵盤輸入,_getch(); 不回顯函數,  char key = _getch();  switch (key)  {    case 72:      if (snake.dir!=DOWN)      {        snake.dir = UP;      }        break;    case 80:      if (snake.dir != UP)      {        snake.dir = DOWN;      }      break;    case 75:      if (snake.dir != RIGHT)      {        snake.dir = LEFT;      }      break;    case 77:      if (snake.dir != LEFT)      {        snake.dir = RIGHT;      }      break;  }  printf("%d
", key);}void CreateFood(){  if (!food.flag)  {    food.x = rand() % (WIN_WIDTH / 10) * 10;//1*10  10 20 30 40 50 60     food.y = rand() % (WIN_HEIGHT / 10) * 10;    food.color = RGB(rand() % 256, rand() % 256, rand() % 256);//隨機生成三個數,用三原色表示顏色    food.flag = true;  }}void EatFood(){  if (food.flag && snake.coor[0].x == food.x && snake.coor[0].y == food.y)  {    food.flag = false;    snake.num++;    snake.score += 10;    snake.coor[snake.num-1].color = RGB(rand() % 256, rand() % 256, rand() % 256);//隨機生成三個數,用三原色表示顏色    CreateFood();  }}int main(){  //1,創建窗口,init初始化 graphics 圖形窗口  initgraph(WIN_WIDTH, WIN_HEIGHT, SHOWCONSOLE);  setbkcolor(RGB(207, 214, 229));//設置顏色  cleardevice();//刷新窗口  GameInit();    while (1)  {        GameDraw();    GameMove();    if (_kbhit())    {      GameControl();    }      EatFood();    Sleep(100);    }
  getchar();  return 0;}

整個項目的源碼已經分享,這是一個比較完善的貪吃蛇游戲,從食物隨機出現到分數的顯示都已經實現了,大家在掌握了相應知識后練練手,尤其建議先自己了解其邏輯和思路之后去嘗試寫出來,而不是直接照著代碼抄,這樣對你幫助并不大的!

下一期我們將分享的是能夠自動行動的《進化版貪吃蛇》大家在掌握了這個項目的基礎上只需要加一個功能就好了,怎么樣實現貪吃蛇的自動吃食物,大家也可以自己先去想想試試,每一次的思考就是你進步的過程!

如果學習的過程中有什么問題,以及本項目有什么不懂的地方,都可以來找我交流,我來幫你!

那么今天的分享就到這里了,后續會更新更多精彩項目的,大家要好好學C語言C++喲~

責任編輯:haq
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7604

    瀏覽量

    136718
  • 源代碼
    +關注

    關注

    96

    文章

    2945

    瀏覽量

    66734

原文標題:C語言項目實戰:《貪吃蛇》零基礎項目!源碼 + 注釋解析

文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學習基地】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    使用C語言實現函數模板

      用C語言能不能實現一個通用的函數,既能完成整數的相加,又能完成浮點數的相加?
    的頭像 發表于 11-09 11:38 ?379次閱讀

    何用C語言實現高效查找(二分法)

    今天給分享一下使用C語言實現二分算法,主要包含以下幾部分內容:二分查找算法介紹二分查找算法使用場景二分查找算法代碼實現二分查找算法實現過程用C
    的頭像 發表于 06-04 08:04 ?1108次閱讀
    如<b class='flag-5'>何用</b><b class='flag-5'>C</b><b class='flag-5'>語言實現</b>高效查找(二分法)

    OrangePi AIPro/Kunpeng Pro主頻提升啦,加量不加價!

    的機械臂、智能機器人、手勢貪吃蛇、AI使用案例等吸引了眾多與會者駐足,觀看者絡繹不絕,對OrangePiAIpro表現出濃厚的興趣。與此同時,OrangePiKunp
    的頭像 發表于 05-16 17:32 ?406次閱讀
    OrangePi AIPro/Kunpeng Pro主頻提升啦,加量不加價!

    使用C語言實現的CRC計算單元的例子

    使用C語言實現的CRC計算單元的例子
    的頭像 發表于 05-16 16:16 ?965次閱讀

    嵌入式編程,如何用 C 語言實現狀態機設計?

    狀態機模式是一種行為模式,通過多態實現不同狀態的調轉行為的確是一種很好的方法,只可惜在嵌入式環境下,有時只能寫純C代碼,并且還需要考慮代碼的重入和多任務請求跳轉等情形,因此實現起來著實需要一番考慮
    發表于 04-23 11:00

    C語言實現Web參數傳遞

    電子發燒友網站提供《C語言實現Web參數傳遞.docx》資料免費下載
    發表于 03-24 09:14 ?2次下載

    嵌入式系統中C語言結構體的基礎實現與應用

    C語言中的數組只能允許程序員定義存儲相同類型數據。但是結構是C語言編程中允許您存儲不同數據類型的數據。
    發表于 03-12 14:29 ?497次閱讀
    嵌入式系統中<b class='flag-5'>C</b><b class='flag-5'>語言</b>結構體的基礎<b class='flag-5'>實現</b>與應用

    c語言,c++,java,python區別

    C語言C++、Java和Python是四種常見的編程語言,各有優點和特點。 C語言
    的頭像 發表于 02-05 14:11 ?2375次閱讀

    基于51單片機的貪吃蛇游戲設計

    電子發燒友網站提供《基于51單片機的貪吃蛇游戲設計.rar》資料免費下載
    發表于 01-12 10:00 ?0次下載

    基于51單片機的貪吃蛇設計

    電子發燒友網站提供《基于51單片機的貪吃蛇設計.rar》資料免費下載
    發表于 01-12 09:53 ?14次下載

    ADUC7061如何使用C語言實現EEPROM功能?

    我使用ADUC7061做的信號采集,現在客戶需要實現EEPROM功能來保存3-5個數據,請問如何使用C語言實現?不使用外部EEPROM 專用IC。
    發表于 01-12 06:56

    基于51單片機的貪吃蛇設計

    電子發燒友網站提供《基于51單片機的貪吃蛇設計.rar》資料免費下載
    發表于 01-03 10:26 ?0次下載

    單軸PSO視覺飛拍與精準輸出:EtherCAT超高速實時運動控制卡XPCIE1032H上位機C#開發(七)

    正運動技術EtherCAT控制卡在VS平臺采用C#語言實現的各種PSO功能。
    的頭像 發表于 01-03 09:50 ?1041次閱讀
    單軸PSO視覺飛拍與精準輸出:EtherCAT超高速實時運動控制卡XPCIE1032H上位機<b class='flag-5'>C</b>#開發(七)

    怎么寫出效率高、思路清晰的C語言程序?

    要用C語言的思維方式來進行程序的構架構建 要有良好的C語言算法基礎,以此來實現程序的邏輯構架 靈活運用
    的頭像 發表于 01-02 14:20 ?563次閱讀

    基于51單片機的貪吃蛇游戲設計

    基于51單片機的貪吃蛇游戲設計(仿真+實物)
    發表于 01-02 09:38 ?5次下載
    主站蜘蛛池模板: 97色色极品av影院| 2022国产精品不卡a| 妖精视频在线观看高清| 一级毛片免费视频网站| 中文字幕人成人乱码亚洲影视| 97免费在线视频| 儿子日母亲B好爽| 国产在线精品亚洲另类| 久久婷婷五月综合色精品首页| 蜜芽一二三区| 三级黄色在线| 亚洲精品无码AV中文字幕蜜桃| 一个人看的HD免费高清视频| 97国产蝌蚪视频在线观看| 草莓视频在线看免费高清观看| 国产成人高清精品免费5388密| 国内精品九九视频| 美女拔萝卜| 世界第一黄暴漫画家| 亚洲卫视论坛| ankha成人| 国产色精品VR一区二区| 老太婆风流特黄一级| 日韩 国产 欧美视频二区| 亚洲 欧洲 国产 日产 综合| 最新毛片网| 国产成人欧美日韩在线电影 | 99re这里只有精品国产| 国产91网站在线观看免费| 黄色小说在线| 欧美写真视频一区| 亚洲国产精品天堂在线播放| 97视频在线免费播放| 国产精品久久久久婷婷五月色婷婷| 久久99精品AV99果冻传媒| 漂亮美女2018完整版| 亚洲黄色成人| 扒开女人下面使劲桶动态图| 国内精品乱码卡一卡2卡三卡新区| 男人的天堂色偷偷| 亚洲 日韩 色 图网站|