📄 role.cpp
字号:
// Role.cpp: implementation of the CRole class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Role.h"
UINT CRole::RoleNum ;
CRole::CRole(HWND _hWnd,HDC mDC)
{
RoleNum+=1;
RoleID=RoleNum;
hWnd=_hWnd;
SetTimer(hWnd,RoleID,50,NULL);
HDC hDC=GetDC(hWnd);
RoleDC=CreateCompatibleDC(hDC);
cRoleDC=CreateCompatibleDC(hDC);
ReleaseDC(hWnd,hDC);
}
CRole::~CRole()
{
ReleaseDC(hWnd,RoleDC);
ReleaseDC(hWnd,cRoleDC);
DeleteObject(RoleBitmap);
DeleteObject(cRoleBitmap);
}
void CRole::DoRole(HDC mDC)//开始角色扮演
{
if(!(i<0||i>500||j<0||j>400))//方向控制
{
int dz=10;
if(Direction==1)
{
i+=dz/3;
j+=0;
}
if(Direction==2)
{
i+=dz/3;
j-=dz/3;
}
if(Direction==3)
{
i-=0;
j-=dz/3;
}
if(Direction==4)
{
i-=dz;
j-=dz;
}
if(Direction==5)
{
i-=dz/3;
j+=0;
}
if(Direction==6)
{
i-=dz/3;
j+=dz/3;
}
if(Direction==7)
{
i+=0;
j+=dz/3;
}
if(Direction==8)
{
i+=dz/3;
j+=dz/3;
}
}
}
void CRole::ReDraw(HDC mDC)//重画角色
{
if(RoleID==1)
{
BitBlt(mDC,i,j,RoleBm.bmWidth/5 ,RoleBm.bmHeight/10 ,cRoleDC,100*PicIndex,100*Direction,SRCPAINT);
BitBlt(mDC,i,j,RoleBm.bmWidth/5 ,RoleBm.bmHeight/10 ,RoleDC,100*PicIndex,100*Direction,SRCAND);
}
else
{
BitBlt(mDC,i,j,RoleBm.bmWidth ,RoleBm.bmHeight ,cRoleDC,0,0,SRCPAINT);
BitBlt(mDC,i,j,RoleBm.bmWidth ,RoleBm.bmHeight ,RoleDC,0,0,SRCAND);
}
char st[11]="";
DToStr(st,RoleID);
SetBkMode(mDC,0); //文字背景透明
SetTextColor(mDC,RGB(250,10,20));
TextOut(mDC,i+130,j+30,st,1);
}
void CRole::SetRolePic(char *_RolePic)//设置角色使用的角色图片
{
RolePic=_RolePic;
RoleBitmap=(HBITMAP )::LoadImage(NULL,
(LPCTSTR)RolePic,
IMAGE_BITMAP,
0,0,
LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE);
cRoleBitmap=(HBITMAP )::LoadImage(NULL,
RolePic,
IMAGE_BITMAP,
0,0,
LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE);
GetObject(RoleBitmap,sizeof(BITMAP),(LPVOID)&RoleBm);
SelectObject(RoleDC,RoleBitmap);
SelectObject(cRoleDC,cRoleBitmap); BYTE *px1=(BYTE *)GlobalAlloc(GPTR,3*RoleBm.bmWidth *RoleBm.bmHeight);
BYTE *px2=(BYTE *)GlobalAlloc(GPTR,3*RoleBm.bmWidth *RoleBm.bmHeight);
GetBitmapBits(RoleBitmap,3*RoleBm.bmWidth *RoleBm.bmHeight,px1);
GetBitmapBits(cRoleBitmap,3*RoleBm.bmWidth *RoleBm.bmHeight,px2);
for(int z=0;z<3*RoleBm.bmWidth *RoleBm.bmHeight;z+=3)
{
if(((px1[z]==255)&& (px1[z+1]==255)&&(px1[z+2]==255)))
{
px2[z]=0;
px2[z+1]=0;
px2[z+2]=0;
}
else
{
px2[z]=255;
px2[z+1]=255;
px2[z+2]=255;
}
}
SetBitmapBits(cRoleBitmap,3*RoleBm.bmWidth *RoleBm.bmHeight,px2);
GlobalFree((HGLOBAL)px1);
GlobalFree((HGLOBAL)px2);
}
char * CRole::DToStr(char * st,DWORD X)//双字转换成字符串
{
DWORD x=X;
char st1[11]="",st2[2]="";
int len=0;
DWORD chu=1;
st2[1]=char(0);
while(chu!=0)
{
chu=x/10;
st2[0]=char(x%10+48);
strcat(st1,st2);
x=chu;
len+=1;
}
for(int i=0;i<len;i++)
st[i]=st1[len-i-1];
st[len+1]=0;
return st;
}
void CRole::ChangePic()//更换角色图象
{
PicIndex++;
if(PicIndex>4)PicIndex=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -