日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

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

C語言編程學習基地 ? 來源:C語言編程學習基地 ? 作者:C語言編程學習基地 ? 2021-11-21 16:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

游戲介紹:

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

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

插件:圖形庫插件easyX,涉及圖片素材可以自行百度找也可以關(guān)注文末領?。?/p>

源代碼示例:

#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(){  //繪制界面,設置背景顏色 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)      {        //繪制數(shù)字        //printf("%d", map[i][k]);//輸出到控制臺窗口        //設置文字大小        settextstyle(50, 0, "黑體");        settextcolor(RGB(163, 73, 164));        setbkmode(TRANSPARENT);//設置文字背景為透明        //把數(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(),它不需要按回車確認輸入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ù)字部分代碼,大家也可以自己先去想想試試,每一次的思考就是你進步的過程!

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

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

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

    關(guān)注

    183

    文章

    7646

    瀏覽量

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

    關(guān)注

    30

    文章

    4977

    瀏覽量

    74420

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

    如何做出一個出彩的STM32項目?4大能力短板提升全攻略,建議收藏!

    。其實不是我們不夠努力,而是踩進了只會玩模塊,不會做產(chǎn)品的坑。今天就跟大家好好聊聊,怎么跳出這個怪圈,把STM32項目做得專業(yè)又亮眼。01突破瓶頸為何“懂外設”卻做不
    的頭像 發(fā)表于 03-30 14:00 ?199次閱讀
    如何做出一個出彩的STM32<b class='flag-5'>項目</b>?4大能力短板提升全攻略,建議收藏!

    講解C語言代碼的實現(xiàn)過程

    重點講解C語言代碼的實現(xiàn)過程,算法的C語言實現(xiàn)過程具有一般性,通過PID算法的C
    發(fā)表于 01-21 07:58

    C語言實現(xiàn)萬年歷

    C語言實現(xiàn)萬年歷程序的代碼如下:#include int year(int y) { if ((y%4==0) (y%100!=0) || y%400==0) return 366
    發(fā)表于 01-16 08:02

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

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

    VSCode + ESP-IDF環(huán)境下給ESP32-S3項目添加頭文件

    VSCode + ESP-IDF環(huán)境下給ESP32-S3項目添加頭文件
    的頭像 發(fā)表于 11-28 07:27 ?3255次閱讀

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

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

    海微科技智能倉庫2.0項目正式啟動

    11月4日,海微智能倉庫2.0項目啟動會在海微智造舉行。項目通過數(shù)字化倉庫頂層設計與自動化技術(shù)的深度融合,實現(xiàn)了倉庫從 “人力密集”到“智能無人”的跨越。
    的頭像 發(fā)表于 11-07 15:15 ?555次閱讀

    運行自己編寫的C語言項目的E203軟件仿真環(huán)境的搭建

    、mywork.verilog等新的文件,并將mywork.verilog文件復制到E203項目目錄下的riscv-toolsriscv-testsisagenerated目錄下。 4、進入E203項目目錄
    發(fā)表于 10-20 06:44

    rt-thread studio中創(chuàng)建不了gd32項目是怎么回事?

    為什么在rt-thread studio中創(chuàng)建一個gd32項目時候,他打開的那個選型芯片型號是,安裝好了,沒有確認鍵啊,只有退出sdk管理器,然后就卡在那里了,創(chuàng)建不了gd32的項目
    發(fā)表于 09-15 06:56

    湃??萍贾鹪醋詣踊疨LM2.0項目圓滿驗收

    近日,惠州金源智能機器人有限公司(曾用名:惠州金源精密自動化設備有限公司,億緯鋰能全資子公司)PLM2.0項目順利通過驗收。這一里程碑式的成果,標志著金源自動化在數(shù)字化研發(fā)領域完成了從“數(shù)據(jù)整合”到“全流程協(xié)同”的跨越式升級,為企業(yè)智能化轉(zhuǎn)型注入強勁動力。
    的頭像 發(fā)表于 08-19 16:13 ?1014次閱讀
    湃??萍贾鹪醋詣踊疨LM2.0<b class='flag-5'>項目</b>圓滿驗收

    STM32項目分享:礦井環(huán)境監(jiān)測系統(tǒng)

    01—項目簡介1.功能詳解STM32礦井環(huán)境監(jiān)測系統(tǒng)功能如下:STM32F103C8T6單片機作為主控制器DS18B20測量環(huán)境溫度
    的頭像 發(fā)表于 08-16 10:03 ?1141次閱讀
    STM32<b class='flag-5'>項目</b>分享:礦井環(huán)境監(jiān)測系統(tǒng)

    STM32項目分享:智能語音臺燈(機智云)

    01—項目簡介1.功能詳解STM32智能語音臺燈(機智云)功能如下:STM32F103C8T6單片機作為主控單元按鍵切換模式,支持自
    的頭像 發(fā)表于 07-24 18:03 ?1859次閱讀
    STM32<b class='flag-5'>項目</b>分享:智能語音臺燈(機智云)

    NRF24L01項目資料(2.4G通信)實例項目下載

    NRF24L01項目資料(2.4G通信)實例項目,推薦下載!
    發(fā)表于 06-03 20:46

    STM32項目分享:智能鞋柜

    01—項目簡介1.功能詳解STM32智能鞋柜功能如下:DHT11檢測鞋柜溫濕度,溫度低于閾值開啟加熱,濕度高于閾值開啟加熱和通風;P
    的頭像 發(fā)表于 05-27 18:04 ?1171次閱讀
    STM32<b class='flag-5'>項目</b>分享:智能鞋柜

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

    350+單片機C語言實例! 純分享帖,需要者可點擊附件免費獲取完整資料~~~【免責聲明】本文系網(wǎng)絡轉(zhuǎn)載,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請第一時間告知,刪除內(nèi)容!
    發(fā)表于 05-22 21:47
    门头沟区| 徐水县| 江陵县| 揭阳市| 陕西省| 探索| 榕江县| 清镇市| 鄂伦春自治旗| 皋兰县| 抚松县| 澄迈县| 乌鲁木齐市| 尤溪县| 油尖旺区| 梅河口市| 中西区| 大英县| 宜宾市| 丹巴县| 余干县| 芜湖市| 南城县| 连云港市| 和平区| 株洲市| 二手房| 大连市| 连云港市| 自治县| 阿克陶县| 清河县| 武清区| 台中县| 美姑县| 泗洪县| 德格县| 临西县| 婺源县| 平潭县| 滨海县|