超级玛丽的练习
#include<easyx.h>
#include <conio.h>
#define DIRECT_UP 72
#define DIRECT_DOWN 80
#define DIRECT_LEFT 75
#define DIRECT_RIGHT 77
#define MOVE_STEP 5
#define ESC_KEY 27
class Mali
{
public:
int m_x;
int m_y;
int m_direct;
IMAGE m_up;
IMAGE m_down;
IMAGE m_left;
IMAGE m_right;
public:
Mali()
{
//创建窗口
::initgraph(600,600);
//设定窗口颜色为白色
setbkcolor(RGB(255, 255, 255));
::cleardevice();
m_x = 300;
m_y = 300;
m_direct = DIRECT_RIGHT;
//加载图片
::loadimage(&m_up, L"./res/mali-up.bmp");
::loadimage(&m_down, L"./res/mali-down.bmp");
::loadimage(&m_left, L"./res/mali-left.bmp");
::loadimage(&m_right, L"./res/mali-right.bmp");
}
~Mali()
{
::closegraph();
}
void Show()
{
::BeginBatchDraw();
::cleardevice();
m_direct == DIRECT_UP ? ::putimage(m_x, m_y, &m_up):void(0);
m_direct == DIRECT_DOWN ? ::putimage(m_x, m_y, &m_down) : void(0);
m_direct == DIRECT_LEFT ? ::putimage(m_x, m_y, &m_left) : void(0);
m_direct == DIRECT_RIGHT ? ::putimage(m_x, m_y, &m_right) : void(0);
::EndBatchDraw();
}
void Move(int direct)
{
switch (direct)
{
case DIRECT_UP:
{
m_y - MOVE_STEP >= 0 ? m_y -= MOVE_STEP : m_y = 0;
}
break;
case DIRECT_DOWN:
{
m_y + MOVE_STEP <= 540 ? m_y += MOVE_STEP : m_y = 540;
}
break;
case DIRECT_LEFT:
{
m_x - MOVE_STEP >= 0 ? m_x -= MOVE_STEP : m_x = 0;
}
break;
case DIRECT_RIGHT:
{
m_x + MOVE_STEP <= 540 ? m_x += MOVE_STEP : m_x = 540;
}
break;
}
}
void Run()
{
Show();
while (1)
{
int key = _getch();
if (key == ESC_KEY)
{
::MessageBox(nullptr, L"即将退出", L"提示", MB_OK);
break;
}
Move(key);
Show();
Sleep(10);
}
}
};
int main()
{
Mali mali;
mali.Run();
}