⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 map.cpp

📁 Win32项目,类似坦克大战的游戏"忘记喧嚣". 游戏的各系统完整,闪屏,道具.碰撞等等....推荐
💻 CPP
字号:
#include ".\map.h"

Map::Map(HDC hdc, HDC mdc, HDC bufdc)
{
	m_hdc = hdc;
	m_mdc = mdc;
	m_bufdc = bufdc;
	m_kingLive = true;
	m_tileTypeMap[0] = (HBITMAP)::LoadImage(NULL, "../res/graphics/black.bmpp", IMAGE_BITMAP, 20, 20, LR_LOADFROMFILE); // 黑
	m_tileTypeMap[1] = (HBITMAP)::LoadImage(NULL, "../res/graphics/brick.bmp", IMAGE_BITMAP, 20, 20, LR_LOADFROMFILE);  // 砖
	m_tileTypeMap[2] = (HBITMAP)::LoadImage(NULL, "../res/graphics/grass.bmp", IMAGE_BITMAP, 20, 20, LR_LOADFROMFILE);  // 草
	m_tileTypeMap[3] = (HBITMAP)::LoadImage(NULL, "../res/graphics/rock.bmp", IMAGE_BITMAP, 20, 20, LR_LOADFROMFILE);   // 铁
	m_tileTypeMap[4] = (HBITMAP)::LoadImage(NULL, "../res/graphics/water.bmp", IMAGE_BITMAP, 20, 20, LR_LOADFROMFILE);  // 水
	m_tileTypeMap[5] = (HBITMAP)::LoadImage(NULL, "../res/graphics/snow.bmp", IMAGE_BITMAP, 20, 20, LR_LOADFROMFILE);   // 冰
	m_king  = (HBITMAP)::LoadImage(NULL, "../res/graphics/king.bmp", IMAGE_BITMAP, 120, 40, LR_LOADFROMFILE);           // 国王
	m_overking = (HBITMAP)::LoadImage(NULL, "../res/graphics/overking.bmp", IMAGE_BITMAP, 40, 40, LR_LOADFROMFILE); 
}

int Map::m_map[TILE_H][TILE_W] = {0};

Map::~Map(void)
{
	::DeleteDC(m_bufdc);
	::DeleteDC(m_mdc);
	::DeleteDC(m_hdc);
	::DeleteObject(m_king);
	::DeleteObject(m_overking);
	for (int i=0; i<6; i++)
	{
		::DeleteObject(m_tileTypeMap[i]);
	}
}

void Map::LoadMaps(char *mapFileName)
{
	FILE *redMap = fopen( mapFileName, "r" );;
	if (!redMap)
	{
		::MessageBox(NULL, "不能打开文件!", NULL, MB_OK);
		::PostQuitMessage(0);
	}
	char array[TILE_H][TILE_W+1] = {0};

	for (int i=0; i<TILE_H; i++)
	{
		for (int j=0; j<TILE_W+1; j++)
		{
			array[i][j] = fgetc(redMap);
		}
	}

	fclose(redMap);

	for (int i=0; i<TILE_H; i++)
	{
		for (int j=0; j<TILE_W; j++)
		{
			m_map[i][j] = (int)array[i][j]-48;
		}
	}
}

void Map::ShowGress(void)
{
	for (int i=0; i<TILE_H; i++)
	{
		for (int j=0; j<TILE_W; j++)
		{
			if (m_map[i][j] == 2)
			{
				ShowMap(m_map[i][j], j, i);
			}
		}
	}
}

void Map::ShowMaps(void)
{
	for (int i=0; i<TILE_H; i++)
	{
		for (int j=0; j<TILE_W; j++)
		{
			if (m_map[i][j] != 0)
			{
				ShowMap(m_map[i][j], j, i);
			}
		}
	}
	if (m_kingLive)
	{
		::SelectObject(m_mdc, m_king);
		::TransparentBlt(m_bufdc,300, 470, 40, 40, m_mdc, 0, 0, 40, 40, RGB(0,255,0));
	}
	else
	{
		::SelectObject(m_mdc, m_overking);
		::TransparentBlt(m_bufdc,300, 470, 40, 40, m_mdc, 0, 0, 40, 40, RGB(0,255,0));
	}
}

void Map::ShowMap(int mapMode, int row, int line)
{
	m_mode = mapMode;
	m_point.x = row*20+60;
	m_point.y = line*20+30;

	::SelectObject(m_mdc, m_tileTypeMap[m_mode]);
	::TransparentBlt(m_bufdc,m_point.x, m_point.y, 20, 20, m_mdc, 0, 0, 20, 20, RGB(0,255,0));
}

void Map::SetRect(int line, int row)
{
	m_rect.left = row*20+60;
	m_rect.top = line*20+30;
	m_rect.right = m_rect.left + 20;
	m_rect.bottom = m_rect.top + 20;
}

void Map::SetKingRect(void)
{
	m_kingRect.left = 300;
	m_kingRect.top = 470;
	m_kingRect.right = m_kingRect.left + 40;
	m_kingRect.bottom = m_kingRect.top + 40;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -