Skip to content

Latest commit

 

History

History
52 lines (41 loc) · 1.4 KB

34.md

File metadata and controls

52 lines (41 loc) · 1.4 KB

Problema

34 - Estás a desenvolver um jogo, e tanto o jogador como os NPCs, representados de forma abstrata pela classe GameCharacter, transportam itens do tipo IGameItem. Os itens de cada GameCharacter estão guardados numa coleção genérica do tipo HashSet<T>, representada pela variável de instância items. Alguns destes itens podem implementar a interface IBurnable, representada pelo seguinte código:

public interface IBurnable
{
    float PotentialEnergy { get; }
    void Burn();
}

Escreve um método chamado GetPotentialEnergyOfBurnableItems(), pertencente à classe GameCharacter, que devolve a soma da energia potencial de todos os itens queimáveis transportados pelo jogador ou por um NPC.

Soluções

Solução 1

public float GetPotentialEnergyOfBurnableItems()
}
    float totalEnergyOfBurnables = 0f;
    
    foreach (IGameItem item in items)
    {
        if (item is IBurnable burnable)
            totalEnergyOfBurnables += burnable.PotentialEnergy;
    }

    return totalEnergyOfBurnables;
}

Nota do docente: a sintaxe if (varOriginal is UmCertoTipo novaVar) { /* codigo*/ } usada nesta solução foi introduzida no C# 7.1 e é equivalente a:

if (varOriginal is UmCertoTipo)
{
    UmCertoTipo novaVar = varOriginal as UmCertoTipo;
    /* codigo */
}