📄 timer.cpp
字号:
#include "main.h"
void CALLBACK GameTimer(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime)
{
static int tt=100;
tt++;
cursor=(cursor+1)%12;//改鼠标
//-----------------------------修改子弹状态--------------------
for (int i=0;i<MaxBullet;i++)
{
if (bullet[i]->status!=-1)
{
int dx=bullet[i]->tx-bullet[i]->x;
int dy=bullet[i]->ty-bullet[i]->y;
bullet[i]->life--;
if (bullet[i]->life==0)
bullet[i]->status=-1;
if ( (abs(dx)>4)||(abs(dy)>4) ) //未到目标,移动
{
int ddx=8*dx/(sqrt(dx*dx+dy*dy))+0.5;
int ddy=8*dy/(sqrt(dx*dx+dy*dy))+0.5;
bullet[i]->x+=ddx;
bullet[i]->y+=ddy;
bullet[i]->tx+=ddx;
bullet[i]->ty+=ddy;
/* for (int j=0;j<MaxBlock;j++)
if ( (abs(block[j]->x-bullet[i]->x)<16) && (block[j]->y-bullet[i]->y<71) && (block[j]->y-bullet[i]->y>-26) )
{
bullet[i]->status=-1;
break;
}*/
}
//看看是否命中
int xxx=FoundHuman(bullet[i]->x-human[main]->x+316,bullet[i]->y-human[main]->y+236);
if (xxx!=-1)
{
if (human[xxx]->type!=human[bullet[i]->owner]->type)
{
bullet[i]->status=-1;
human[xxx]->health-=10;
if (xxx!=main)
{
human[xxx]->MainStatus=fighting;
human[xxx]->FollowID=bullet[i]->owner;
human[xxx]->FootStatus=0;
}
if (human[xxx]->health==0)
human[xxx]->MainStatus=away;
}
}
}
}
//-----------------------------逐渐恢复发弹后人物状态----------
for (i=0;i<MaxHuman;i++)
{
if (human[i]->CoolDown!=0)
human[i]->CoolDown--;
}
//-----------------------------将所有非主角人物随机移动--------
if (tt>100)
{
for (int i=1;i<MaxHuman;i++)
if (human[i]->MainStatus==normal)
human[i]->moveto(rand()%960,rand()%704);
tt=0;
}
//-----------------------------移动作了移动标记的人------------
for (i=0;i<MaxHuman;i++)
{
if ((human[i]->MainStatus!=away)&&(human[i]->FootStatus!=-1))
{
if (tt%3==0) //改脚的状态
human[i]->FootStatus=(human[i]->FootStatus+1)%4;
long dx,dy;
if (human[i]->FollowID==-1)//无人,移往某地
{
dx=human[i]->MoveToX-human[i]->x;
dy=human[i]->MoveToY-human[i]->y;
}
else
{
human[i]->moveto(human[human[i]->FollowID]->x,human[human[i]->FollowID]->y);
dx=(human[human[i]->FollowID]->x-human[i]->x)/12;
//距离比较近就已可对话
dy=(human[human[i]->FollowID]->y-human[i]->y)/12;
if ( (human[i]->MainStatus==fighting)
&& ( dx*dx+dy*dy<450) ) //敌人在射程内
{
if (human[human[i]->FollowID]->health==0) //已死
{
human[i]->FootStatus=-1;
human[i]->MainStatus=normal;
human[i]->FollowID=-1;
}
else
{
human[i]->FootStatus=2;
human[i]->fight(); //发弹
dx=0;
dy=0;
}
}
}
if ((abs(dx)>1)||(abs(dy)>1)) //如还未到目标
{
float newx=human[i]->x+(0.5+3*dx/(sqrt(dx*dx+dy*dy)));
float newy=human[i]->y+(0.5+3*dy/(sqrt(dx*dx+dy*dy)));
int tt=1;
/* for (int j=0;j<max_block;j++) //检查障碍
{
if ((block[j]->x-newx)*(block[j]->x-newx)+
(block[j]->y-newy)*(block[j]->y-newy)<480)
{
tt=0;
break;
}
}*/
if (tt==1)
{
human[i]->x=newx;
human[i]->y=newy;
}
}
else //已到目标
{
if (human[i]->MainStatus!=fighting) //如非战斗状态
{
human[i]->FootStatus=-1;
if (human[i]->FollowID!=-1)
human[i]->talk(human[i]->FollowID); //谈话
human[i]->FollowID=-1;
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -