Mastery Project
Virtual Pets Amok
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 health
- 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.
Day 1
Today we'll get used to our tech tools and get to know one another. We will even begin to write some code in JavaScript (hopefully)!
Goals
- Get to know one another.
- Get familiar with the course, class policies, and expectations.
- Get familiar with our tech tools...Slack, Git and GitHub, VSCode
- Understand what JavaScript is and why it's awesome.
Itinerary
Time | Activity |
---|---|
9:30am | Introductions |
10:00am | Review Introduction & Policy Slides |
Discuss Class Expectations | |
11:45am | Check-In |
12:00pm | Lunch |
1:00pm | Laptops, IDs, Video |
1:30pm | Slack, Git and GitHub |
VSCode | |
3:15pm | Checkout |
3:30pm | Goodbye! I'll see you tomorrow! |
Materials
Intro to Bootcamp
Git & GitHub
- Git Bash
- Git
- Github Reference Guide
- Git-it
- gitignore.io: Generate .gitignore files
- A Successful Git Branching Strategy
- Understanding Git - Explain it Like I'm Five
Clean Code
Command Line
Day 2
Let's build an App!
Goals
- Begin to customize an application based on user input
- Use conditional statements to control program flow based on user input
Itinerary
Time | Activity |
---|---|
9:00am | Checkin |
9:10am | Conditionals, Strings and User Input |
11:00am | Build a GuessingGame app |
12:00pm | Lunch |
3:15pm | Checkout |
Materials
Exercises
Day 3
Time to test!
Goals
- Begin to develop a perspective on testing code in a development environment
- Begin to become familiar with your testing suite and how to get set up
Schedule
Time | Activity |
---|---|
9:00am | Checkin |
9:10 | Review Fortune Teller |
9:45am | Class Design: What is OOP? |
10:30am | Let's meet Uncle Bob |
11:00am | Intro to TDD |
12:00am | Lunch |
1:00pm | The FizzBuzz Kata |
2:00pm | Discussing/planning the rest of Module 1 |
Class Materials
Research Materials
Sites for Kata
Sprint 2
Materials
Resources
- Improve Your Code With The SOLID Principles
- Dot Notation vs Bracket Notation
- The JavaScript Global Object
Day 1
Today we'll get used to our tech tools and get to know one another. We will even begin to write some code in JavaScript!
- Get to know one another and our team
- Get familiar with the course, class policies, and expectations
- Get familiar with our tech tools...Slack, Git and GitHub, Visual Studio
- Understand what JavaScript is and why it's awesome
Materials
External Resources
-
Learn Git Branching Activities
- Main Tab > Introduction Sequence (#4 Rebasing is optional)
- Main Tab > Ramping Up
- Remote Tab > All levels
Day 2
Let's build an App!
- Begin to customize an application based on user input
- Use conditional statements to control program flow based on user input
Day 3
Time to test!
- Begin to develop a perspective on testing code in a development environment
- Begin to become familiar with your testing suite and how to get set up
Sprint 3
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.js, 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 yourVirtualPet
, it should update itself as if some time has passed (increase Hunger and Boredom, for example.) -
Add methods to your
VirtualPet
thatfeed
,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 4
Materials
Resources
External Resources
Practice Exercises
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, species and age
- Ability for players to interact with one pet or multiple pets, such as feed, play, and take to doctor
- Ability for players to see the current status of all pets in a table (see example below for inspiration)
| Name | Health | Fatigue |
| -------- | ------ | ------- |
| Fido | 43 | 22 |
| Fluffles | 63 | 34 |
Sprint 5
Materials
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.
- Walking organic pets decreases the rate at which they soil their cages/litter boxes.
- Walking robotic pets increases their need for oil and maintenance.