📄 player.cpp
字号:
#include "stdafx.h"
// 构造函数
Player::Player(GameWorld *pgw, int x_value, int y_value)
:FighterPlane(pgw, x_value, y_value)//用来取得战斗机,和设计战斗机的初值
{
sx=0;
sy=0;
w=29;
h=33;
cx=6;
cy=11;
cw=17;
ch=19;
Life = 20;
speed=3;
KillEnermy = 0;
Score = 0;
dx=0;
dy=0;
Firing=false;
FighterPlane::BulletType=Bullet::PLAYER_BULLET_FIRE;
AdjustPosition();
}
// 刷新Player的状态
void Player::Update()
{
if(!Used)//当飞机死了,再生产
{
pGameWorld->ResetPlayer();
return;
}
if(Life>0)//当还没有死掉,对它的飞行进行方位设计
{
if(x+dx<0)//当位置已经在最左了,就不能再往左了
{
x=0;
dx=0;
}
else if(y+dy<0)//当位置已经在最下了,就不能再往下了
{
y=0;
dy=0;
}
else if(x+w+dx>GameWorld::Width-1)//当位置已经在最右了,就不能再往右了,w为机身宽
{
x=GameWorld::Width-w-1;
dx=0;
}
else if(y+h+dy>GameWorld::Height-1)//当位置已经在最上了,就不能再往上了,h为机身高
{
y=GameWorld::Height-h-1;
dy=0;
}
}
FighterPlane::Update();//开火调用爆破场景
}
void Player::ChangeWeapon()// 换武器,BULLET_TYPE为枚举型
{
BulletType=(Bullet::BULLET_TYPE)((BulletType+1)%4);
}
void Player::Action(ACTION NewAction)//设计相应的按键,
{
if(Life<=0) return;
switch(NewAction)
{
case GO_LEFT:
dx=-speed;
dy=0;
break;
case GO_RIGHT:
dx=speed;
dy=0;
break;
case GO_UP:
dx=0;
dy=-speed;
break;
case GO_DOWN:
dx=0;
dy=speed;
break;
case GO_LEFT_UP:
dx=-0.7*speed;
dy=-0.7*speed;
break;
case GO_LEFT_DOWN:
dx=-0.7*speed;
dy=0.7*speed;
break;
case GO_RIGHT_UP:
dx=0.7*speed;
dy=-0.7*speed;
break;
case GO_RIGHT_DOWN:
dx=0.7*speed;
dy=0.7*speed;
break;
case STOP_MOVING:
dx=0;
dy=0;
break;
case START_FIRING:
StartFiring();
break;
case STOP_FIRING:
StopFiring();
break;
case CHANGE_WEAPON:
ChangeWeapon();
break;
}
}
void Player::Fire()//射击,当最后一次射击时间比各种子弹的发射时间间隔要大的话就可以发射同时再设计最后一次的发射时间
{
if( pGameWorld->Time - LastFireTime < Bullet::GetFireInterval( BulletType ) )
return;
pGameWorld->PlayerFire(this);
LastFireTime=pGameWorld->Time;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -