Skip to content

Latest commit

 

History

History
110 lines (94 loc) · 3.12 KB

File metadata and controls

110 lines (94 loc) · 3.12 KB

Problema

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.

Soluções

Solução 1

Enum das classes

enum RpgClass
{
    Warrior,
    Knight,
    Barbarian,
    Monk,
    Archer,
    Thief,
    Priest,
    Mage,
    Druid
}

Método Main

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.