Instruções

construir um jogo de pet digital

Objetivo: Atender às user stories abaixo e fazer todos os testes passarem para completar o laboratório. User stories: A aplicação deve ter duas views. Os requisitos para cada view estão englobados nas demais user stories: A primeira view:
  • Deve conter um formulário que aceite uma única entrada do tipo string.
  • Deve pedir ao usuário para nomear seu pet.
  • Deve conter um botão para submissão que iniciará o jogo.
  • Deve desaparecer após a submissão.
A segunda view:
  • Deve aparecer após a submissão da primeira view.
  • Deve conter três elementos <button>.
  • Cada elemento botão deve estar relacionado a uma das três seguintes ações: [EAT, PLAY, SLEEP].
  • O botão EAT deve reduzir o valor Hunger do pet e aumentar o valor Energy do pet.
  • O botão PLAY deve reduzir o valor Energy do pet e aumentar o valor Happiness do pet.
  • O botão SLEEP deve aumentar o valor Hunger do pet e aumentar o valor Energy do pet.
  • Deve acompanhar visualmente três propriedades do pet. Estas são: ['Hunger', 'Happiness', 'Energy'].
  • Cada elemento que acompanha cada uma das três propriedades deve:
  • Conter o texto relevante para essa propriedade, sem diferenciar maiúsculas de minúsculas, por exemplo, hunger, Hunger, hUnGeR são todos válidos.
  • NÃO conter o texto relevante para outras propriedades, ou seja, o elemento de acompanhamento Hunger NÃO deve conter o texto Happiness.
  • Conter uma representação numérica clara do valor atual dessa propriedade.
  • Cada Action disponível para o pet deve estar englobado por um enumerador.
  • Cada Action button deve conter um de cada um dos seguintes id relevantes para a ação daquele botão: ['eat-action', 'play-action', 'sleep-action'].
  • O pet deve ter os seguintes humores, englobados por um enumerador PetMood: ['Happy', 'Excited', 'Content', 'Sad', 'Tired', 'Sick', 'Hungry'].
  • O pet deve estar Hungry se Hunger > 70.
  • O pet deve estar Tired se Energy < 30.
  • O pet deve estar Sad se Happiness < 30.
  • O pet deve estar Excited se Happiness > 80 e Energy > 70.
  • O pet deve estar Happy se Happiness > 60.
  • Caso contrário, o pet deve estar Content.
  • O pet deve ter um número de imagens ou emojis vinculados a cada Mood.
  • Esses emojis ou imagens devem estar vinculados ao PetMood atual, com um Record.
  • A chave de cada entrada Record deve ser o valor enum PetMood relevante.

O que fazer:

Testes:

  • Quando a página carregar, deve haver um elemento `form` visível.
  • Este formulário deve conter um campo de entrada com id `pet-name`.
  • Este formulário deve conter um `button`.
  • Quando a entrada receber um valor e o botão for pressionado, o formulário não deve mais estar visível.
  • A segunda view deve conter um elemento com a classe `pet-name`.
  • A segunda view deve conter o nome do pet fornecido.
  • A segunda view deve conter três `button`s.
  • Exatamente um botão deve conter o id `#eat-action`.
  • Exatamente um botão deve conter o id `#play-action`.
  • Exatamente um botão deve conter o id `#sleep-action`.
  • Devem existir exatamente três elementos com a classe `.stat`.
  • Cada estatística do pet deve conter exatamente um elemento com a classe `.stat-value`.
  • Cada elemento `.stat-value` deve conter um número.
  • Cada número `.stat-value` deve estar dentro do intervalo `[0,100]`, inclusive.
  • Exatamente um elemento `.stat` deve conter o texto `Hunger`, sem diferenciar maiúsculas de minúsculas.
  • Um elemento `.stat` deve conter o texto `Energy`, sem diferenciar maiúsculas de minúsculas.
  • Um elemento `.stat` deve conter o texto `Happiness`, sem diferenciar maiúsculas de minúsculas.
  • A estatística `Hunger` deve começar em 0.
  • A estatística `Energy` deve começar em 100.
  • A estatística `Happiness` deve começar em 100.
  • Clicar no botão `Eat` deve reduzir o valor `Hunger` e aumentar o valor `Energy`. Se `Hunger` for 0 ou `Energy` for 100, esse valor não deve mudar.
  • Clicar no botão `Play` deve reduzir o valor `Energy` e aumentar o valor `Happiness`. Se `Energy` for 0 ou `Happiness` for 100, esse valor não deve mudar.
  • Clicar no botão `Sleep` deve aumentar o valor `Hunger` e aumentar o valor `Energy`. Se `Hunger` for 100 ou `Energy` for 100, esse valor não deve mudar.
  • A estatística `Hunger` deve ser 100 após um período excessivo de inatividade.
  • A estatística `Energy` deve ser 100 após um período excessivo de inatividade.
  • A estatística `Happiness` deve ser 0 após um período excessivo de inatividade.
  • Clicar no botão `Eat` deve reduzir o valor `Hunger` e aumentar o valor `Energy`. Se `Hunger` for 0 ou `Energy` for 100, esse valor não deve mudar.
  • Clicar no botão `Play` deve reduzir o valor `Energy` e aumentar o valor `Happiness`. Se `Energy` for 0 ou `Happiness` for 100, esse valor não deve mudar.
  • Clicar no botão `Sleep` deve aumentar o valor `Hunger` e aumentar o valor `Energy`. Se `Hunger` for 100 ou `Energy` for 100, esse valor não deve mudar.
  • Deve haver um enumerador `PetMood`.
  • O enumerador `PetMood` deve conter `HAPPY`.
  • O enumerador `PetMood` deve conter `EXCITED`.
  • O enumerador `PetMood` deve conter `CONTENT`.
  • O enumerador `PetMood` deve conter `SAD`'.
  • O enumerador `PetMood` deve conter `TIRED`.
  • O enumerador `PetMood` deve conter `SICK`.
  • O enumerador `PetMood` deve conter `HUNGRY`.
  • Deve haver um `Record<PetMood, string` para mapear um valor a cada `PetMood`.
  • Deve haver um valor mapeado para `PetMood.HAPPY`.
  • Deve haver um valor mapeado para `PetMood.EXCITED`.
  • Deve haver um valor mapeado para `PetMood.CONTENT`.
  • Deve haver um valor mapeado para `PetMood.SAD`.
  • Deve haver um valor mapeado para `PetMood.TIRED`.
  • Deve haver um valor mapeado para `PetMood.SICK`.
  • Deve haver um valor mapeado para `PetMood.HUNGRY`.

Preview