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.
- 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
EATdeve reduzir o valorHungerdo pet e aumentar o valorEnergydo pet. - O botão
PLAYdeve reduzir o valorEnergydo pet e aumentar o valorHappinessdo pet. - O botão
SLEEPdeve aumentar o valorHungerdo pet e aumentar o valorEnergydo 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,hUnGeRsão todos válidos. - NÃO conter o texto relevante para outras propriedades, ou seja, o elemento de acompanhamento
HungerNÃO deve conter o textoHappiness. - Conter uma representação numérica clara do valor atual dessa propriedade.
- Cada
Actiondisponível para o pet deve estar englobado por um enumerador. - Cada
Actionbuttondeve conter um de cada um dos seguintesidrelevantes 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
HungryseHunger > 70. - O pet deve estar
TiredseEnergy < 30. - O pet deve estar
SadseHappiness < 30. - O pet deve estar
ExcitedseHappiness > 80eEnergy > 70. - O pet deve estar
HappyseHappiness > 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
PetMoodatual, com umRecord. - A chave de cada entrada
Recorddeve ser o valor enumPetMoodrelevante.
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