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: |