Giter Club home page Giter Club logo

java-game-csc207-course-project's Introduction

CSC207 Project: Text-Based Java Game

As of December 7, we have finished all of the features of the game. Since the Milestone 4 deadline, we have finished our UI and have a working version of the game. After receiving the Milestone 4 feedback, we refactored our code for better and cleaner organization. In addition, we fixed some issues that did not adhere to Clean Architecture and SOLID principles, and we added tests to our test folder, showing an increase in test coverage.

Progress Report

  • Sound feature during the game
  • Log in feature
  • Saving feature
  • Event demos
  • Item Pool and Data features
  • HP and Attack System in the game
  • Dialogue options and storyline interactions
  • Player data classes and interactors
  • UI and game screen
  • Working game

How to Run the Game

Run the Main program.

Testing and Functionality

Our tests are located in the test package, and within each package, our tests are separated by their layer. We tested most of our entities and usecases.

Members of Group

  • Josh Chan
  • Alaina Hu
  • Chris Jiang
  • Gwendolyn Kwong
  • Taha Saeed Piracha
  • Natasha Sharan
  • Ludan Ye

Design Patterns

In our CRC model, we already separated our classes into the different layers of Clean Architecture, so during implementation, we did not have issues with adhering to Clean Architecture and the SOLID design rules. Putting our data classes into the entities layer and the interactors into the Use Case layer helped us not run into instances of breaking Clean Architecture.

  • For the entities layer, we have a factory design pattern which we utilized to fix a SOLID violation in our main use case. Previously,we were accessing the entity PlayerData directly. Now, we use the Player Manager that we built.

  • To follow Clean Architecture, we implemented our entities layer with the next layer being their interactors to access those entities. For example, to access our saved sounds for each event in the story, we implemented the SoundInteractor which handles the playing and the pausing of our sound. We follow this for other use cases as well.

  • To hande our View for the user, we utilized dependency inversion by implementing interfaces for the StoryLineInteractor and the View.

  • We also used the Facade Pattern to initialise our screens and interactors. This allowed us to manage the screens and controllers efficiently while also keeping our main class relatively simple.

  • For our data persistence layer we implemented the SaveInteractor and LoadInteractor classes which implement the Saver and Loader Interfaces. This saves a serializable file in the savesfiles folder, and the LoadInteractor loads the file back up from that folder depending on the player username.

java-game-csc207-course-project's People

Contributors

ggykwong avatar sleepyyplayz avatar jshchn4 avatar nat0cat avatar alainahu avatar tahasp avatar yeludan avatar github-classroom[bot] avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.