设为首页 加入收藏

TOP

(Visual C++)游戏开发笔记十六 讲解一个完整的回合制游戏demo (三)
2014-11-23 19:48:53 】 浏览:1042
Tags:Visual 游戏 开发 笔记 十六 讲解 一个 完整 回合 demo
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:
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 3/9/9
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇vc里实现不规则窗体 下一篇richedit研究04 ? 高效时钟

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目