chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

C語言編程學(xué)習(xí)基地 ? 來源:C語言編程學(xué)習(xí)基地 ? 作者:C語言編程學(xué)習(xí)基地 ? 2021-11-08 15:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

1.學(xué)過C語言

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

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

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

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

6.基本繪圖

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

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

插件:圖形庫插件easyX;

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

源代碼示例:

#define _CRT_SECURE_NO_WARNINGS#include #include #include #include     //報錯:安裝圖形庫插件#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};//整個項目劃分//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.移動蛇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)志去做移動  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)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關(guān)注

    關(guān)注

    183

    文章

    7642

    瀏覽量

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

    關(guān)注

    30

    文章

    4940

    瀏覽量

    73074

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    為什么單片機還在用C語言編程?

    的缺陷 高級語言存在的目的是可以實現(xiàn)更為優(yōu)化的算法,更多的是為了方便的執(zhí)行方案,但是,高級語言對程序存儲空間的占用要比匯編和C語言多很多。
    發(fā)表于 11-28 07:37

    請問如何用C語言列舉當(dāng)前所有網(wǎng)口?

    何用C語言列舉當(dāng)前所有網(wǎng)口?
    發(fā)表于 11-25 07:23

    C語言特性

    數(shù)據(jù),實現(xiàn)對設(shè)備的精準(zhǔn)控制,同時降低功耗,延長設(shè)備的使用壽命。 2、可移植性:跨平臺的通行證 C 語言具有良好的可移植性,這意味著用 C 語言
    發(fā)表于 11-24 07:01

    C++ 與 Python:樹莓派上哪種語言更優(yōu)?

    Python是樹莓派上的首選編程語言,我們的大部分教程都使用它。然而,C++在物聯(lián)網(wǎng)項目中同樣廣受歡迎且功能強大。那么,在樹莓派項目中選擇哪種語言
    的頭像 發(fā)表于 07-24 15:32 ?623次閱讀
    <b class='flag-5'>C</b>++ 與 Python:樹莓派上哪種<b class='flag-5'>語言</b>更優(yōu)?

    單片機C語言實例(350+例)

    350+單片機C語言實例! 純分享帖,需要者可點擊附件免費獲取完整資料~~~【免責(zé)聲明】本文系網(wǎng)絡(luò)轉(zhuǎn)載,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請第一時間告知,刪除內(nèi)容!
    發(fā)表于 05-22 21:47

    深入理解C語言C語言循環(huán)控制

    C語言編程中,循環(huán)結(jié)構(gòu)是至關(guān)重要的,它可以讓程序重復(fù)執(zhí)行特定的代碼塊,從而提高編程效率。然而,為了避免程序進入無限循環(huán),C語言提供了多種循環(huán)控制語句,如break、continue和
    的頭像 發(fā)表于 04-29 18:49 ?1722次閱讀
    深入理解<b class='flag-5'>C</b><b class='flag-5'>語言</b>:<b class='flag-5'>C</b><b class='flag-5'>語言</b>循環(huán)控制

    SAP實施專家解答:如何用DeepSeek-R1實現(xiàn)需求溝通效率倍增

    工博科技分享AI工具鏈在IT項目中的深度應(yīng)用:通過DeepSeek-R1實現(xiàn)智能會議記錄結(jié)構(gòu)化(2小時會議5分鐘生成決策表)和精準(zhǔn)多語言文檔翻譯(錯誤率降低14%),幫助IT團隊將重復(fù)性工作耗時減少
    的頭像 發(fā)表于 04-28 09:13 ?563次閱讀

    讓人欲罷不能樹莓派貪吃蛇掌機!

    經(jīng)典游戲《貪吃蛇》的掌機,并為其設(shè)計了定制的3D打印外殼。這款掌機基于配備RP2350處理器的最新型號RaspberryPiPico2打造。與常規(guī)LCD或OLED
    的頭像 發(fā)表于 03-25 09:21 ?523次閱讀
    讓人欲罷不能樹莓派<b class='flag-5'>貪吃蛇</b>掌機!

    為什么學(xué)了C語言,卻寫不出像樣的項目?

    在學(xué)習(xí)編程的路上,C語言幾乎是每個程序員的“必修課”。不管你是打算從事嵌入式開發(fā)、系統(tǒng)編程,還是想要深入理解操作系統(tǒng)的底層原理,C語言都是一塊重要的基石。然而許多人在學(xué)習(xí)
    的頭像 發(fā)表于 03-14 17:37 ?666次閱讀
    為什么學(xué)了<b class='flag-5'>C</b><b class='flag-5'>語言</b>,卻寫不出像樣的<b class='flag-5'>項目</b>?

    單片機C語言編程寶典大全,初學(xué)必備【強推下載!】

    資料介紹:包含 1. 51單片機入門教程 2. 初學(xué)者適用:單片機C語言實例100例(代碼及釋義) 3. 51單片機C語言快速上手 4. 51單片機
    發(fā)表于 03-14 11:03

    限時免積分下載:增量式與位置式PID算法的C語言實現(xiàn)分享

    前面咱們有分享對PID算法離散化和增量式PID算法原理進行來探索,之后又使用Matlab進行了仿真實驗,對PID三個參數(shù)又有了更深入的認(rèn)識,接下來我們來使用C語言進行PID算法實現(xiàn),并且結(jié)合控制電機的
    發(fā)表于 03-05 18:32

    PID控制算法的C語言實現(xiàn):PID算法原理

    在工業(yè)應(yīng)用中 PID 及其衍生算法是應(yīng)用最廣泛的算法之一,是當(dāng)之無愧的萬能算法,如果能夠熟練掌握 PID 算法的設(shè)計與實現(xiàn)過程,對于一般的研發(fā)人員來講,應(yīng)該是足夠應(yīng)對一般研發(fā)問題了,而難能可貴
    發(fā)表于 02-26 15:24

    EE-188:使用C語言在ADSP-219x DSP上實現(xiàn)中斷驅(qū)動系統(tǒng)

    電子發(fā)燒友網(wǎng)站提供《EE-188:使用C語言在ADSP-219x DSP上實現(xiàn)中斷驅(qū)動系統(tǒng).pdf》資料免費下載
    發(fā)表于 01-15 16:06 ?0次下載
    EE-188:使用<b class='flag-5'>C</b><b class='flag-5'>語言</b>在ADSP-219x DSP上<b class='flag-5'>實現(xiàn)</b>中斷驅(qū)動系統(tǒng)

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

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

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

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