📄 ui.cpp
字号:
#include ".\ui.h"
UI::UI(HDC hdc, HDC mdc, HDC bufdc)
{
u_hdc = hdc;
u_mdc = mdc;
u_bufdc = bufdc;
u_faceMap = (HBITMAP)::LoadImage(NULL, "../res/graphics/face.bmp", IMAGE_BITMAP, CLIENT_W, CLIENT_H, LR_LOADFROMFILE);
u_backGround = (HBITMAP)::LoadImage(NULL, "../res/graphics/background.bmp", IMAGE_BITMAP, 520, 485, LR_LOADFROMFILE);
u_back = (HBITMAP)::LoadImage(NULL, "../res/graphics/black.bmp", IMAGE_BITMAP, 650, 600, LR_LOADFROMFILE);
u_begin = (HBITMAP)::LoadImage(NULL, "../res/graphics/begin.bmp", IMAGE_BITMAP, 160, 480, LR_LOADFROMFILE);
u_exit = (HBITMAP)::LoadImage(NULL, "../res/graphics/exit.bmp", IMAGE_BITMAP, 160, 480, LR_LOADFROMFILE);
u_help = (HBITMAP)::LoadImage(NULL, "../res/graphics/help.bmp", IMAGE_BITMAP, 200, 54, LR_LOADFROMFILE);
u_close = (HBITMAP)::LoadImage(NULL, "../res/graphics/close.bmp", IMAGE_BITMAP, 60, 20, LR_LOADFROMFILE);
u_instruction = (HBITMAP)::LoadImage(NULL, "../res/graphics/instruction.bmp", IMAGE_BITMAP, 640, 344, LR_LOADFROMFILE);
u_pause = (HBITMAP)::LoadImage(NULL, "../res/graphics/pause.bmp", IMAGE_BITMAP, 650, 260, LR_LOADFROMFILE);
u_explode = (HBITMAP)::LoadImage(NULL, "../res/graphics/explosion5.bmp", IMAGE_BITMAP, 1440, 95, LR_LOADFROMFILE);
u_killNumback = (HBITMAP)::LoadImage(NULL, "../res/graphics/killNumberb.bmp", IMAGE_BITMAP, 54, 309, LR_LOADFROMFILE);
u_killNumer = (HBITMAP)::LoadImage(NULL, "../res/graphics/killnumber.bmp", IMAGE_BITMAP, 6, 250, LR_LOADFROMFILE);
u_number = (HBITMAP)::LoadImage(NULL, "../res/graphics/number.bmp", IMAGE_BITMAP, 130, 20, LR_LOADFROMFILE);
u_airdrop = (HBITMAP)::LoadImage(NULL, "../res/graphics/airdrop.bmp", IMAGE_BITMAP, 270, 120, LR_LOADFROMFILE);
u_complete = (HBITMAP)::LoadImage(NULL, "../res/graphics/complete.bmp", IMAGE_BITMAP, 524, 134, LR_LOADFROMFILE);
u_gameOver = (HBITMAP)::LoadImage(NULL, "../res/graphics/gameover.bmp", IMAGE_BITMAP, 440, 220, LR_LOADFROMFILE);
u_cloud = (HBITMAP)::LoadImage(NULL, "../res/graphics/cloud.bmp", IMAGE_BITMAP, 650, 600, LR_LOADFROMFILE);
u_turn = 0;
u_cloudX = 0;
u_mapMoveV = 0;
u_airdropV = 0;
u_instructV = 0;
u_explodeTurn = 0;
u_exploding = false;
char mapName[40] = "";
for (int i=0; i<11; i++)
{
wsprintf(mapName, "../res/graphics/live/heroLive%d.bmp", i);
u_heroLive[i] = (HBITMAP)::LoadImage(NULL, mapName, IMAGE_BITMAP, 54, 281, LR_LOADFROMFILE);
}
}
UI::~UI(void)
{
for (int i=0; i<11; i++)
{
::DeleteObject(u_heroLive[i]);
}
::DeleteObject(u_backGround);
::DeleteObject(u_explode);
::DeleteObject(u_pause);
::DeleteObject(u_killNumback);
::DeleteObject(u_killNumer);
::DeleteObject(u_number);
::DeleteObject(u_airdrop);
::DeleteObject(u_complete);
::DeleteObject(u_gameOver);
::DeleteObject(u_back);
::DeleteObject(u_cloud);
::DeleteDC(u_bufdc);
::DeleteDC(u_mdc);
::DeleteDC(u_hdc);
}
void UI::ShowFaceMap(bool begin, bool exit, bool help, bool instruct, bool instructClose)
{
::SelectObject(u_mdc, u_faceMap);
::BitBlt(u_bufdc, 0, 0, CLIENT_W, CLIENT_H, u_mdc, 0, 0, SRCCOPY);
::SelectObject(u_mdc, u_begin);
::TransparentBlt(u_bufdc,0, 450, 160, 38, u_mdc, 0, u_turn, 160, 38, RGB(255,0,255));
if (begin)
{
::TransparentBlt(u_bufdc,0, 450, 160, 38, u_mdc, 0, 440, 160, 38, RGB(255,0,255));
}
::SelectObject(u_mdc, u_exit);
::TransparentBlt(u_bufdc,0, 490, 160, 38, u_mdc, 0, u_turn, 160, 38, RGB(255,0,255));
if (exit)
{
::TransparentBlt(u_bufdc,0, 490, 160, 38, u_mdc, 0, 440, 160, 38, RGB(255,0,255));
}
if (u_turn <=360)
{
u_turn +=40;
}
::SelectObject(u_mdc, u_help);
::TransparentBlt(u_bufdc,520, 470, 100, 54, u_mdc, 0, 0, 100, 54, RGB(0,0,0));
if (help)
{
::TransparentBlt(u_bufdc,520, 470, 100, 54, u_mdc, 100, 0, 100, 54, RGB(0,0,0));
}
if (instruct)
{
::SelectObject(u_mdc, u_instruction);
::BitBlt(u_bufdc, 320-u_instructV, 105, u_instructV, 344, u_mdc, 0, 0, SRCCOPY);
::BitBlt(u_bufdc, 320, 105, u_instructV, 344, u_mdc, 640-u_instructV, 0, SRCCOPY);
if (u_instructV < 320)
{
u_instructV += 5;
}
else
{
u_instructV = 320;
}
if (u_instructV == 320)
{
::SelectObject(u_mdc, u_close);
::BitBlt(u_bufdc, 305, 425, 30, 20, u_mdc, 0, 0, SRCCOPY);
if (instructClose)
{
::BitBlt(u_bufdc, 305, 425, 30, 20, u_mdc, 30, 0, SRCCOPY);
}
}
}
else
{
u_instructV = 0;
}
}
void UI::ShowBackground(void)
{
::DeleteObject(u_faceMap);
::DeleteObject(u_begin);
::DeleteObject(u_exit);
::DeleteObject(u_help);
::DeleteObject(u_close);
::DeleteObject(u_instruction);
::SelectObject(u_mdc, u_back);
::BitBlt(u_bufdc, 0, 0, 640, 560, u_mdc, 0, 20, SRCCOPY);
}
void UI::ShowGamePause(void)
{
::SelectObject(u_mdc, u_pause);
::BitBlt(u_bufdc, 0, 110, 640, 260, u_mdc, 0, 0, SRCCOPY);
}
void UI::ShowExplode(int x, int y)
{
::SelectObject(u_mdc, u_explode);
::TransparentBlt(u_bufdc,x-20, y-20, 80, 95, u_mdc, u_explodeTurn*80, 0, 80, 95, RGB(255,0,255));
++u_explodeTurn;
if (u_explodeTurn>=17)
{
u_exploding = false;
}
}
void UI::ShowTackAttribute(Hero *hero)
{
// 血量
::SelectObject(u_mdc, u_heroLive[hero->t_HP]);
::TransparentBlt(u_bufdc,5, 235, 54, 281, u_mdc, 0, 0, 54, 281, RGB(255,0,255));
// life
::SelectObject(u_mdc, u_number);
::TransparentBlt(u_bufdc,45, 485, 13, 20, u_mdc, 13 * (hero->t_life), 0, 13, 20, RGB(255,0,255));
//分数
const int size = 5;
int digit[size] = {0};
for (int i=0; i<size; i++)
{
digit[i] = 9;
if (hero->h_score <= 99999)
{
digit[i] = (hero->h_score/((int)pow(10.0,i)))%10;
}
::TransparentBlt(u_bufdc,618-13*i, 5, 13, 20, u_mdc, 13 * digit[i], 0, 13, 20, RGB(255,0,255));
}
}
void UI::ShowHarvest(int killNumber)
{
int length = killNumber * (250/50);
int firstNumber = killNumber/10;
int secondNumber = killNumber%10;
::SelectObject(u_mdc, u_killNumback);
::TransparentBlt(u_bufdc,585, 200, 54, 309, u_mdc, 0, 0, 54, 309, RGB(255,0,255));
::SelectObject(u_mdc, u_killNumer);
::TransparentBlt(u_bufdc,608, 209+250-length, 6, length, u_mdc, 0, 0, 6, length, RGB(255,255,255));
::SelectObject(u_mdc, u_number);
::TransparentBlt(u_bufdc,599, 472, 13, 20, u_mdc, 13*firstNumber, 0, 13, 20, RGB(255,0,255));
::TransparentBlt(u_bufdc,612, 472, 13, 20, u_mdc, 13*secondNumber, 0, 13, 20, RGB(255,0,255));
}
void UI::ShowAirdrop(bool &airdroping, int killNumber, int &prekillNumber)
{
::SelectObject(u_mdc, u_airdrop);
::TransparentBlt(u_bufdc,185, u_airdropV, 270, 120, u_mdc, 0, 0, 270, 120, RGB(255,0,255));
if (u_airdropV < CLIENT_H)
{
u_airdropV += 10;
}
else
{
u_airdropV = 0;
airdroping = false;
prekillNumber = killNumber;
}
}
void UI::ShowGameComplete(void)
{
::SelectObject(u_mdc, u_complete);
::BitBlt(u_bufdc,60, u_mapMoveV, 524, 67, u_mdc, 0, 0, SRCCOPY);
::BitBlt(u_bufdc,60, 393-u_mapMoveV, 524, 67, u_mdc, 0, 67, SRCCOPY);
if (u_mapMoveV<164)
{
u_mapMoveV += 5;
}
else
{
u_mapMoveV = 164;
}
}
void UI::ShowGameOver(void)
{
::SelectObject(u_mdc, u_gameOver);
::BitBlt(u_bufdc,100, u_mapMoveV, 440, 110, u_mdc, 0, 0, SRCCOPY);
::BitBlt(u_bufdc,100, 450-u_mapMoveV, 440, 110, u_mdc, 0, 110, SRCCOPY);
if (u_mapMoveV<170)
{
u_mapMoveV += 5;
}
}
void UI::ShowCloud(void)
{
::SelectObject(u_mdc, u_cloud);
::TransparentBlt(u_bufdc,0, 0, u_cloudX, 600, u_mdc,650-u_cloudX, 0, u_cloudX, 600, RGB(0,0,0));
::TransparentBlt(u_bufdc,u_cloudX, 0, 650-u_cloudX, 600, u_mdc, 0, 0, 650-u_cloudX, 600, RGB(0,0,0));
if (u_cloudX > 649)
{
u_cloudX = 0;
}
else
{
u_cloudX += 2;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -