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

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

完善資料讓更多小伙伴認識你,還能領(lǐ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)注文末領(lǐng)?。?/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(){  //繪制界面,設(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(),它不需要按回車確認輸入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

    文章

    7642

    瀏覽量

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

    關(guān)注

    30

    文章

    4940

    瀏覽量

    73074

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

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

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

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

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

    運行自己編寫的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

    湃睿科技助力金源自動化PLM2.0項目圓滿驗收

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

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

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

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

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

    STM32項目分享:STM32智能語音臺燈

    項目簡介1.功能詳解STM32智能語音臺燈功能如下:1.STM32F103C8T6單片機系統(tǒng)板作為主控單元2.按鍵切換模式,支
    的頭像 發(fā)表于 03-15 10:02 ?2299次閱讀
    STM32<b class='flag-5'>項目</b>分享:STM32智能語音臺燈

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

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

    粵芯半導體三期通線,162.5億項目背后的產(chǎn)業(yè)鏈新機遇

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

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

    直方圖統(tǒng)計的原理 直方圖統(tǒng)計從數(shù)學上來說,是對圖像中的像素點進行統(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è)計