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.
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 */
}