tOut背景透明
MyPaint(hdc);
return TRUE;
}
//****自定义绘图函数*********************************
// 1.画面贴图与对战消息显示
// 2.怪物行为判断及各项数据处理与计算
void MyPaint(HDC hdc)
{
char str[100];
int i,damage;
//贴上背景图
SelectObject(bufdc,bg);
BitBlt(mdc,0,0,640,510,bufdc,0,0,SRCCOPY);
//显示对战消息
for(i=0;i TextOut(mdc,0,360+i*18,text[i],strlen(text[i]));
//贴上怪物图
if(monster.nHp>0)
{
SelectObject(bufdc,sheep);
BitBlt(mdc,70,180,133,110,bufdc,0,110,SRCAND);
BitBlt(mdc,70,180,133,110,bufdc,0,0,SRCPAINT);
sprintf(str,"%d / %d",monster.nHp,monster.fHp);
TextOut(mdc,100,320,str,strlen(str));
}
//贴上玩家图
if(player.nHp>0)
{
SelectObject(bufdc,girl);
BitBlt(mdc,500,200,60,74,bufdc,pNum*60,74,SRCAND);
BitBlt(mdc,500,200,60,74,bufdc,pNum*60,0,SRCPAINT);
sprintf(str,"%d / %d",player.nHp,player.fHp);
TextOut(mdc,510,320,str,strlen(str));
}
if(over) //贴上游戏结束图画
{
SelectObject(bufdc,game);
BitBlt(mdc,200,200,289,37,bufdc,0,37,SRCAND);
BitBlt(mdc,200,200,289,37,bufdc,0,0,SRCPAINT);
}
else if(!attack) //贴上攻击命令图画
{
SelectObject(bufdc,skill);
BitBlt(mdc,500,350,50,50,bufdc,0,0,SRCCOPY);
SelectObject(bufdc,skillult);
BitBlt(mdc,430,350,50,50,bufdc,0,0,SRCCOPY);
//BitBlt(mdc,500,350,74,30,bufdc,0,30,SRCAND);
//BitBlt(mdc,500,350,74,30,bufdc,0,0,SRCPAINT);
}
else
{
f++;
//第5~10个画面时显示玩家攻击图标
if(f>=5 && f<=10)
{
SelectObject(bufdc,slash);
BitBlt(mdc,100,160,98,162,bufdc,98,0,SRCAND);
BitBlt(mdc,100,160,98,162,bufdc,0,0,SRCPAINT);
//第10个画面时计算怪物受伤害程度并加入显示消息
if(f == 10)
{
if (4==rand()%5) // 20%几率触发幻影刺客的大招,恩赐解脱,4倍暴击伤害
{
damage = 4*(rand()%10 + player.lv*player.w);
monster.nHp -= (int)damage;
sprintf(str,"恩赐解脱触发,这下牛逼了,4倍暴击...对怪物照成了%d点伤害",damage);
}
else
{
damage = rand()%10 + player.lv*player.w;
monster.nHp -= (int)damage;
sprintf(str,"玩家使用了无敌斩,伤害一般般...对怪物照成了%d点伤害",damage);
}
MsgInsert(str);
CheckDie(monster.nHp,false);
}
}
srand(tPre);
//第15个画面时判断怪物进行哪项动作
if(f == 15)
{
if(monster.nHp > 20) //生命值大于20
{
if(rand()%5 != 1) //进行利爪攻击概率4/5
monster.kind = 0;
else //进行闪电链攻击概率1/5
monster.kind = 1;
}
else //生命值小于20
{
switch(rand()%5)
{
case 0: //利爪攻击
monster.kind = 0;
break;
case 1: //释放闪电链
monster.kind = 1;
break;
case 2: //致命一击
monster.kind = 2;
break;
case 3: //使用梅肯斯姆回复
monster.kind = 3;
break;
case 4: //逃跑
monster.kind = 4;
break;
}
}
}
//第26~30个画面时显示玩家攻击图标
if(f>=26 && f<=30)
{
switch(monster.kind)
{
case 0: //利爪攻击
SelectObject(bufdc,slash);
BitBlt(mdc,480,150,98,162,bufdc,98,0,SRCAND);
BitBlt(mdc,480,150,98,162,bufdc,0,0,SRCPAINT);
//第30个画面时计算玩家受伤害程度并加入显示消息
if(f == 30)
{
damage = rand()%10 + monster.lv*monster.w;
player.nHp -= (int)damage;
sprintf(str,"怪物利爪攻击...对玩家照成 %d 点伤害",damage);
MsgInsert(str);
CheckDie(player.nHp,true);
}
break;
case 1: //释放闪电链
SelectObject(bufdc,magic);
BitBlt(mdc,480,190