Exemplo n.º 1
0
Game::Game(){
	//initialise the invaders
	invader_group = new InvaderGroup(Position(50,450), Scale(20,15),
								15, MoveDistance(0,5,5,5), MoveRange(700,230,10,790), 11, 5, 2); //invader group
	//initialise the tank
    theTank = Tank("image/tank.png", Position(400,60), Scale(25,15), MoveDistance(0,0,10,10), 
								MoveRange(0,0,10,790),3); //tank

    for(int i = 0; i < 4; i++)
	{
		//initialise the shields
		theShield[i] = Shield("image/shield.png", Position(100+i*200,200), Scale(50,30), 10);
	}
    invader_last_time = -1;
    invader_current_time = -1;
    invader_step_time = 300; //300 ms
    bullet_last_time = -1;
    bullet_current_time = -1;
    bullet_step_time = 30; //30 ms
	//Assignment 4
	tank_last_time = -1;
	tank_last_milli = -1;
	tank_current_time = -1;
	tank_current_milli = -1;
	tank_step_time = 500; // 500 ms
    conti = true;
	srand(time(NULL));
	lose = false;
	theTank.readHighScore();
}
Exemplo n.º 2
0
	Shield ICharacter::unequipShield()
		{
			Shield returnShield = shield;

			updateStats(-shield.getStrength(), -shield.getDexterity(), -shield.getConstitution(), -shield.getIntelligence(), -shield.getWisdom(), -shield.getCharisma());

			this -> shield = Shield(0, 0, 0, 0, 0, 0);

			return returnShield;
		}
Exemplo n.º 3
0
std::string ChooseClassPanel::getClassShields(const CharacterClass &characterClass) const
{
	int lengthCounter = 0;
	const int shieldCount = static_cast<int>(characterClass.getAllowedShields().size());

	// Sort as they are listed in the CharacterClassParser.
	auto allowedShields = characterClass.getAllowedShields();
	std::sort(allowedShields.begin(), allowedShields.end());

	std::string shieldsString;

	// Decide what the shield string says.
	if (shieldCount == 0)
	{
		shieldsString = "None";
	}
	else
	{
		// Collect all allowed shield display names for the class.
		for (int i = 0; i < shieldCount; ++i)
		{
			const auto shieldType = allowedShields.at(i);
			auto dummyMetal = MetalType::Iron;
			auto typeString = Shield(shieldType, dummyMetal).typeToString();
			lengthCounter += static_cast<int>(typeString.size());
			shieldsString.append(typeString);

			// If not the last element, add a comma.
			if (i < (shieldCount - 1))
			{
				shieldsString.append(", ");

				// If too long, add a new line.
				if (lengthCounter > ChooseClassPanel::MAX_TOOLTIP_LINE_LENGTH)
				{
					lengthCounter = 0;
					shieldsString.append("\n   ");
				}
			}
		}
	}

	shieldsString.append(".");

	return shieldsString;
}
Exemplo n.º 4
0
bool useskill()
{
    if (status->objects[0].skill_level[SHIELD] != 0)
        if (danger_shield())
        {
            Shield(-1);
            return true;
        };
    /*int enemy=eat_player(kTeleportMaxDistance[status->objects[0].skill_level[TELEPORT]]);
    if (enemy!=-1)
    {
    if (status->objects[0].skill_level[TELEPORT]!=0)
    {
    Teleport(status->objects[0].id,map->objects[enemy].pos);
    return true;
    };
    };*/
    return false;
};
Exemplo n.º 5
0
void shield(PlayerObject obj){
	if (!obj.skill_level[SHIELD]) return;
	if (obj.skill_cd[SHIELD]) return;
	Shield(obj.id);
}
Exemplo n.º 6
0
int update() {
	if (me.skill_cd[SHIELD] == 0 /*&& me.short_attack_casting == -1*/ && me.long_attack_casting == -1) {
		WAIT;
		Shield(me.id);
		GO;
		return 1;
	}
	else {
		if (me.skill_level[HEALTH_UP] < kMaxSkillLevel) {
			if (me.ability >= cost(HEALTH_UP)) {
				WAIT;
				UpgradeSkill(me.id, HEALTH_UP);
				GO;
				return 1;
			}
			else return 0;
		}
		else if (me.skill_level[SHIELD] < kMaxSkillLevel) {
			if (me.ability >= cost(SHIELD)) {
				WAIT;
				UpgradeSkill(me.id, SHIELD);
				GO;
				return 1;
			}
			else return 0;
		}
		else {
			AE_Parameter = MID_ADVANCED_VALUE;//1st step of update finish
			if (me.skill_level[SHORT_ATTACK] < kMaxSkillLevel) {
				if (me.skill_level[DASH] < kMaxSkillLevel) {
					if (me.ability >= cost(SHORT_ATTACK)) {
						WAIT;
						UpgradeSkill(me.id, SHORT_ATTACK);
						GO;
						return 1;
					}
					else if (me.ability >= cost(DASH)) {
						WAIT;
						UpgradeSkill(me.id, DASH);
						GO;
						return 1;
					}
					else return 0;
				}
				else {
					if (me.ability >= cost(SHORT_ATTACK)) {
						WAIT;
						UpgradeSkill(me.id, SHORT_ATTACK);
						GO;
						return 1;
					}
					else return 0;
				}
			}
			else if (me.skill_level[DASH] < kMaxSkillLevel) {
				if (me.ability >= cost(DASH)) {
					WAIT;
					UpgradeSkill(me.id, DASH);
					GO;
					return 1;
				}
				else return 0;
			}
			else {
				AE_Parameter = LOW_ADVANCED_VALUE;//2st step of update finish
				if (me.skill_level[LONG_ATTACK] < kMaxSkillLevel) {
					if (me.ability >= cost(LONG_ATTACK)) {
						WAIT;
						UpgradeSkill(me.id, LONG_ATTACK);
						GO;
						return 1;
					}
					else return 0;
				}
				else {
					AE_Parameter = TRASH;//all finish
					if (me.ability >= cost(VISION_UP)){
						WAIT;
						UpgradeSkill(me.id, VISION_UP);
						GO;
					}
					return 0;
				}
			}
			return 0;
		}
	}
}
		void OnDamageTaken(Unit* mAttacker, uint32 fAmount)
		{
			if(GetHealthPercent() <= 50 && !m_bShielded)
				Shield();
		};