Module 1 Project

Virtual Pets Amok

Assignment Link

Do you remember Cyberpet? Tamagotchi? Digimon? Petz? Virtual pets like these were born in 1996. With your help, they will be reborn.

Virtual Toys, Inc. wants you to build the next iteration of virtual pets to market to adults who enjoy updated versions of the toys and games they played in their youth. This game will be like the virtual pets of 1996...but so much more. It’s Virtual Pets Amok!

Our pets are organic or robotic! They are housed in a shelter and cared for by you. They have unique personalities. They can be adopted.

Virtual Toys, Inc. requires:

  • Development of a console application by a team that practices agile methodology, utilizes test driven design, and values clean code
  • Appropriate use of Git and access to your application on GitHub
  • Useful player instructions in the form of a README.md file
  • An interactive user interface
  • A player can enter the game, play as long as they’d like, and leave the game when they want
  • Player’s choice of organic or robotic pets
  • Ability for players to admit pets into the shelter or adopt them
  • Ability for players to see a list of all pets in the shelter
  • Ability for players to see the current status of pets, such as hunger, boredom, and thirst
  • Ability for players to interact with one pet or multiple pets, such as feed, play, and take to doctor
  • As players interact with pets, the pet’s status changes
  • As time ticks by, the pet's status changes
  • Players are responsible for cleaning cages

Virtual Pets, Inc. would also like the following, although it is not required:

  • A visual representation of the pet’s status
  • Give pets a personality and uniqueness, such as a favorite food, in which they respond accordingly when fed
  • Increase the number of statuses, activities, pets, etc.

Grading Guidelines

A word about our grading, we will be evaluating your projects on five different aspects of software development:

  • Working Software
  • Test Driven Development
  • Clean Code
  • Agile/Team Development Practices
  • Use of Version Control/Git

Sprint 1

Sprint Deliverables

  • Create a Console Application with appropriate tests.
  • Create a VirtualPet class.

  • Add additional properties (thirst, boredom, etc)

    • Don't forget to add tests!
  • Inside Application.java, prompt the user for a pet name, create an instance of that pet, assign the specified name, and then display the pet's name to the user (use the appropriate getter to retrieve the name) before exiting the application.
  • When invoking the tick() method on your VirtualPet, it should update itself as if some time has passed (increase Hunger and Boredom, for example.)

  • Add methods to your VirtualPet that feed, play, etc your pet.

    • Write the appropriate tests to ensure that the pet's properties are updating correctly.
  • Ensure that your pet can never have a negative value for hunger, boredom, etc.

    • This will be your last reminder about writing tests. From now on, assume that all functionality requires proper testing!

Sprint 2

Deliverables

All prior functionality, plus:

  • Don't forget to add tests!

  • Useful player instructions in the form of a README.md file

  • Create a VirtualPetShelter class that will be used to manage multiple pets

    • Ability to intake many pets into the VirtualPetShelter
    • Ability for players to see a list of all pets in the shelter, for example with name and the attributes of your Virtual Pets
    • Ability for players to interact with one pet or multiple pets, such as feed, play, and water/drink.
    • Ability for players to see the current status of all pets in a table (see example below for inspiration)
| Name     | Boredom | Hunger | Thirst |
| -------- | ------ | ------- | ------ |
| Fido     | 43     | 22      | 43     |
| Fluffles | 63     | 34      | 56     |

Sprint 3

Deliverables

  • Support for 4 types of pets: Organic Cats, Organic Dogs, Robotic Cats, Robotic Dogs.
  • Robots require oil and maintenance.
  • Organic cats and dogs require cage & litter box cleaning.
  • Allow users to take dogs on walks.
  • Walking organic pets decreases the rate at which they soil their cages/litter boxes.
  • Walking robotic pets increases their need for oil and maintenance.