這篇文章主要為大家詳細介紹了C語言實現——《拼圖游戲項目》,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下!
游戲介紹:
對剛開始接觸拼圖的玩家而言,所謂入門級的拼圖主要是取決于圖案的一些特征。那些圖案內容比較豐富的,也就是說,在整幅畫面的各個角落里也有內容相對完整的子畫面的,且色彩和輪廓反差較大的,這樣的拼圖玩起來就相對容易一些。因為在拼組的局部,想要尋找合適的零片,可選的零片總能被限制在比較小的范圍內
項目技術:
1.二維數組
2.可視化編程
2.1 動態制作
3.切割技術
3.1 實現圖片的自動切割
4.鼠標操作
4.1 玩游戲的內容
對邏輯也是有一定的要求,但是這些在我們項目源碼里面都會有注釋,大家到時候學習的時候千萬不要忽略注釋,注釋可以更好地幫你理解代碼,尤其是C語言初學者。
本項目編譯環境:VS2019/VS2013;
插件:圖形庫插件easyX,涉及圖片素材可以自行百度找也可以關注文末領取;
配套講解教程:游戲教程——嗶哩嗶哩
源代碼示例:
/******************************************/// 全局變量的定義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); //設置窗口顏色為白色cleardevice(); //刷新顯示setfillcolor(LIGHTBLUE); //設置填充顏色為淡藍色settextstyle(30, 0, "字魂24號-鎮魂手書");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); //設置文字顏色為紅色outtextxy(130, 280, "頓開教育莫影拼圖游戲 v1.0版本");MOUSEMSG m;//鼠標操作while (1){m = GetMouseMsg();//當鼠標放到矩形區域,畫一個矩形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.給一維數組初始化0-15for (i = 0; i < 15; i++){//0-14array1D[i] = i;}//2.隨機出來一個下表for (i = 0; i < 4; i++){for (j = 0; j < 4; j++){//單獨處理最后一個位置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);}/******************************************/// 繪圖過程void drawMap(){//根據打亂順序的二維數組中的值去拿照片中相應的位置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;}}}}/******************************************/// 游戲過程void playGame(){MOUSEMSG m;//白塊在數組那個位置int j_Mouse, i_Mouse; //鼠標點在數組那個位置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;}}}/******************************************/// 游戲過程void GameOve(){int flag = 1;}int main(){drawMenu();loadResource();initgraph(800, 800);playGame();closegraph();return 0;}
寫在最后:對于準備學習C/C++編程的小伙伴,如果你想更好的提升你的編程核心能力(內功)不妨從現在開始!
責任編輯:haq
-
C語言
+關注
關注
183文章
7644瀏覽量
145570 -
源代碼
+關注
關注
96文章
2953瀏覽量
70306
原文標題:C語言項目實戰:《拼圖游戲》零基礎項目!250 行源碼注釋示例
文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學習基地】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
C語言來實現萬年歷
C語言主要特點
如何用好 C 語言函數的返回值?
為什么單片機還在用C語言編程?
【HarmonyOS next】ArkUI-X休閑益智兒童拼圖【進階】
單片機C語言實例(350+例)
深入理解C語言:C語言循環控制
客廳變游戲室?如何用樹莓派實現 Moonlight 游戲流媒體
為什么學了C語言,卻寫不出像樣的項目?
如何用C語言實現拼圖游戲項目
評論