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

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

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

3天內不再提示

如何用C語言實現2048項目

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

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

游戲介紹:

《2048》一款益智小游戲,游戲的規則十分簡單,是一款簡單易上手的數字小游戲。游戲的規則很簡單,你需要控制所有方塊向同一個方向運動,兩個相同數字方塊撞在一起之后合并成為他們的和,每次操作之后會隨機生成一個2或者4,最終得到一個“2048”的方塊就算勝利了!

玩法簡單,容易上手!所以這也成為了我們編程學習者C語言練習的一個非常好的小項目,如果你沒有玩過的話那么可以先去玩一下的,會玩的話對于項目邏輯的理解也是非常有幫助的!接下來就讓我們一起來看看吧!

插件:圖形庫插件easyX,涉及圖片素材可以自行百度找也可以關注文末領取;

源代碼示例:

#include#include#include#include#include//需要安裝之后,才有這個頭文件#define MAX_GRID 4    //每行格子數#define GRID_WIDTH 100  //格子寬度#define INTERVAL 15    //間隔#define WIN_SIZE (5*INTERVAL+MAX_GRID*GRID_WIDTH)//窗口大小enum Color //枚舉格子顏色{  zero = RGB(205, 193, 180), //0的顏色  twoTo1 = RGB(238, 228, 218), //2的顏色  twoTo2 = RGB(237, 224, 200), //4的顏色  twoTo3 = RGB(242, 177, 121), //8的顏色  twoTo4 = RGB(245, 149, 99), //16的顏色  twoTo5 = RGB(246, 124, 95), //32的顏色  twoTo6 = RGB(246, 94, 59), //64的顏色  twoTo7 = RGB(242, 177, 121), //128的顏色  twoTo8 = RGB(237, 204, 97), //256的顏色  twoTo9 = RGB(255, 0, 128), //512的顏色  twoTo10 = RGB(145, 0, 72), //1024的顏色  twoTo11 = RGB(242, 17, 158), //2048的顏色  back = RGB(187, 173, 160), //背景顏色};Color arr[13] = { zero, twoTo1, twoTo2, twoTo3, twoTo4, twoTo5, twoTo6, twoTo7, twoTo8, twoTo9, twoTo10, twoTo11, back };//數據 二維數組int map[MAX_GRID][MAX_GRID];int createNum(){  int num = 0;  if (rand() % 10 == 0)  {    num = 4;  }  else  {    num = 2;  }  return num;}void gameInit(){  srand((unsigned)time(NULL));  //隨機在空白的位置產生兩個整數  for (int i = 0; i < 5; )  {    //隨機數 rand() 隨機獲得一個整數   0~上萬    int r = rand() % MAX_GRID; //0~3    int c = rand() % MAX_GRID; //0~3    if (map[r][c] == 0)    {      map[r][c] = createNum();      i++;    }      }
}void gameDraw(){  //繪制界面,設置背景顏色 187,173,160 三原色 set background color  setbkcolor(RGB(187, 173, 160));  //設置顏色之后需要,清屏(原本的顏色是黑色的,設置的顏色,被覆蓋了)  cleardevice();//清楚繪圖設備
  for (int i = 0; i < MAX_GRID; i++)//->y  {    for (int k = 0; k < MAX_GRID; k++)//->x    {      //00 01 02 03       //10 11 12 13      //求出每一個格子的x,y      int x = k*GRID_WIDTH + INTERVAL*(k + 1);      int y = i*GRID_WIDTH + INTERVAL*(i + 1);      //4->2      //32->5      //2^n=map[i][k];  ->log2map[i][k]=n;      int index = (int)log2((float)map[i][k]);      setfillcolor(arr[index]);      //畫矩形:空心矩形,填充矩形,實心矩形,圓角矩形      //solidrectangle(x, y, x + GRID_WIDTH, y + GRID_WIDTH);      solidroundrect(x, y, x + GRID_WIDTH, y + GRID_WIDTH, 15, 15);
      if (map[i][k] != 0)      {        //繪制數字        //printf("%d", map[i][k]);//輸出到控制臺窗口        //設置文字大小        settextstyle(50, 0, "黑體");        settextcolor(RGB(163, 73, 164));        setbkmode(TRANSPARENT);//設置文字背景為透明        //把數字轉成字符串 格式化字符串        char str[10] = "";        sprintf(str, "%d", map[i][k]);        //為了文字居中在格子中間        int textx = textwidth(str) / 2;        int texty = textheight(str) / 2;        int win = GRID_WIDTH / 2;    //格子寬度一半        outtextxy(x + win - textx, y + win - texty, str);      }    }  }}void moveup(){  for (int i = 0; i < MAX_GRID; i++)  {    int temp = 0;    for (int begin = 1; begin < MAX_GRID; begin++)    {      if (map[begin][0] != 0)      {        if (map[temp][i] == 0)        {          map[temp][i] = map[begin][i];          map[begin][i] = 0;        }        else if (map[temp][i] == map[begin][i])        {          map[temp][i] += map[begin][i];          map[begin][i] = 0;          temp++;        }        else        {          map[temp+1][i] = map[begin][i];          if (temp + 1 != begin)          {            map[begin][i] = 0;          }          temp++;        }      }    }  }}void moveDown(){  for (int i = 0; i < MAX_GRID; i++)  {    int temp = MAX_GRID-1;    for (int begin = MAX_GRID-2; begin >=0; begin--)    {      if (map[begin][0] != 0)      {        if (map[temp][i] == 0)        {          map[temp][i] = map[begin][i];          map[begin][i] = 0;        }        else if (map[temp][i] == map[begin][i])        {          map[temp][i] += map[begin][i];          map[begin][i] = 0;          temp--;        }        else        {          map[temp - 1][i] = map[begin][i];          if (temp - 1 != begin)          {            map[begin][i] = 0;          }          temp--;        }      }    }  }}//獲取鍵盤按鍵 _getch(),它不需要按回車確認輸入void keyControl(){  switch (_getch())  {  case 'w':  case 'W':  case 72:    moveup();    break;  case 's':  case 'S':  case 80:    moveDown();    break;  case 'a':  case 'A':  case 75:    break;  case 'd':  case 'D':  case 77:    break;  }  printf("key
");}int main(){  //不要控制臺窗口,我要圖形窗口 easyx  initgraph(WIN_SIZE,WIN_SIZE,SHOWCONSOLE);//第一個參數是寬度,二個高度  gameInit();
  while (1)  {    gameDraw();    keyControl();  }  return 0;}

未完成的數字部分代碼,大家也可以自己先去想想試試,每一次的思考就是你進步的過程!

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

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

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

    關注

    180

    文章

    7614

    瀏覽量

    137479
  • 代碼
    +關注

    關注

    30

    文章

    4823

    瀏覽量

    68921

原文標題:C語言項目實戰:《2048》零基礎項目!208 行源代碼示例

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

收藏 人收藏

    評論

    相關推薦

    粵芯半導體三期通線,162.5億項目背后的產業鏈新機遇

    總投資162.5億元,粵芯半導體三期項目成功通線,產值預計40億元。這一項目不僅在國內晶圓制造領域帶來突破,更為大灣區半導體產業鏈的完善注入了新動能,標志著區域內從設計到制造再到封裝的全鏈條逐漸成型。
    的頭像 發表于 01-04 09:49 ?362次閱讀

    STM32項目實戰:基于STM32U5的智能大棚溫控系統(LVGL),附項目教程/源碼

    《智能大棚溫控系統_STM32U5》項目完整文檔、項目源碼,點擊下方鏈接免費領取。項目資料領取https://s.c1ns.cn/F5XyUSTM32
    的頭像 發表于 11-13 17:08 ?793次閱讀
    STM32<b class='flag-5'>項目</b>實戰:基于STM32U5的智能大棚溫控系統(LVGL),附<b class='flag-5'>項目</b>教程/源碼

    STM32項目實戰:基于STM32U5的火災報警系統(LVGL),附項目教程/源碼

    《火災報警系統_STM32U5》項目完整文檔、項目源碼,點擊下方鏈接免費領取。項目資料領取https://s.c1ns.cn/F5XyUSTM32
    的頭像 發表于 11-13 14:18 ?788次閱讀
    STM32<b class='flag-5'>項目</b>實戰:基于STM32U5的火災報警系統(LVGL),附<b class='flag-5'>項目</b>教程/源碼

    使用C語言實現函數模板

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

    STM32項目實戰:基于STM32U5的智能燈光控制系統(LVGL),附項目教程/源碼

    《智能燈光控制系統_STM32U5》項目完整文檔、項目源碼,點擊免費領取。項目資料領取:https://s.c1ns.cn/F5XyUSTM32項目
    的頭像 發表于 11-07 18:50 ?1138次閱讀
    STM32<b class='flag-5'>項目</b>實戰:基于STM32U5的智能燈光控制系統(LVGL),附<b class='flag-5'>項目</b>教程/源碼

    STM32項目實戰:基于STM32F4的智能燈光控制系統(LVGL),附項目教程/源碼

    《智能燈光控制系統_STM32F4》項目完整文檔、項目源碼,私信小雯老師免費領取。STM32項目實戰之“智能燈光控制系統”(基于STM32F4)今天小編來分享一個《智能燈光控制系統》的項目
    的頭像 發表于 10-17 16:16 ?954次閱讀
    STM32<b class='flag-5'>項目</b>實戰:基于STM32F4的智能燈光控制系統(LVGL),附<b class='flag-5'>項目</b>教程/源碼

    基于迅為RK3588【RKNPU2項目實戰1】:YOLOV5實時目標分類

    【RKNPU2項目實戰1】:YOLOV5實時目標分類 https://www.bilibili.com/video/BV1ZN411D7V8/?spm_id_from=333.999.0.0
    發表于 08-15 10:51

    STM32項目分享:智能家居(機智云)系統

    STM32項目分享:智能家居(機智云)系統
    的頭像 發表于 07-28 08:10 ?2066次閱讀
    STM32<b class='flag-5'>項目</b>分享:智能家居(機智云)系統

    esp32c3項目采用wss_server例程,把wifi斷開的話esp32c3會重啟,為什么?

    esp32c3項目采用wss_server 例程,運行后連接WiFi正常,但是如果之后把wifi斷開的話,esp32c3會重啟,監視器顯示“assert failed: tlsf_free
    發表于 06-06 07:29

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

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

    使用Tasking編譯器為同一項目手動創建一個makefile,在創建make文件時報錯的原因?

    我們可以使用 Aurix IDE 編譯項目。 我們想使用 Tasking 編譯器為同一項目手動創建一個 makefile。 在創建 make 文件時,我們遇到了以下錯誤。
    發表于 05-20 07:03

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

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

    廣州華星T9項目首臺曝光機設備成功入駐儀式成功舉辦

    未來任務艱巨,期待華星團隊與t9項目建設者緊密協作,強化安全文明施工,科學有序推進各項建設工作,確保項目按計劃完成,為明年實現180K滿產做好充足準備。
    的頭像 發表于 04-22 09:34 ?610次閱讀

    C語言實現Web參數傳遞

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

    原來安裝的KEIL可以用103系列單片機,為何打開32G431項目找不到芯片?

    原來安裝的KEIL 可以用103系列單片機,為何打開32G431項目找不到芯片
    發表于 03-11 06:48
    主站蜘蛛池模板: 最新亚洲中文字幕在线观看 | 欧美日韩精品一区二区三区高清视频 | free性欧美xxx狂欢 | 色老99九久精品偷偷鲁 | 色人阁影视 | 久久夜色撩人精品国产 | 一级淫片bbbxxx | 欧美亚洲日韩国码在线观看 | 色鲁97精品国产亚洲AV高 | 国产精品视频人人做人人爽 | 粉嫩AV国产一区二区福利姬 | 动漫美女性侵 | 中文字幕欧美一区 | 野花日本高清在线观看免费吗 | 扒开女人下面使劲桶动态图 | 国产午夜亚洲精品区 | 久久亚洲高清观看 | 欧美香蕉大胸在线视频观看 | 伊人久久大香线蕉观看 | 94色94色永久网站 | 日韩 国产 欧美视频二区 | 亚洲AV久久久噜噜噜久久 | 久久99国产视频 | 四虎永久免费 | 亚洲无线观看国产 | 日本xxx片免费高清在线 | 国产真实强被迫伦姧女在线观看 | 亚洲熟女乱色一区二区三区 | 76人遣返航班上71人呈阳性 | 午夜免费国产体验区免费的 | 一本色道久久88加勒比—综合 | 在线天天看片免费视频观看 | ankha成人 | 国产三级精品三级在线观看 | 免费看亚洲 | 国产午夜精品视频在线播放 | 午夜影视免费 | 婷婷五月久久丁香国产综合 | 亚洲精品国产高清不卡在线 | 专干老肥熟女视频网站300部 | 亚洲高清在线天堂精品 |