36 - Escreve um programa que: 1) liste todas as classes num jogo RPG; 2) solicite ao utilizador uma das classes (através do valor numérico do respetivo membro da enumeração); e, 3) mostre uma descrição textual sobre essa classe. As classes existentes neste jogo, e as respetivas descrições, são:
- Warrior: Melee hack-and-slash class.
- Knight: Heavy armor class.
- Barbarian: Big guy with an equally big weapon.
- Monk: Melee class that forgoes weapons for their powerful fists.
- Archer: Ranged class with bows or guns.
- Thief: Sneaky bandit with itchy fingers and a nose for treasure.
- Priest: Class who makes sure the party survives an encounter.
- Mage: Class with spells to burn, freeze or electrify.
- Druid: Class capable of summoning minions.
Referência: https://www.giantbomb.com/classes/3015-405/
Nota: Usar switch
para selecionar a descrição a mostrar.
enum RpgClass
{
Warrior,
Knight,
Barbarian,
Monk,
Archer,
Thief,
Priest,
Mage,
Druid
}
Nota do docente: esta solução usa o método Enum.Parse()
, que não foi
discutido nas aulas; no entanto é possível resolver o problema sem recorrer
a este método.
// Declarar variáveis
string playerInput;
string msg;
// Perguntar ao utilizador qual das RpgClass deseja utilizar
Console.WriteLine("Insert the number of your class:\n" +
"0 - Warrior\n1 - Knight\n2 - Barbarian\n3 - Monk\n" +
"4 - Archer\n5 - Thief\n6 - Priest\n7 - Mage\n8 - Druid\n");
// Input do jogador e conversão do mesmo
playerInput = Console.ReadLine();
RpgClass plyrClass = (RpgClass)Enum.Parse(typeof(RpgClass),
playerInput);
// Switch case que utiliza o input do jogador convertido para
// verificar a classe escolhida
switch (plyrClass)
{
case RpgClass.Warrior:
msg = "Melee hack-and-slash class.";
break;
case RpgClass.Knight:
msg = "Heavy armor class.";
break;
case RpgClass.Barbarian:
msg = "Big guy with an equally big weapon.";
break;
case RpgClass.Monk:
msg = "Melee class that forgoes weapons for their " +
"powerful fists.";
break;
case RpgClass.Archer:
msg = "Ranged class with bows or guns.";
break;
case RpgClass.Thief:
msg = "Sneaky bandit with itchy fingers and a nose " +
"for treasure.";
break;
case RpgClass.Priest:
msg = "Class who makes sure the party survives an " +
"encounter.";
break;
case RpgClass.Mage:
msg = "Class with spells to burn, freeze or " +
"electrify.";
break;
case RpgClass.Druid:
msg = "Class capable of summoning minions.";
break;
default:
msg = "No class was selected...";
break;
}
// Mostrar a classe do jogador, por motivos de verificação da mesma
Console.WriteLine($"Class: {plyrClass}");
// Mostrar a mensagem com a descrição da classe
Console.WriteLine($"Class Description: {msg}\n");
Por Pedro Inácio.