91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

如何用C語(yǔ)言實(shí)現(xiàn)拼圖游戲項(xiàng)目

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

掃碼添加小助手

加入工程師交流群

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

游戲介紹:

對(duì)剛開始接觸拼圖的玩家而言,所謂入門級(jí)的拼圖主要是取決于圖案的一些特征。那些圖案內(nèi)容比較豐富的,也就是說(shuō),在整幅畫面的各個(gè)角落里也有內(nèi)容相對(duì)完整的子畫面的,且色彩和輪廓反差較大的,這樣的拼圖玩起來(lái)就相對(duì)容易一些。因?yàn)樵谄唇M的局部,想要尋找合適的零片,可選的零片總能被限制在比較小的范圍內(nèi)

項(xiàng)目技術(shù):

1.二維數(shù)組

2.可視化編程

2.1 動(dòng)態(tài)制作

3.切割技術(shù)

3.1 實(shí)現(xiàn)圖片的自動(dòng)切割

4.鼠標(biāo)操作

4.1 玩游戲的內(nèi)容

對(duì)邏輯也是有一定的要求,但是這些在我們項(xiàng)目源碼里面都會(huì)有注釋,大家到時(shí)候?qū)W習(xí)的時(shí)候千萬(wàn)不要忽略注釋,注釋可以更好地幫你理解代碼,尤其是C語(yǔ)言初學(xué)者。

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

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

配套講解教程:游戲教程——嗶哩嗶哩

源代碼示例:

#include #include #include #include /******************************************///      全局變量的定義IMAGE img, blank;      //美女和空的int array2D[4][4];int array1D[15] = { 0 };struct pos{  int i;  int j;}mypos = {0,0};struct pos searchPos(int array2D[][4], int i,int j){  for (i = 0; i <= 3; i++)  {    for (j = 0; j <= 3; j++)    {      if (array2D[i][j] == 15)      {        mypos.i = i;        mypos.j = j;        return mypos;      }    }  }  return mypos;}/******************************************///      繪制開始菜單void drawMenu(){  initgraph(640, 450);  setbkcolor(WHITE);    //設(shè)置窗口顏色為白色  cleardevice();      //刷新顯示  setfillcolor(LIGHTBLUE);  //設(shè)置填充顏色為淡藍(lán)色  settextstyle(30, 0, "字魂24號(hào)-鎮(zhèn)魂手書");  setbkmode(TRANSPARENT);      //透明方式去掉文字背景  //畫矩形  fillrectangle(240, 100, 380, 150);  fillrectangle(240, 100+60, 380, 150 + 60);
  //文字輸出  outtextxy(240 + 20, 100 + 13, "開始游戲");  outtextxy(240 + 20, 100 + 13 + 60, "退出游戲");  settextcolor(RED);    //設(shè)置文字顏色為紅色  outtextxy(130, 280, "頓開教育莫影拼圖游戲 v1.0版本");
  MOUSEMSG m;  //鼠標(biāo)操作  while (1)  {    m = GetMouseMsg();    //當(dāng)鼠標(biāo)放到矩形區(qū)域,畫一個(gè)矩形    if (m.x >= 240 && m.x <= 380 && m.y >= 100 && m.y <= 150)    {      setlinecolor(RED);      rectangle(240 - 5, 100 - 5, 380 + 5, 150 + 5);      if (m.uMsg == WM_LBUTTONDOWN)      {        break;      }    }    else if (m.x >= 240 && m.x <= 380 && m.y >= 160 && m.y <= 210)    {      setlinecolor(RED);      rectangle(240 - 5, 160 - 5, 380 + 5, 210 + 5);      if (m.uMsg == WM_LBUTTONDOWN)      {        exit(0);      }    }    else    {      setlinecolor(WHITE);      rectangle(240 - 5, 100 - 5, 380 + 5, 150 + 5);      rectangle(240 - 5, 160 - 5, 380 + 5, 210 + 5);    }  }  closegraph();}/******************************************///      加載資源void loadResource(){  srand((unsigned int)time(NULL));  int length = 15;  int pos = 0;    int i, j;  //1.給一維數(shù)組初始化0-15  for (i = 0; i < 15; i++)  {    //0-14    array1D[i] = i;  }
  //2.隨機(jī)出來(lái)一個(gè)下表  for (i = 0; i < 4; i++)  {    for (j = 0; j < 4; j++)    {      //單獨(dú)處理最后一個(gè)位置      if (i == 3 && j == 3)      {        array2D[3][3] = 15;        break;      }      pos = rand() % length;      array2D[i][j] = array1D[pos];      for (int k = pos; k < length; k++)      {        array1D[k] = array1D[k + 1];      }      length--;    }    if (i == 3 && j == 3)    {      array2D[3][3] = 15;      break;    }  }  //縮放加載  loadimage(&img, "Love.jpg", 800, 800);  loadimage(&blank, "blank.jpg", 200, 200);}/******************************************///      繪圖過(guò)程void drawMap(){  //根據(jù)打亂順序的二維數(shù)組中的值去拿照片中相應(yīng)的位置  for (int i = 0; i < 4; i++)  {    for (int j = 0; j < 4; j++)    {      int x = j * 200;      int y = i * 200;      switch (array2D[i][j])      {      case 0:      case 1:      case 2:      case 3:        putimage(x, y, 200, 200, &img, array2D[i][j] * 200, 0);        break;      case 4:      case 5:      case 6:      case 7:        putimage(x, y, 200, 200, &img, (array2D[i][j]-4) * 200, 200);        break;      case 8:      case 9:      case 10:      case 11:        putimage(x, y, 200, 200, &img, (array2D[i][j] - 8) * 200, 400);        break;      case 12:      case 13:      case 14:        putimage(x, y, 200, 200, &img, (array2D[i][j] - 12) * 200, 600);        break;      case 15:        putimage(x, y, &blank);        break;      }    }  }}/******************************************///      游戲過(guò)程void playGame(){  MOUSEMSG m;      //白塊在數(shù)組那個(gè)位置  int j_Mouse, i_Mouse;  //鼠標(biāo)點(diǎn)在數(shù)組那個(gè)位置  while (1)  {    drawMap();      //第一次顯示    //換之前定位 白塊在哪里    int i=0, j=0;    searchPos(array2D, 3, 3);    i = mypos.i;    j = mypos.j;
    m = GetMouseMsg();    switch (m.uMsg)    {    case WM_LBUTTONDOWN:      j_Mouse = m.x / 200;      i_Mouse = m.y / 200;      if (i >= 0 && j < 4&&i<4&&j>=0)      {        if (i_Mouse == i + 1&&i+1<=3 && j_Mouse == j)        {          array2D[i][j] = array2D[i_Mouse][j_Mouse];          array2D[i_Mouse][j_Mouse] = 15;          break;        }        if (i_Mouse == i - 1 && i - 1 >=0 && j_Mouse == j)        {          array2D[i][j] = array2D[i_Mouse][j_Mouse];          array2D[i_Mouse][j_Mouse] = 15;          break;        }        if (i_Mouse == i  && j_Mouse == j - 1&&j-1>=0)        {          array2D[i][j] = array2D[i_Mouse][j_Mouse];          array2D[i_Mouse][j_Mouse] = 15;          break;        }        if (i_Mouse == i  && j_Mouse == j + 1&&j+1<=3)        {          array2D[i][j] = array2D[i_Mouse][j_Mouse];          array2D[i_Mouse][j_Mouse] = 15;          break;        }      }      break;    }  }}/******************************************///      游戲過(guò)程void GameOve(){  int flag = 1;}int main(){  drawMenu();  loadResource();  initgraph(800, 800);  playGame();
  closegraph();  return 0;}

寫在最后:對(duì)于準(zhǔn)備學(xué)習(xí)C/C++編程的小伙伴,如果你想更好的提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開始!

責(zé)任編輯:haq


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

    關(guān)注

    183

    文章

    7644

    瀏覽量

    145576
  • 源代碼
    +關(guān)注

    關(guān)注

    96

    文章

    2953

    瀏覽量

    70308

原文標(biāo)題:C語(yǔ)言項(xiàng)目實(shí)戰(zhàn):《拼圖游戲》零基礎(chǔ)項(xiàng)目!250 行源碼注釋示例

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    講解C語(yǔ)言代碼的實(shí)現(xiàn)過(guò)程

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

    C語(yǔ)言來(lái)實(shí)現(xiàn)萬(wàn)年歷

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

    何用軟件實(shí)現(xiàn)系統(tǒng)的復(fù)位?

    看門狗的工作過(guò)程是怎樣的? 如何用軟件實(shí)現(xiàn)系統(tǒng)的復(fù)位?
    發(fā)表于 01-08 06:15

    C語(yǔ)言主要特點(diǎn)

    指針類型數(shù)據(jù),使用十分靈活和多樣化,能用來(lái)實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)(如鏈表、樹、棧等)的運(yùn)算。 4.具有結(jié)構(gòu)化的控制語(yǔ)句。用函數(shù)作為程序的模塊單位,便于實(shí)現(xiàn)程序的模塊化。C語(yǔ)言是完全模塊
    發(fā)表于 01-05 07:41

    何用C 語(yǔ)言函數(shù)的返回值?

    基本上,沒有人會(huì)將大段的C語(yǔ)言代碼全部塞入 main() 函數(shù)。更好的做法是按照復(fù)用率高、耦合性低的原則,盡可能的將代碼拆分不同的功能模塊,并封裝成函數(shù)。 C語(yǔ)言代碼的組合千變?nèi)f化,因
    發(fā)表于 12-25 07:17

    為什么單片機(jī)還在用C語(yǔ)言編程?

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

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

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

    C語(yǔ)言特性

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

    何用FPGA實(shí)現(xiàn)4K視頻的輸入輸出與處理

    游戲、影視和顯示領(lǐng)域,4K 已經(jīng)成為標(biāo)配。而今天,我們就來(lái)聊聊——如何用 FPGA 實(shí)現(xiàn) 4K 視頻的輸入輸出與處理。
    的頭像 發(fā)表于 10-15 10:47 ?2124次閱讀
    如<b class='flag-5'>何用</b>FPGA<b class='flag-5'>實(shí)現(xiàn)</b>4K視頻的輸入輸出與處理

    【HarmonyOS next】ArkUI-X休閑益智兒童拼圖【進(jìn)階】

    版本:ArkUI API 16 ? 代碼倉(cāng)庫(kù)地址:gitee 三、核心實(shí)現(xiàn)解析 3.1 拖動(dòng)邏輯的三維坐標(biāo)系 在拼圖游戲中,精準(zhǔn)的位置計(jì)算是靈魂所在。我們通過(guò)PanGesture手勢(shì)監(jiān)聽實(shí)現(xiàn)拖動(dòng)邏輯
    發(fā)表于 06-28 21:41

    單片機(jī)C語(yǔ)言實(shí)例(350+例)

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

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

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

    客廳變游戲室?如何用樹莓派實(shí)現(xiàn) Moonlight 游戲流媒體

    在這個(gè)項(xiàng)目中,我們將向您展示如何使用Moonlight將游戲直接流式傳輸?shù)侥腞aspberryPi。Moonlight:https://moonlight-stream.org/Moonlight
    的頭像 發(fā)表于 03-25 09:37 ?1665次閱讀
    客廳變<b class='flag-5'>游戲</b>室?如<b class='flag-5'>何用</b>樹莓派<b class='flag-5'>實(shí)現(xiàn)</b> Moonlight <b class='flag-5'>游戲</b>流媒體

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

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

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

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