精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

如何用C語言實現(xiàn)2048項目

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

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

游戲介紹:

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

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

插件:圖形庫插件easyX,涉及圖片素材可以自行百度找也可以關(guān)注文末領(lǐng)取;

源代碼示例:

#include#include#include#include#include//需要安裝之后,才有這個頭文件#define MAX_GRID 4    //每行格子數(shù)#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 };//數(shù)據(jù) 二維數(shù)組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));  //隨機在空白的位置產(chǎn)生兩個整數(shù)  for (int i = 0; i < 5; )  {    //隨機數(shù) rand() 隨機獲得一個整數(shù)   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(){  //繪制界面,設(shè)置背景顏色 187,173,160 三原色 set background color  setbkcolor(RGB(187, 173, 160));  //設(shè)置顏色之后需要,清屏(原本的顏色是黑色的,設(shè)置的顏色,被覆蓋了)  cleardevice();//清楚繪圖設(shè)備
  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)      {        //繪制數(shù)字        //printf("%d", map[i][k]);//輸出到控制臺窗口        //設(shè)置文字大小        settextstyle(50, 0, "黑體");        settextcolor(RGB(163, 73, 164));        setbkmode(TRANSPARENT);//設(shè)置文字背景為透明        //把數(shù)字轉(zhuǎn)成字符串 格式化字符串        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(),它不需要按回車確認(rèn)輸入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);//第一個參數(shù)是寬度,二個高度  gameInit();
  while (1)  {    gameDraw();    keyControl();  }  return 0;}

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

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

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

責(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)注

    180

    文章

    7599

    瀏覽量

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

    關(guān)注

    30

    文章

    4751

    瀏覽量

    68357

原文標(biāo)題:C語言項目實戰(zhàn):《2048》零基礎(chǔ)項目!208 行源代碼示例

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

    STM32項目實戰(zhàn):基于STM32U5的火災(zāi)報警系統(tǒng)(LVGL),附項目教程/源碼

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

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

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

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

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

    基于迅為RK3588【RKNPU2項目實戰(zhàn)1】:YOLOV5實時目標(biāo)分類

    【RKNPU2項目實戰(zhàn)1】:YOLOV5實時目標(biāo)分類 https://www.bilibili.com/video/BV1ZN411D7V8/?spm_id_from=333.999.0.0
    發(fā)表于 08-15 10:51

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

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

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

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

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

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

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

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

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

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

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

    未來任務(wù)艱巨,期待華星團(tuán)隊與t9項目建設(shè)者緊密協(xié)作,強化安全文明施工,科學(xué)有序推進(jìn)各項建設(shè)工作,確保項目按計劃完成,為明年實現(xiàn)180K滿產(chǎn)做好充足準(zhǔn)備。
    的頭像 發(fā)表于 04-22 09:34 ?505次閱讀

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

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

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

    原來安裝的KEIL 可以用103系列單片機,為何打開32G431項目找不到芯片
    發(fā)表于 03-11 06:48

    CCES加載ADSP-21479項目時,找不到頭文件怎么解決?

    我第一次接觸CCES,加載ADSP-21479項目時候。找不到頭文件、我軟件是在官網(wǎng)下載的、是不是要下載license許可,才能加載頭文件、如果需要license許可。那我又該去哪里獲取到、謝謝解答。
    發(fā)表于 01-12 07:38

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

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