当前位置: 首页>>代码示例>>C++>>正文


C++ Weapon::getDamage方法代码示例

本文整理汇总了C++中Weapon::getDamage方法的典型用法代码示例。如果您正苦于以下问题:C++ Weapon::getDamage方法的具体用法?C++ Weapon::getDamage怎么用?C++ Weapon::getDamage使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Weapon的用法示例。


在下文中一共展示了Weapon::getDamage方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: onMessage

bool AttackState::onMessage(Character* agent, const Telegram& msg)
{
    switch (msg.msg) {
        case Msg_AttackedByWeapon:{//被玩家的武器攻击到
            log("Character::Msg_AttackedByWeapon");
            Weapon *weapon = (Weapon*)GameEntityManager::getInstance()->getEntityFromID(msg.sender);
            agent->takeDamage(weapon->getDamage());
            if (agent->getLife() <= 0) {
                agent->die();
                return false;
            }
            switch (weapon->getType()) {
                case WeaponTypeKnife:{
                    Knife *knife = (Knife*)weapon;
                    
                    KnifeAttackDirection direction = *(KnifeAttackDirection*)msg.extraInfo;
                    if (knife->isXuliStateDamage()) {
                        if (direction == KnifeAttackDirectionUp) {
                            agent->flowup();
                        }else if (direction == KnifeAttackDirectionDown) {
                            agent->falldown();
                        }else if (direction == KnifeAttackDirectionRight) {
                            agent->rollback();
                        }else{
                            agent->stiff();
                        }
                    }else{
                        agent->stiff();
                    }
                    
                }
                    break;
                    case WeaponTypePistol:
                    agent->stiff();
                    break;
                default:
                    break;
            }
        }
            break;
        default:
            break;
    }
    return false;
}
开发者ID:NjAiYo,项目名称:Monster,代码行数:45,代码来源:AttackState.cpp

示例2: shoot

GameObj* GOBox::shoot()
{
	if (getIsWeapon())
	{
		Weapon* w = getWeapon();

		if (getIsRangedWeapon()){
			
			if (((RangedWeapon *)w)->readyToShoot())
			{
				double rbDepth = getDepth() / 2 + ((RangedWeapon *)w)->getPDepth()/1.5 + 0.6f;
				btTransform* rbTrans = &getRigidBody()->getWorldTransform();
				btVector3 boxRot = rbTrans->getBasis()[2];
				boxRot.normalize();
				btVector3 correctedDisplacement = boxRot * -rbDepth; // /2
				double x = rbTrans->getOrigin().getX();// + 0.5 - w->getPWidth();
				double y = rbTrans->getOrigin().getY();
				double z = rbTrans->getOrigin().getZ() + correctedDisplacement.getZ();

				GameObj* proj = new Projectile(x, y, z, rbTrans->getRotation().getX(), rbTrans->getRotation().getY(), rbTrans->getRotation().getZ(), rbTrans->getRotation().getW(),
					((RangedWeapon *)w)->getPMass(), ((RangedWeapon *)w)->getPWidth(), ((RangedWeapon *)w)->getPHeight(), ((RangedWeapon *)w)->getPDepth());
				proj->setDamage(w->getDamage());
				//std::cout << "shoot: " << ((RangedWeapon *)w)->getPBlockType() << std::endl;
				proj->setBlockType(((RangedWeapon *)w)->getPBlockType());
				((RangedWeapon *)w)->setLastShot();
				((Projectile*)proj)->initForce = ((RangedWeapon *)w)->getPInitForce();


				return proj;
			}

		}

	}
	return nullptr;
}
开发者ID:RuiqingQiu,项目名称:CSE125,代码行数:36,代码来源:GOBox.cpp

示例3: main


//.........这里部分代码省略.........
            }while( sMove != "q" );
            if( sMove == "q" )
            {
                //cout << endl << "Really!? You just quit. Good going." << endl;
                break;
            }


            /////////////////////////////////////PLAYER MOVEMENT AND ATTACK///////////////////////////////////////////


            for( size_t i = 0 ; i < vvCreatures[dNum].size() ; i++ )
            {
                if( vvCreatures[dNum][i]->getCoordX() == tempX && vvCreatures[dNum][i]->getCoordY() == tempY )
                {
                    //cout << "creature occupied set to true" << endl;
                    creatureOccupied = true;
                    break;
                }
            }
            wallOccupied = vDL[dNum]->DungeonLevel::checkMove(tempX,tempY);
            if(wallOccupied == true && creatureOccupied == false && ( tempX <! 0 || tempX >! 79 || tempY <! 0 || tempY >! 20 ))
            {
                vDL[dNum]->removeCreature(playerX, playerY);
                playerX = tempX;
                playerY = tempY;
                vDL[dNum]->setCreature(pPlayer, playerX, playerY);
                creatureTurn = true;
            }
            else if( wallOccupied == true && creatureOccupied == true )
            {
                if( bWeapon == false )
                {
                    attack = mt() % (pPlayer->getWeapon())->getDamage();
                }
                else
                {
                    attack = mt() % (punch->getDamage());
                }
                HP = (vDL[dNum]->getCreature(tempX,tempY))->getHP();
                //cout << endl << "Creature's HP before: " << HP << endl;
				mvprintw(24,0,"Creature's HP before: %i", HP);
				refresh();
                (vDL[dNum]->getCreature(tempX,tempY))->setHP(HP - attack);
                //cout << endl << pPlayer->getName() << " attacked " << (vDL[dNum]->getCreature(tempX, tempY))->getName() << " for " << attack << " damage " << endl;
                if( HP - attack <= 0 )
                {
                    for( int i = 0 ; i < vvCreatures[dNum].size() ; i++ )
                    {
                        if( vvCreatures[dNum][i]->getCoordX() == tempX && vvCreatures[dNum][i]->getCoordY() == tempY )
                        {
                            vDL[dNum]->removeCreature( vvCreatures[dNum][i]->getCoordX(), vvCreatures[dNum][i]->getCoordY() );
                            //cout << pPlayer->getName() << " killed " << vvCreatures[dNum][i]->getName() << "!" << endl;
							mvprintw(27,0,"%s killed the creature!",pPlayer->getName().c_str());
                            delete vvCreatures[dNum][i];
                            vvCreatures[dNum].erase(vvCreatures[dNum].begin() + i);
                            break;
                        }
                    }
                    pPlayer->setExperience(pPlayer->getExperience() + vDL.size() * 5);
                }
                else
                {
                    HP = (vDL[dNum]->getCreature(tempX,tempY))->getHP();
                }
                //cout << endl << "Creature's HP after: " << HP << endl;
开发者ID:ShannonSimpson,项目名称:RougeLikeGame,代码行数:67,代码来源:main_cl.cpp

示例4: collideWeaponMonster

void collideWeaponMonster(Weapon w, Monster m[], Player p)
{
    bool knockbackDebug = true;
    float sqrt2over2 = .707;
    for (int i = 0; i < numMonsters; i ++)
    {
        if (m[i].isLive == true)
        {
            if (m[i].vincible &&  w.isLive == true)
            {
                if(w.getDamageType() == bash || w.getDamageType() == stab)
                {
                    //looking upwards
                    if (p.getDir() == UP)
                    {
                        //up box
                        if (w.getCurFrame() == 2)
                        {
                            if (bounding_box_collision( w.getX() + w.weaponOffsetX, w.getY() + w.weaponOffsetY, w.getW(), w.getLength(), m[i].getX() + m[i].getBoundOffsetW() , m[i].getY() + m[i].getBoundOffsetH(), m[i].getBoundW(), m[i].getBoundH()))
                            {
                                m[i].knockbackDirection = 1;
                            }
                        }
                        //diagonal box
                        if (w.getCurFrame() == 1)
                        {
                            if (bounding_box_collision(w.getX() + w.weaponOffsetX, w.getY() + w.weaponOffsetY + (w.getLength() * (1 - sqrt2over2)),  w.getLength() * sqrt2over2 , w.getLength() * sqrt2over2 , m[i].getX() + m[i].getBoundOffsetW() , m[i].getY() + m[i].getBoundOffsetH(), m[i].getBoundW(), m[i].getBoundH()))
                            {
                                m[i].knockbackDirection = 2;
                            }
                        }
                        //right box
                        if (w.getCurFrame() == 0)
                        {
                            if (bounding_box_collision(w.getX() + w.weaponOffsetX, w.getY() + w.weaponOffsetY + w.getLength() - w.getW(),  w.getLength(), w.getW() , m[i].getX() + m[i].getBoundOffsetW() , m[i].getY() + m[i].getBoundOffsetH(), m[i].getBoundW(), m[i].getBoundH()))
                            {
                                m[i].knockbackDirection = 3;
                            }
                        }
                    }

                    //looking downwards
                    if (p.getDir() == DOWN)
                    {
                        //down box
                        if (w.getCurFrame() == 2)
                        {
                            if (bounding_box_collision( w.getX() + w.weaponOffsetX + w.getLength() - w.getW(), w.getY() + w.weaponOffsetY, w.getW(), w.getLength(), m[i].getX() + m[i].getBoundOffsetW() , m[i].getY() + m[i].getBoundOffsetH(), m[i].getBoundW(), m[i].getBoundH()))
                            {
                                m[i].knockbackDirection = 5;
                            }
                        }
                        //diagonal box
                        if (w.getCurFrame() == 1)
                        {
                            if (bounding_box_collision(w.getX() + w.weaponOffsetX + (w.getLength() * (1 - sqrt2over2)), w.getY() + w.weaponOffsetY,  w.getLength() * sqrt2over2 , w.getLength() * sqrt2over2 , m[i].getX() + m[i].getBoundOffsetW() , m[i].getY() + m[i].getBoundOffsetH(), m[i].getBoundW(), m[i].getBoundH()))
                            {
                                m[i].knockbackDirection = 6;
                            }
                        }
                        //left box
                        if (w.getCurFrame() == 0)
                        {
                            if (bounding_box_collision(w.getX() + w.weaponOffsetX, w.getY() + w.weaponOffsetY,  w.getLength(), w.getW() , m[i].getX() + m[i].getBoundOffsetW() , m[i].getY() + m[i].getBoundOffsetH(), m[i].getBoundW(), m[i].getBoundH()))
                            {
                                m[i].knockbackDirection = 7;
                            }
                        }
                    }
                    //looking left 
                    if (p.getDir() == LEFT)
                    {
                        //up box
                        if (w.getCurFrame() == 2)
                        {
                            if (bounding_box_collision(w.getX() + w.weaponOffsetX + w.getLength() - w.getW(), w.getY() + w.weaponOffsetY, w.getW(), w.getLength(), m[i].getX() + m[i].getBoundOffsetW() , m[i].getY() + m[i].getBoundOffsetH(), m[i].getBoundW(), m[i].getBoundH()))
                            {
                                m[i].knockbackDirection = 1;
                            }
                        }
                        //diagonal box
                        if (w.getCurFrame() == 1)
                        {
                            if (bounding_box_collision(w.getX() + w.weaponOffsetX + (w.getLength() * (1 - sqrt2over2)), w.getY() + w.weaponOffsetY + (w.getLength() * (1 - sqrt2over2)), w.getLength() * sqrt2over2 , w.getLength() * sqrt2over2 , m[i].getX() + m[i].getBoundOffsetW() , m[i].getY() + m[i].getBoundOffsetH(), m[i].getBoundW(), m[i].getBoundH()))
                            {
                                m[i].knockbackDirection = 8;
                            }
                        }
                        //left box
                        if (w.getCurFrame() == 0)
                        {
                            if (bounding_box_collision(w.getX() + w.weaponOffsetX, w.getY() + w.weaponOffsetY + w.getLength() - w.getW(),  w.getLength(), w.getW() , m[i].getX() + m[i].getBoundOffsetW() , m[i].getY() + m[i].getBoundOffsetH(), m[i].getBoundW(), m[i].getBoundH()))
                            {
                                m[i].knockbackDirection = 7;
                            }
                        }
                    }
                    //facing right
                    if (p.getDir() == RIGHT)
                    {
//.........这里部分代码省略.........
开发者ID:apdisant,项目名称:AllegroGameProgramming,代码行数:101,代码来源:monsters.cpp

示例5: hit

Uint16 Monster::hit(Uint16, Weapon& weap) {
    sfxeng->playWAV(au_hit);
    Uint16 newhealth=addHealth(weap.getDamage());
    if (newhealth==0) die();
    return newhealth;
}
开发者ID:jjermann,项目名称:lost_penguins,代码行数:6,代码来源:monsters_common.cpp


注:本文中的Weapon::getDamage方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。