---
# System prepended metadata

title: README

---

# README
final
====

This project implements a player for multiple related games.

Names:
Thomas Quintanilla (tq11)
Jackson McNabb (jdm109)
Kyra Chan (ktc22)
Daniela Bocanegra (dib4)
Erik Gregorio (eg158)

### Timeline

Start Date: April 2, 2020

Finish Date: April 25, 2020

Hours Spent: 150+

### Primary Roles

 * Jackson: Data Management
 * Thomas: Controller
 * Kyra: Front End
 * Daniela: Backend
 * Erik: Backend

### Resources Used
* StackOverflow
* TutorialsPoint
* StackExchange
* Java Code Geeks
* Geeks for Geeks


### Running the Program

Main class: Main (initializes ViewManager), then everything is created from there

Data files needed: In the "resources" folder, you will need all files except for UsernamePasswordDatabase to run.

Features Implemented:
* Scrolling Platformer Games: Super Mario, Doodle Jump, Jetpack Joyride
* Basic specification:
    * Program that can play a variety of games of the same type or genre
    * General framework of classes designed to allow for maximal flexibility with minimal duplication and hard coding
    * Three significant example games that demonstrate the flexibility of your design: two that differ significantly in their behavior within the genre and one that is a mod, differing primarily in all the basic data values
* Additional Features:
    * High Scores
    * Dark Mode / Multiple Different Modes
    * Preferences (preferred color scheme, Premium mode, etc.
    * Player Profiles (name, password, age, profile picture), with corresponding high scores and preferences saved
        * Also allows users to "Play As Guest"
    * Dynamic Game Content (allows users to "unlock Premium mode")


### Notes/Assumptions

Assumptions or Simplifications: 
* The engine was built with the idea that all games created will be one player games.
* All XML file functions assume that the user will be using the \data folder
* Scrolling assumes that a player exists.
* The creation of objects in the Controller assumes that there are two property files for said game, and throws an exception if the Controller can't find it.
* Generic methods for building UI components requires the String tags in the XML to follow a specific format.

Interesting data files:
Will update.

Known Bugs:
* Loading game isn't fully functional. Typing password and username incorrectly multiple times forces user to exit out of login menu.
* When changing the background, the game area view initially checks for if the picture is portrait or landscape, but when updating the background, the game area view cannot change from portrait to landscape or vice versa.
* Multiple lives cause issues with respawning player.
* Players sometimes "teleport" on screen, which comes from sprites and hitboxes being misaligned when first generated, and then realigning after any state is updated

Extra credit:
* Users are also allowed to pause / resume game both by clicking "Esc" or the Pause/Resume button on the side.
* Instead of pressing a "save preferences" and "load preferences" button, a user's premium status, high scores, and prefered color scheme are automatically loaded in, as well as displayed on the UI.
* An extra CSS mode was made.


### Impressions
* Working with an international team, through a global pandemic, and stressed with our own uncertain personal situations proved its challenges. However, at the cost of one person's sleep schedule, the Coders Of Virtual Interactive Demonstrations rose through the ashes and succeeded in developing a functioning project. The project provided an exciting opportunity to both integrate what we have learned so far in the course and see a fun, interactable game being through. It also allowed us an opportunity to gain experience with working remotely, which is now common in large companies.
* We were too ambitious when we made our original plan, since we planned to have a fully functioning game done by the first sprint. Moving forward, we had to reevaluate our original plan to be a bit more realistic.
* Stand up made our group meetings a lot more productive.



Shoutout to Kyra's little sister.

~*"are you still in your meeting?"*~