最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++語言實現(xiàn)拼圖游戲詳解

 更新時間:2021年09月27日 09:13:34   作者:CUMT德一  
這篇文章主要為大家詳細介紹了C++基于EasyX庫實現(xiàn)拼圖小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

開發(fā)環(huán)境:Visual Studio 2019,easyx圖形庫。

easyx下載官網(wǎng):

EasyX Graphics Library for C++

https://easyx.cn/

easyx使用文檔:

EasyX 文檔 - 函數(shù)說明

https://docs.easyx.cn/zh-cn/reference

游戲功能列表:

其主要功能描述如下:

1.圖片尺寸自適應

2.圖片動態(tài)分割

3.查看原圖

4.隨機切換圖片

5.鼠標拖動拼圖<——>交換拼圖塊

6.自動判斷拼圖成功

拓展功能:

  • 背景音樂(開,關)
  • 游戲中Esc鍵返回桌面
  • 游戲規(guī)則窗口

游戲效果

封面(音樂按鈕有點拉跨~)

游戲初始圖(我的心是冰冰的)

通關圖

一.頭文件和基本量

#include<conio.h>
#include<stdio.h>
#include<easyx.h>
#include<time.h>
#include<Windows.h>   
#include<mmsystem.h>    //音樂
#pragma comment(lib,"Winmm.lib")    //靜態(tài)庫,調(diào)用音樂
using namespace std;
constexpr auto N = 3;    //3*3拼圖
IMAGE img[4], imgs[9];     //img存整張圖片,imgs暫存拼圖塊
int aim_c, aim_r;          //拼圖塊坐標
int map[3][3] = { 0 };     //存拼圖塊
int NUM = 0;          //關卡數(shù)計數(shù)

二.封面

//開始界面
void start()
{
	loadimage(NULL, L"cover.jpg");
	setbkmode(TRANSPARENT);
	settextcolor(BLACK);
	settextstyle(60, 0, _T("楷體"),0,0,4,false,false,false);
	outtextxy(180, 120, L"拼圖游戲");                    //游戲名稱
	settextstyle(30, 0, _T("微軟雅黑"));
	setfillcolor(BROWN);
	setlinestyle(BS_SOLID, 5);
	setlinecolor(RED);
	fillroundrect(220, 220, 370, 270, 10, 10);
	settextstyle(30, 0, _T("宋體"), 0, 0, 6, false, false, false);  //開始按鈕
	outtextxy(270, 230, L"開始");
	fillroundrect(220, 300, 370, 350, 10, 10);
	outtextxy(240, 310, L"游戲規(guī)則");
	setfillcolor(BROWN);
	setlinestyle(BS_SOLID, 5);
	setlinecolor(BLACK);
	fillcircle(490, 440, 30);  //音樂控制按鈕:開
	fillcircle(560, 440, 30);  //音樂控制按鈕:關
	outtextxy(380, 430, L"音樂:");
	setfillcolor(BLACK);
	POINT pts[] = { {481,425},{481,455},{507,440} };
	fillpolygon(pts, 3);
	fillrectangle(546, 425, 554, 455);
	fillrectangle(566, 425, 574, 455);
	rules();
}

三.數(shù)據(jù)初始化

//游戲初始化
void init()
{
	//加載資源圖片,4張圖4個關卡
	loadimage(&img[0], L"picture1.jpg",  600, 600);
	loadimage(&img[1], L"picture2.jpg", 600, 600);
	loadimage(&img[2], L"picture3.jpg", 600, 600);
	loadimage(&img[3], L"picture4.jpg", 600, 600);
	//設置最后一張圖片為空白圖片,作為目標圖片
	loadimage(&imgs[8], L"white.jpg", 200, 200);
	//設置隨機種子
	srand((unsigned)time(NULL));
}

四.封面規(guī)則按鈕

//封面規(guī)則函數(shù)
int rules()
{
	  ExMessage Mou;    //鼠標消息
	  while (1)
	  {
		  Mou = getmessage(EM_MOUSE);
		  switch (Mou.message)    //對鼠標信息進行匹配
		  {
		  case WM_LBUTTONDOWN:            //按下左鍵
			  if (Mou.x >= 220 && Mou.x <= 370 && Mou.y >= 300 && Mou.y <= 350)
			  {
				  HWND hwnd = GetHWnd();
				  MessageBox(NULL, L"1.鼠標左鍵點擊空白圖處周圍圖片交換位置\n2.鼠標右鍵任意處按下顯示參照圖片\n3.鼠標中鍵更換背景圖片\n4.按Esc鍵返回封面", L"游戲規(guī)則", MB_OKCANCEL);
				  break;                     //規(guī)則按鈕
			  }
			  if (Mou.x >= 220 && Mou.x <= 370 && Mou.y >= 220 && Mou.y <= 270)
			  {
				  return 0;                  //開始按鈕
			  }
			  if (Mou.x >= 460 && Mou.x <= 520 && Mou.y >= 410 && Mou.y <= 470)
			  {
				  BGM();                     //音樂播放按鈕
				  break;
			  }
			  if (Mou.x >= 530 && Mou.x <= 590 && Mou.y >= 410 && Mou.y <= 470)
			  {
				  mciSendString(L"close back", 0, 0, 0);     //音樂關閉按鈕
				  break;
			  }
		  }
	  }
 }

五.構造拼圖

//拼圖構造函數(shù)
void GameInit()
{
	//把拼圖貼上去
	putimage(0, 0, &img[NUM]);
	//設置繪圖目標為img對象   對拼圖圖片進行切割
	SetWorkingImage(&img[NUM]);
	for (int y = 0, n = 0; y < N; y++)
	{
		for (int x = 0; x < N; x++)
		{
			if (n == 8)	break;
			//獲取100*100像素圖片,存儲在img中;
			getimage(&imgs[n++], x * 200, y * 200, (x + 1) * 200, (y + 1) * 200);
		}
	}
	//設置繪圖目標為繪圖窗口
	SetWorkingImage();
	//初始化地圖0~15
	for (int i = 0, k = 0; i < N; i++)
	{
		for (int j = 0; j < N; j++)
		{
			map[i][j] = k++;
		}
	}
	//打亂地圖
	for (int k = 0; k <= 1000; k++)
	{
		//得到目標所在的行和列
		for (int i = 0; i < N; i++)
		{
			for (int j = 0; j < N; j++)
			{
				if (map[i][j] == 8)  //空白圖片作為交換目標
				{
					aim_r = i;
					aim_c = j;
					break;
				}
			}
		}
		//一千次打亂順序之后需要將空白圖片轉移到右下角
		//可以封裝成函數(shù)下面這個代碼
		if (k == 1000)
		{
			//將空白圖片循環(huán)轉移到右下角
			while (aim_r < 2)
			{
				//保證空白目標在最下
				map[aim_r][aim_c] = map[aim_r + 1][aim_c];
				map[aim_r + 1][aim_c] = 8;
				aim_r++;
			}
			while (aim_c < 2)
			{
				//保證空白目標在最右
				map[aim_r][aim_c] = map[aim_r][aim_c + 1];
				map[aim_r][aim_c + 1] = 8;
				aim_c++;
			}
			return;
		}
		int dir = rand() % 4;   //隨機一個方向
		switch (dir)
		{
		case 0:  //向上交換
			if (aim_r >= 1)
			{
				//空白圖片和空白處上面的圖片交換
				map[aim_r][aim_c] = map[aim_r - 1][aim_c];
				map[aim_r - 1][aim_c] = 8;
				break;
			}
		case 1:  //向下交換
			if (aim_r < 2)
			{
				//空白圖片和空白處下面的圖片交換
				map[aim_r][aim_c] = map[aim_r + 1][aim_c];
				map[aim_r + 1][aim_c] = 8;
				break;
			}
		case 2:  //向左交換
			if (aim_c >= 1)
			{
				//空白圖片和空白處左邊的圖片交換
				map[aim_r][aim_c] = map[aim_r][aim_c - 1];
				map[aim_r][aim_c - 1] = 8;
				break;
			}
		case 3:  //向右交換
			if (aim_c < 2)
			{
				//空白圖片和空白處右邊的圖片交換 
				map[aim_r][aim_c] = map[aim_r][aim_c + 1];
				map[aim_r][aim_c + 1] = 8;
				break;
			}
		}
	}
}

六.繪圖函數(shù)

//繪圖函數(shù)
void DrawMap()
{
	FlushBatchDraw();  //開始渲染圖片
	for (int y = 0; y < N; y++)
	{
		for (int x = 0; x < N; x++)
		{
			putimage(x * 200, y * 200, &imgs[map[y][x]]);
		}
	}
	EndBatchDraw();
}

七.背景音樂

//背景音樂函數(shù)
void BGM()
{
	//打開音樂,播放音樂
	mciSendStringW(L"open ./Thrills.mp3 alias back", NULL, 0, NULL);
	mciSendStringW(_T("play back repeat"), 0, 0, 0);
}

八.數(shù)據(jù)更新

//數(shù)據(jù)更新函數(shù)
void play()
{
	int col, row;  //鼠標點擊的位置
	ExMessage msg;    //鼠標消息
	msg = getmessage(EM_MOUSE|EM_KEY);   //獲取鼠標消息
	switch (msg.message)      //對鼠標消息進行匹配
	{
	case WM_LBUTTONDOWN:  //當鼠標消息是左鍵按下時
		//獲取鼠標按下所在列
		col = msg.x / 200;
		if (msg.x == 600)
			col = 2;
		//獲取鼠標按下所在行
		row = msg.y / 200;
		if (msg.y == 600)
			row = 2;
		//得到目標所在行和列
		for (int i = 0; i < N; i++)
		{
			for (int j = 0; j < N; j++)
			{
				if (map[i][j] == 8)    //空白處為交換目標
				{
					aim_r = i;
					aim_c = j;
				}
			}
		}
		//判斷鼠標點擊位置和目標是否相鄰,相鄰交換數(shù)據(jù)
		if (row == aim_r && col == aim_c + 1 ||
			row == aim_r && col == aim_c - 1 ||
			row == aim_r + 1 && col == aim_c ||
			row == aim_r - 1 && col == aim_c)
		{
			//鼠標點擊圖片和空白目標圖片交換
			map[aim_r][aim_c] = map[row][col];
			map[row][col] = 8;
		}
		DrawMap();
		break;
	case WM_RBUTTONDOWN: //當鼠標消息是右鍵按下時
		putimage(0, 0, &img[NUM]);   //將關卡圖片貼到窗口上
		break;
	case WM_RBUTTONUP:  //當鼠標消息是右鍵抬起時
		DrawMap();
		break;
	case WM_MBUTTONDOWN:
		NUM++;
		if (NUM == 4)
			NUM = 0;   //返回第一張圖
		//重新開始游戲
		GameInit(); //游戲初始化
		DrawMap();  //渲染地圖
		break;
	case WM_KEYDOWN:
		if (msg.vkcode == VK_ESCAPE)    //按Esc鍵返回封面
		{
			start();
			break;
		}
	}	
}

九.通關判斷

//通關判斷函數(shù)
void Judge()
{
	//判斷當前每張圖片是否在對應位置
	if (map[0][0] == 0 && map[0][1] == 1 && map[0][2] == 2 &&
		map[1][0] == 3 && map[1][1] == 4 && map[1][2] == 5 &&
		map[2][0] == 6 && map[2][1] ==7 && map[2][2] == 8 )
	{
		//挑戰(zhàn)成功之后將全圖貼上
		putimage(0, 0, &img[NUM++]);
		//四個關卡都勝利之后退出程序
		if (NUM == 4)
		{
			MessageBox(GetHWnd(), L"挑戰(zhàn)成功", L"Vectory", MB_OK);
			exit(0);
			return;
		}
		//每過一個關卡判斷是否進入下一個關卡
		if (MessageBox(GetHWnd(), L"是否進入下一關", L"Vectory", MB_YESNO) == IDYES)
		{
			//重新開始游戲
			GameInit(); //游戲初始化
			DrawMap();  //渲染地圖
		}
		//退出游戲
		else exit(0);
	}
}

十.完整程序

#include<conio.h>
#include<stdio.h>
#include<easyx.h>
#include<time.h>
#include<Windows.h>
#include<mmsystem.h>
#pragma comment(lib,"Winmm.lib") 
using namespace std;
constexpr auto N = 3;
IMAGE img[4], imgs[9];
int aim_c, aim_r;
int map[3][3] = { 0 };
int NUM = 0;
//游戲規(guī)則,開始界面設計
void start();
//封面按鈕
int rules();
//加載資源
void init();
//游戲數(shù)據(jù)初始化
void GameInit();
//游戲渲染
void DrawMap();
//播放音樂
void BGM();
//玩家操作
void play();
//判斷輸贏
void Judge();
int main()
{
	//設置窗口大小
	initgraph(6 * 100, 6 * 100);
	//設置圖片
	start();
	init();
	GameInit();
	DrawMap();
	while (1)
	{
		play();
		Judge();
	}
	system("pause");//等待用戶按鍵
	closegraph();
	return 0;
}
//開始界面
void start()
{
	loadimage(NULL, L"cover.jpg");
	setbkmode(TRANSPARENT);
	settextcolor(BLACK);
	settextstyle(60, 0, _T("楷體"),0,0,4,false,false,false);
	outtextxy(180, 120, L"拼圖游戲");                    //游戲名稱
	settextstyle(30, 0, _T("微軟雅黑"));
	setfillcolor(BROWN);
	setlinestyle(BS_SOLID, 5);
	setlinecolor(RED);
	fillroundrect(220, 220, 370, 270, 10, 10);
	settextstyle(30, 0, _T("宋體"), 0, 0, 6, false, false, false);  //開始按鈕
	outtextxy(270, 230, L"開始");
	fillroundrect(220, 300, 370, 350, 10, 10);
	outtextxy(240, 310, L"游戲規(guī)則");
	setfillcolor(BROWN);
	setlinestyle(BS_SOLID, 5);
	setlinecolor(BLACK);
	fillcircle(490, 440, 30);  //音樂控制按鈕:開
	fillcircle(560, 440, 30);  //音樂控制按鈕:關
	outtextxy(380, 430, L"音樂:");
	setfillcolor(BLACK);
	POINT pts[] = { {481,425},{481,455},{507,440} };
	fillpolygon(pts, 3);
	fillrectangle(546, 425, 554, 455);
	fillrectangle(566, 425, 574, 455);
	rules();
}
//游戲初始化
void init()
{
	//加載資源圖片,4張圖4個關卡
	loadimage(&img[0], L"picture1.jpg",  600, 600);
	loadimage(&img[1], L"picture2.jpg", 600, 600);
	loadimage(&img[2], L"picture3.jpg", 600, 600);
	loadimage(&img[3], L"picture4.jpg", 600, 600);
	//設置最后一張圖片為空白圖片,作為目標圖片
	loadimage(&imgs[8], L"white.jpg", 200, 200);
	//設置隨機種子
	srand((unsigned)time(NULL));
}
//封面選項函數(shù)
int rules()
{
	  ExMessage Mou;    //鼠標消息
	  while (1)
	  {
		  Mou = getmessage(EM_MOUSE);
		  switch (Mou.message)    //對鼠標信息進行匹配
		  {
		  case WM_LBUTTONDOWN:            //按下左鍵
			  if (Mou.x >= 220 && Mou.x <= 370 && Mou.y >= 300 && Mou.y <= 350)
			  {
				  HWND hwnd = GetHWnd();
				  MessageBox(NULL, L"1.鼠標左鍵點擊空白圖處周圍圖片交換位置\n2.鼠標右鍵任意處按下顯示參照圖片\n3.鼠標中鍵更換背景圖片\n4.按Esc鍵返回封面", L"游戲規(guī)則", MB_OKCANCEL);
				  break;                     //規(guī)則按鈕
			  }
			  if (Mou.x >= 220 && Mou.x <= 370 && Mou.y >= 220 && Mou.y <= 270)
			  {
				  return 0;                  //開始按鈕
			  }
			  if (Mou.x >= 460 && Mou.x <= 520 && Mou.y >= 410 && Mou.y <= 470)
			  {
				  BGM();                     //音樂播放按鈕
				  break;
			  }
			  if (Mou.x >= 530 && Mou.x <= 590 && Mou.y >= 410 && Mou.y <= 470)
			  {
				  mciSendString(L"close back", 0, 0, 0);     //音樂關閉按鈕
				  break;
			  }
		  }
	  }
 }
//拼圖構造函數(shù)
void GameInit()
{
	//把拼圖貼上去
	putimage(0, 0, &img[NUM]);
	//設置繪圖目標為img對象   對拼圖圖片進行切割
	SetWorkingImage(&img[NUM]);
	for (int y = 0, n = 0; y < N; y++)
	{
		for (int x = 0; x < N; x++)
		{
			if (n == 8)	break;
			//獲取100*100像素圖片,存儲在img中;
			getimage(&imgs[n++], x * 200, y * 200, (x + 1) * 200, (y + 1) * 200);
		}
	}
	//設置繪圖目標為繪圖窗口
	SetWorkingImage();
	//初始化地圖0~15
	for (int i = 0, k = 0; i < N; i++)
	{
		for (int j = 0; j < N; j++)
		{
			map[i][j] = k++;
		}
	}
	//打亂地圖
	for (int k = 0; k <= 1000; k++)
	{
		//得到目標所在的行和列
		for (int i = 0; i < N; i++)
		{
			for (int j = 0; j < N; j++)
			{
				if (map[i][j] == 8)  //空白圖片作為交換目標
				{
					aim_r = i;
					aim_c = j;
					break;
				}
			}
		}
		//一千次打亂順序之后需要將空白圖片轉移到右下角
		//可以封裝成函數(shù)下面這個代碼
		if (k == 1000)
		{
			//將空白圖片循環(huán)轉移到右下角
			while (aim_r < 2)
			{
				//保證空白目標在最下
				map[aim_r][aim_c] = map[aim_r + 1][aim_c];
				map[aim_r + 1][aim_c] = 8;
				aim_r++;
			}
			while (aim_c < 2)
			{
				//保證空白目標在最右
				map[aim_r][aim_c] = map[aim_r][aim_c + 1];
				map[aim_r][aim_c + 1] = 8;
				aim_c++;
			}
			return;
		}
		int dir = rand() % 4;   //隨機一個方向
		switch (dir)
		{
		case 0:  //向上交換
			if (aim_r >= 1)
			{
				//空白圖片和空白處上面的圖片交換
				map[aim_r][aim_c] = map[aim_r - 1][aim_c];
				map[aim_r - 1][aim_c] = 8;
				break;
			}
		case 1:  //向下交換
			if (aim_r < 2)
			{
				//空白圖片和空白處下面的圖片交換
				map[aim_r][aim_c] = map[aim_r + 1][aim_c];
				map[aim_r + 1][aim_c] = 8;
				break;
			}
		case 2:  //向左交換
			if (aim_c >= 1)
			{
				//空白圖片和空白處左邊的圖片交換
				map[aim_r][aim_c] = map[aim_r][aim_c - 1];
				map[aim_r][aim_c - 1] = 8;
				break;
			}
		case 3:  //向右交換
			if (aim_c < 2)
			{
				//空白圖片和空白處右邊的圖片交換 
				map[aim_r][aim_c] = map[aim_r][aim_c + 1];
				map[aim_r][aim_c + 1] = 8;
				break;
			}
		}
	}
}
//繪圖函數(shù)
void DrawMap()
{
	FlushBatchDraw();  //開始渲染圖片
	for (int y = 0; y < N; y++)
	{
		for (int x = 0; x < N; x++)
		{
			putimage(x * 200, y * 200, &imgs[map[y][x]]);
		}
	}
	EndBatchDraw();
}
//背景音樂函數(shù)
void BGM()
{
	//打開音樂,播放音樂
	mciSendStringW(L"open ./Thrills.mp3 alias back", NULL, 0, NULL);
	mciSendStringW(_T("play back repeat"), 0, 0, 0);
}
//數(shù)據(jù)更新函數(shù)
void play()
{
	int col, row;  //鼠標點擊的位置
	ExMessage msg;    //鼠標消息
	msg = getmessage(EM_MOUSE|EM_KEY);   //獲取鼠標消息
	switch (msg.message)      //對鼠標消息進行匹配
	{
	case WM_LBUTTONDOWN:  //當鼠標消息是左鍵按下時
		//獲取鼠標按下所在列
		col = msg.x / 200;
		if (msg.x == 600)
			col = 2;
		//獲取鼠標按下所在行
		row = msg.y / 200;
		if (msg.y == 600)
			row = 2;
		//得到目標所在行和列
		for (int i = 0; i < N; i++)
		{
			for (int j = 0; j < N; j++)
			{
				if (map[i][j] == 8)    //空白處為交換目標
				{
					aim_r = i;
					aim_c = j;
				}
			}
		}
		//判斷鼠標點擊位置和目標是否相鄰,相鄰交換數(shù)據(jù)
		if (row == aim_r && col == aim_c + 1 ||
			row == aim_r && col == aim_c - 1 ||
			row == aim_r + 1 && col == aim_c ||
			row == aim_r - 1 && col == aim_c)
		{
			//鼠標點擊圖片和空白目標圖片交換
			map[aim_r][aim_c] = map[row][col];
			map[row][col] = 8;
		}
		DrawMap();
		break;
	case WM_RBUTTONDOWN: //當鼠標消息是右鍵按下時
		putimage(0, 0, &img[NUM]);   //將關卡圖片貼到窗口上
		break;
	case WM_RBUTTONUP:  //當鼠標消息是右鍵抬起時
		DrawMap();
		break;
	case WM_MBUTTONDOWN:
		NUM++;
		if (NUM == 4)
			NUM = 0;   //返回第一張圖
		//重新開始游戲
		GameInit(); //游戲初始化
		DrawMap();  //渲染地圖
		break;
	case WM_KEYDOWN:
		if (msg.vkcode == VK_ESCAPE)    //按Esc鍵返回封面
		{
			start();
			break;
		}
	}	
}
//通關判斷函數(shù)
void Judge()
{
	//判斷當前每張圖片是否在對應位置
	if (map[0][0] == 0 && map[0][1] == 1 && map[0][2] == 2 &&
		map[1][0] == 3 && map[1][1] == 4 && map[1][2] == 5 &&
		map[2][0] == 6 && map[2][1] ==7 && map[2][2] == 8 )
	{
		//挑戰(zhàn)成功之后將全圖貼上
		putimage(0, 0, &img[NUM++]);
		//四個關卡都勝利之后退出程序
		if (NUM == 4)
		{
			MessageBox(GetHWnd(), L"挑戰(zhàn)成功", L"Vectory", MB_OK);
			exit(0);
			return;
		}
		//每過一個關卡判斷是否進入下一個關卡
		if (MessageBox(GetHWnd(), L"是否進入下一關", L"Vectory", MB_YESNO) == IDYES)
		{
			//重新開始游戲
			GameInit(); //游戲初始化
			DrawMap();  //渲染地圖
		}
		//退出游戲
		else exit(0);
	}
}

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容!

相關文章

  • C++深入探究用NULL來初始化空指針是否合適

    C++深入探究用NULL來初始化空指針是否合適

    在C++11新特性中,我們用nullptr來表示指針空值,這是為什么呢?好好地NULL為什么不繼續(xù)使用呢?說明在創(chuàng)造C++的大佬們一定發(fā)現(xiàn)了什么Bug,本篇我們就一起來討論一下吧
    2022-05-05
  • OpenCV圖像旋轉Rotate的詳細介紹

    OpenCV圖像旋轉Rotate的詳細介紹

    這篇文章主要介紹了OpenCV圖像旋轉Rotate,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C語言設計簡易電話簿

    C語言設計簡易電話簿

    這篇文章主要為大家詳細介紹了C語言設計簡易電話簿,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • 基于C/C++時間函數(shù)的使用詳解

    基于C/C++時間函數(shù)的使用詳解

    本篇文章是對C/C++時間函數(shù)的使用進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C++實現(xiàn)反轉鏈表的兩種方法

    C++實現(xiàn)反轉鏈表的兩種方法

    本文主要介紹了C++實現(xiàn)反轉鏈表的兩種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • C++中的數(shù)組、鏈表與哈希表

    C++中的數(shù)組、鏈表與哈希表

    這篇文章主要介紹了C++中的數(shù)組、鏈表與哈希表,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Qt基于QRencode實現(xiàn)生成二維碼

    Qt基于QRencode實現(xiàn)生成二維碼

    QRencode是一個開源的庫,專門用于生成二維碼(QR?Code),這篇文章主要為大家詳細介紹了Qt如何使用QRencode實現(xiàn)生成二維碼功能,需要的可以參考下
    2025-02-02
  • C++將模板實現(xiàn)放入頭文件原理解析

    C++將模板實現(xiàn)放入頭文件原理解析

    這篇文章主要為大家介紹了C++將模板實現(xiàn)放入頭文件原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • C++實現(xiàn)位圖排序實例

    C++實現(xiàn)位圖排序實例

    這篇文章主要介紹了C++實現(xiàn)位圖排序,是比較重要的排序算法,需要的朋友可以參考下
    2014-08-08
  • C語言實現(xiàn)簡單三子棋游戲

    C語言實現(xiàn)簡單三子棋游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡單三子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09

最新評論

绵阳市| 德州市| 商都县| 区。| 太谷县| 祁门县| 五华县| 尼勒克县| 东辽县| 华阴市| 乌苏市| 靖西县| 搜索| 铅山县| 分宜县| 伊金霍洛旗| 邢台县| 博客| 沙坪坝区| 志丹县| 福清市| 巴楚县| 兰州市| 徐州市| 加查县| 凌源市| 玉林市| 内黄县| 涟水县| 财经| 莱西市| 沧源| 黄浦区| 华坪县| 顺平县| 汉阴县| 凉城县| 宜城市| 乌拉特中旗| 镇远县| 绵阳市|