📄 map.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 + -