#include "res.h"
map<string, IMAGE*> Res::img; //图片资源 静态数据成员在类外初始化,类名限定
map<string, string> Res::music; //音乐资源
Res::Res() //构造函数为数据成员初始化---路径下处理
{
//背景
string background ="./res/background.jpg";
//角色---4张---背景图+掩码图
string roleImg[4] = {"./res/planeNormal_1.jpg","./res/planeNormal_2.jpg",
"./res/planeExplode_1.jpg","./res/planeExplode_2.jpg" };
//子弹
string ballImg[2] = {"./res/bullet1.jpg","./res/bullet2.jpg" };
//敌机
string enemyImg[4] = {"./res/enemy_1.jpg","./res/enemy_2.jpg","./res/enemyPlane1.jpg","./res/enemyPlane2.jpg" };
//string --->IMAGE* 本来就是指针,不需要取地址
img["背景"] =new IMAGE;
img["角色"] =new IMAGE[4];
img["子弹"] =new IMAGE[2];
img["敌机"] =new IMAGE[4];
loadimage(img["背景"], background.c_str()); //加载图片 路径 项目属性多字节
for (int i = 0; i < 4; i++)
{
/*假设img["角色"]为p,则p=new IMAGE [4];则img["角色"]+i 等效: p+i*/
loadimage(img["角色"] + i, roleImg[i].data()); //用.data或.cst()转换为字符串
loadimage(img["敌机"] + i, enemyImg[i].data());
}
for (int i = 0; i < 2; i++)
{
loadimage(img["子弹"] + i, ballImg[i].c_str());
}
}
//获取图片的宽度---碰撞的时候需要---返回对象指针,对象指针调用(img类型)数据成员,有一个成员函数
int Res::WIDTH(string name)
{
//获取对象,获取什么样的属性,(img类型)海口福兴医院有一个getwidth()成员函数---是库中的成员函数
return GetInstance()->img[name]->getwidth();
}
//获取图片的高度
int Res::HEIGHT(string name)
{
return GetInstance()->img[name]->getheight();
}
Res* Res::GetInstance()
{
static Res* res =new Res;
return res;
}
//只有一张图片的贴图: 背景图贴图
void Res::DrawIMG(int x,int y, string name)
{
putimage(x, y, GetInstance()->img[name]); //贴图 在x,y位置贴对象里面的图片
}
void Res::DrawRole(int x,int y, string name,int preIndex)
{
//多张图片贴图---透明贴图---去背景
putimage(x, y, GetInstance()->img[name] + preIndex, NOTSRCERASE);//贴第几张---帧数
putimage(x, y, GetInstance()->img[name] + preIndex+1, SRCINVERT);
}
DWORD __stdcall Res::PlayMusic(LPVOID lparame)
{
int key = (int)lparame; //线程处理函数的参数---强转为int
switch (key) //不同的音乐,类型不一样
{
case 1:
mciSendString("close ./res/f_gun.mp3", 0, 0, 0); //播放前先关闭
mciSendString("open ./res/f_gun.mp3", 0, 0, 0); //先打开,后播放
mciSendString("play ./res/f_gun.mp3", 0, 0, 0);
break;
case 2:
mciSendString("close ./res/5.mp3", 0, 0, 0);
mciSendString("open ./res/5.mp3", 0, 0, 0);
mciSendString("play ./res/5.mp3", 0, 0, 0);
break;
case 3:
mciSendString("close ./res/10.mp3", 0, 0, 0);
mciSendString("open ./res/10.mp3", 0, 0, 0);
mciSendString("play ./res/10.mp3", 0, 0, 0);
break;
}
return 0;
}
Res::~Res()
{
delete img["背景"];
delete[] img["角色"];
delete[] img["敌机"];
delete[] img["子弹"];
}
|