Module 1

Core Language/OOP

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

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

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

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 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 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.