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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何用C語言實(shí)現(xiàn)進(jìn)化版貪吃蛇項(xiàng)目

C語言編程學(xué)習(xí)基地 ? 來源:C語言編程學(xué)習(xí)基地 ? 作者:C語言編程學(xué)習(xí)基地 ? 2021-11-08 15:49 ? 次閱讀

這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)——《進(jìn)化版貪吃蛇項(xiàng)目》,也就是在我們上一個(gè)發(fā)布的文章項(xiàng)目分享的基礎(chǔ)上,實(shí)現(xiàn)貪吃蛇的自動(dòng)行動(dòng),你可以按鍵也可以不按鍵,讓蛇自己找食物!還是挺好玩的,一起來看看吧!

文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下!

項(xiàng)目實(shí)現(xiàn)要求:

1.學(xué)過C語言

2.熟悉C語言數(shù)組

3.熟悉結(jié)構(gòu)體

4.按鍵交互 程序:1.按鍵交互 2.鼠標(biāo)交互

5.創(chuàng)建圖形窗口

6.基本繪圖

但是這些在我們項(xiàng)目源碼里面都會(huì)有注釋,大家到時(shí)候?qū)W習(xí)的時(shí)候千萬不要忽略注釋,注釋可以更好地幫你理解代碼,尤其是C語言初學(xué)者。

本項(xiàng)目編譯環(huán)境:VS2019/VS2013;

插件:圖形庫插件easyX;

本案例配套學(xué)習(xí)教程:進(jìn)化版貪吃蛇——嗶哩嗶哩

源代碼示例:

#define _CRT_SECURE_NO_WARNINGS#include #include #include #include     //報(bào)錯(cuò):安裝圖形庫插件#include #define MAX 100        //蛇最大節(jié)數(shù)/*  1.學(xué)過C語言  2.熟悉C語言數(shù)組  3.熟悉結(jié)構(gòu)體  4.按鍵交互  程序:1.按鍵交互   2.鼠標(biāo)交互  5.創(chuàng)建圖形窗口  6.基本繪圖*///1.把程序所要用的數(shù)據(jù)抽象出來typedef struct pointXY{  int x;  int y;}MYPOINT;HWND hwnd = NULL;
//蛇struct mySnake{  int num;  MYPOINT xy[MAX];  char postion;    //表示方向,標(biāo)記}snake;
//食物struct myFood{  MYPOINT foodxy;  int flag;  int eatGrade;}food;
//把方向枚舉出來enum movPostion{right=1,left=2,down=3,up=4};//整個(gè)項(xiàng)目劃分//1.初始化蛇void initSnake(){  snake.xy[2].x = 0;  snake.xy[2].y = 0;
  snake.xy[1].x = 10;  snake.xy[1].y = 0;
  snake.xy[0].x = 20;  snake.xy[0].y = 0;
  snake.num = 3;  snake.postion = right;
  food.flag = 0;}//2.繪制蛇void drawSnake(){  for (int i = 0; i < snake.num; i++)  {    setlinecolor(RED);    setfillcolor(GREEN);    fillrectangle(snake.xy[i].x, snake.xy[i].y, snake.xy[i].x + 10, snake.xy[i].y + 10);  }}
//3.移動(dòng)蛇void moveSnake(){  //除了第一節(jié)之外,后面的坐標(biāo)都是前一節(jié)坐標(biāo)  for (int i = snake.num - 1; i > 0; i--)  {    snake.xy[i].x = snake.xy[i - 1].x;    snake.xy[i].y = snake.xy[i - 1].y;  }  //蛇頭怎么走,要根據(jù)方向標(biāo)志去做移動(dòng)  switch (snake.postion)  {  case right:    snake.xy[0].x += 10;    break;  case left:    snake.xy[0].x -= 10;    break;  case down:    snake.xy[0].y += 10;    break;  case up:    snake.xy[0].y -= 10;    break;  }

}//4.按鍵用戶:人玩蛇void keyDown(){  static char userkey = '';    //VC  getch不需要加下劃線  //userkey=_getch();    //不可見輸入  //自己生成按鍵  switch (snake.postion)  {  case right:  case left:    if (food.foodxy.y >= snake.xy[0].y)    {      userkey = 80;    }    else  if (food.foodxy.y0].y)    {      userkey = 72;    }    break;  case up:  case down:    if (food.foodxy.x >= snake.xy[0].x)    {      userkey = 77;    }    else  if (food.foodxy.x < snake.xy[0].x)    {      userkey = 75;    }    break;  }  switch (userkey)  {  case 'w':  case 'W':  case 72:  //上    if (snake.postion != down)    {      //蛇往上走,你要排除掉蛇本來是朝下      snake.postion = up;    }    break;  case 's':  case 'S':  case 80:  //下    if (snake.postion != up)    {      snake.postion = down;    }    break;  case 'a':  case 'A':  case 75:  //左    if (snake.postion != right)    {      snake.postion = left;    }    break;  case 'd':  case 'D':  case 77:  //右    if (snake.postion != left)    {      snake.postion = right;    }  }}//初始化食物void  initFood(){  //0,63    630   640    //0,47    470   480  food.foodxy.x = rand() % 64 * 10;  //只能是10的整數(shù)倍,蛇頭才能對齊食物  food.foodxy.y = rand() % 48 * 10;  food.flag = 1;  //食物不能出現(xiàn)在蛇身上  for (int i = 0; i < snake.num; i++)  {    if (food.foodxy.x == snake.xy[i].x&&food.foodxy.y == snake.xy[i].y)    {      food.foodxy.x = rand() % 64 * 10;  //只能是10的整數(shù)倍,蛇頭才能對齊食物      food.foodxy.y = rand() % 48 * 10;    }  }}//繪制食物void drawFood(){  fillrectangle(food.foodxy.x, food.foodxy.y, food.foodxy.x + 10, food.foodxy.y + 10);}//蛇吃食物void eatFood(){  if (snake.xy[0].x == food.foodxy.x && snake.xy[0].y == food.foodxy.y)  {    snake.num++;    food.eatGrade += 10;    food.flag = 0;  }}//蛇死亡判斷int snakeDie(){  //顯示分?jǐn)?shù)  char grade[100] = { 0 };  sprintf(grade, "%d", food.eatGrade);  setbkmode(TRANSPARENT);  settextcolor(RED);  outtextxy(580, 20, "分?jǐn)?shù):");    //loadimage     outtextxy(620, 20, grade);    //  //判斷蛇是否死亡
  //撞墻  if (snake.xy[0].x > 640 || snake.xy[0].x<0 || snake.xy[0].y>480 || snake.xy[0].y < 0)  {    MessageBox(hwnd, "游戲結(jié)束!", "撞墻死亡!", 0);    return 1;  }  //撞自己  for (int i = 1; i < snake.num; i++)  {    if (snake.xy[0].x == snake.xy[i].x&&snake.xy[0].y == snake.xy[i].y)    {      MessageBox(hwnd, "游戲結(jié)束!", "撞自己!", 0);      return 1;    }  }  return 0;}int main(){  srand((unsigned int)time(NULL));  hwnd=initgraph(640, 480);  setbkcolor(WHITE);  cleardevice();  initSnake();  while (1)  {    cleardevice();    //刷掉路徑    if (food.flag == 0)    {      initFood();    }    drawFood();    drawSnake();    if (snakeDie())    {      break;    }    eatFood();    moveSnake();    Sleep(100);      //控制速度    //while (_kbhit())  //kbhit() 存在按鍵操作,返回非零    //{    //  keyDown();    //}    keyDown();  }  closegraph();  printf("GameOver!!!");  system("pause");  return 0;}

寫在最后:對于準(zhǔn)備學(xué)習(xí)C/C++編程的小伙伴,如果你想更好的提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開始!

責(zé)任編輯:haq


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7608

    瀏覽量

    137130
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4802

    瀏覽量

    68746

原文標(biāo)題:C語言項(xiàng)目實(shí)戰(zhàn):《自動(dòng)版貪吃蛇》零基礎(chǔ)項(xiàng)目!源碼 + 注釋

文章出處:【微信號(hào):cyuyanxuexi,微信公眾號(hào):C語言編程學(xué)習(xí)基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    AKI跨語言調(diào)用庫神助攻C/C++代碼遷移至HarmonyOS NEXT

    量;某知名社交電商平臺(tái)使用后減少了50%以上跨語言調(diào)用接口代碼量;某圖像處理軟件所有C++代碼復(fù)用通過AKI來實(shí)現(xiàn)。使用AKI后這些項(xiàng)目不僅減少了項(xiàng)
    發(fā)表于 01-02 17:08

    基于FPGA實(shí)現(xiàn)圖像直方圖設(shè)計(jì)

    直方圖統(tǒng)計(jì)的原理 直方圖統(tǒng)計(jì)從數(shù)學(xué)上來說,是對圖像中的像素點(diǎn)進(jìn)行統(tǒng)計(jì)。圖像直方圖統(tǒng)計(jì)常用于統(tǒng)計(jì)灰度圖像,表示圖像中各個(gè)灰度級出現(xiàn)的次數(shù)或者概率。統(tǒng)計(jì)直方圖的實(shí)現(xiàn)采用C/C++或者其他高級語言實(shí)
    的頭像 發(fā)表于 12-24 10:24 ?140次閱讀
    基于FPGA<b class='flag-5'>實(shí)現(xiàn)</b>圖像直方圖設(shè)計(jì)

    使用C語言實(shí)現(xiàn)函數(shù)模板

      用C語言能不能實(shí)現(xiàn)一個(gè)通用的函數(shù),既能完成整數(shù)的相加,又能完成浮點(diǎn)數(shù)的相加?
    的頭像 發(fā)表于 11-09 11:38 ?414次閱讀

    C語言與Java語言的對比

    C語言和Java語言都是當(dāng)前編程領(lǐng)域中的重要成員,它們各自具有獨(dú)特的優(yōu)勢和特點(diǎn),適用于不同的應(yīng)用場景。以下將從語法特性、內(nèi)存管理、跨平臺(tái)性、性能、應(yīng)用領(lǐng)域等多個(gè)方面對C
    的頭像 發(fā)表于 10-29 17:31 ?375次閱讀

    何用C語言實(shí)現(xiàn)高效查找(二分法)

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

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

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

    使用C語言實(shí)現(xiàn)的CRC計(jì)算單元的例子

    使用C語言實(shí)現(xiàn)的CRC計(jì)算單元的例子
    的頭像 發(fā)表于 05-16 16:16 ?1023次閱讀

    嵌入式編程,如何用 C 語言實(shí)現(xiàn)狀態(tài)機(jī)設(shè)計(jì)?

    狀態(tài)機(jī)模式是一種行為模式,通過多態(tài)實(shí)現(xiàn)不同狀態(tài)的調(diào)轉(zhuǎn)行為的確是一種很好的方法,只可惜在嵌入式環(huán)境下,有時(shí)只能寫純C代碼,并且還需要考慮代碼的重入和多任務(wù)請求跳轉(zhuǎn)等情形,因此實(shí)現(xiàn)起來著實(shí)需要一番考慮
    發(fā)表于 04-23 11:00

    C語言實(shí)現(xiàn)Web參數(shù)傳遞

    電子發(fā)燒友網(wǎng)站提供《C語言實(shí)現(xiàn)Web參數(shù)傳遞.docx》資料免費(fèi)下載
    發(fā)表于 03-24 09:14 ?2次下載

    嵌入式系統(tǒng)中C語言結(jié)構(gòu)體的基礎(chǔ)實(shí)現(xiàn)與應(yīng)用

    C語言中的數(shù)組只能允許程序員定義存儲(chǔ)相同類型數(shù)據(jù)。但是結(jié)構(gòu)是C語言編程中允許您存儲(chǔ)不同數(shù)據(jù)類型的數(shù)據(jù)。
    發(fā)表于 03-12 14:29 ?521次閱讀
    嵌入式系統(tǒng)中<b class='flag-5'>C</b><b class='flag-5'>語言</b>結(jié)構(gòu)體的基礎(chǔ)<b class='flag-5'>實(shí)現(xiàn)</b>與應(yīng)用

    c語言,c++,java,python區(qū)別

    C語言C++、Java和Python是四種常見的編程語言,各有優(yōu)點(diǎn)和特點(diǎn)。 C語言
    的頭像 發(fā)表于 02-05 14:11 ?2459次閱讀

    vb語言c++語言的區(qū)別

    VB語言C++語言是兩種不同的編程語言,雖然它們都屬于高級編程語言,但在設(shè)計(jì)和用途上有很多區(qū)別。下面將詳細(xì)比較VB
    的頭像 發(fā)表于 02-01 10:20 ?2387次閱讀

    基于51單片機(jī)的貪吃蛇游戲設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于51單片機(jī)的貪吃蛇游戲設(shè)計(jì).rar》資料免費(fèi)下載
    發(fā)表于 01-12 10:00 ?0次下載

    基于51單片機(jī)的貪吃蛇設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于51單片機(jī)的貪吃蛇設(shè)計(jì).rar》資料免費(fèi)下載
    發(fā)表于 01-12 09:53 ?14次下載

    ADUC7061如何使用C語言實(shí)現(xiàn)EEPROM功能?

    我使用ADUC7061做的信號(hào)采集,現(xiàn)在客戶需要實(shí)現(xiàn)EEPROM功能來保存3-5個(gè)數(shù)據(jù),請問如何使用C語言實(shí)現(xiàn)?不使用外部EEPROM 專用IC。
    發(fā)表于 01-12 06:56
    主站蜘蛛池模板: 好满射太多了装不下了视频| 国产精品97久久AV麻豆| 熟妇久久无码人妻AV蜜桃| 蜜臀AV精品一区二区三区| 九九热在线视频观看这里只有精品| 国产蜜臀AV在线一区视频| 国产福利秒拍weipai.ee| 菲律宾毛片| 姑娘日本大全免费观看版中文翻译| mxgs-877痉挛媚药按摩| a视频免费在线观看| XXX欧美性兽交| 大中国免费视频大全在线观看| 嘟嘟嘟WWW在线观看视频高清| 第九色区av天堂| 姑娘视频日本在线播放| 国产精品久久久久久久伊一| 国产精品网红女主播久久久| 国产日韩欧美另类| 狠狠色丁香婷婷久久综合| 精品精品国产yyy5857香蕉| 精品国产mmd在线观看| 久久xxxx| 男人天堂2018亚洲男人天堂| 欧美亚洲日韩国产在线在线| 强行撕开衣服捏胸黄文| 三级全黄的视频在线观看| 天天国产在线精品亚洲| 亚洲精品国产SUV| 伊人久久国产| 98色精品视频在线| 成人在线免费| 国产精品无码人妻在线| 黄得让人湿的片段| 猫咪www958ii| 日本理论片午午伦夜理片2021| 爽死你个放荡粗暴小淫货漫画| 亚洲 综合 欧美在线 热| 伊人久久亚洲综合天堂| 9966在线观看免费高清电影| 岛国片在线免费观看|