Git Product home page Git Product logo

capstone-2's Introduction

Capstone 2 - Java Based Terminal Game

  1. There is a file OOP.md in the root level of this repository. Please answer the questions in that file.

  2. Create a terminal based, 2D game. Written in Java. Following are the game ideas:

Take a look at the screenshots of these games in the game-ideas folder. You will notice that there are some sample gui games as well, for those who want to go for the Bonus points. What is required though, is to make a purely ascii-based game that can be run in the terminal.

It is highly recommended to choose a game from the above list, but if your heart 💛 is completely set on something else, you can create a game that is not on the above list. Realize though, that you may get asked about your decision on why you decided to create a game that wasn't on the above list.

Please check out the sample screenshots of a few game ideas. The screenshots can be found in the ./game-ideas folder in this Github repository.

This project is designed to showcase your knowledge of object-oriented programming and design.


As with any project or complicated problem, it's important to step back and think through the process for tackling the project. We will use Polya's Problem Solving Framework to guide us through that process once again. Don't forget the famous saying,

"If you fail to plan, you plan to fail."

In the root of this repository, you will find a a pdf file outlining a methodology to approaching & solving any problem. The file is called : "Polya's Problem Solving Framework.pdf" Feel free to research and learn more about the framework online, or stick to the .pdf file as a primary reference.

Before you dive into the coding, be sure to follow the steps of the Prolem Solving framework. Please do not underestimate the importance of this step! Be clear and specific about what the problem is. It is not sufficient to simply say,

"The problem is to build a terminal game in java."

That definitely is the core assignment, but it is not specific. The above statement does not clearly spell out the exact problems that you as the developer are faced with when tackling this project. The problem needs to cater towards you specifically, where you clearly identify what are the issues, blockers, and challenges that lie ahead of you on the path to reach the end goal.

Clearly defining the problem is often times the most overlooked and vital step to any complicated project. Get in the habit of contemplating and documenting what the problem is before you start writing code.

Step 2 of UPER is Planning. After you have brainstormed and thought about the problems facing you as the developer of this java based game, you should clearly map each problem to a clear action item. These action item steps will go in the plan section of the UPER.md document.

Realize that even Step 2 - Plan, of the Problem Solving framework should also be primarily done before you start coding.

Document all the steps you will be taking for this project in the UPER.md file.

Also, for step 2 of UPER, you will need to use some OOP design tools to set up your Architecture. These tools are called Class Diagrams, part of a graphical language known as UML. You can learn about UML at the following url:

UML Class Diagram Tutorial

There are several UML modeling tools you could use to creat your Class Diagrams and/or State Diagrams. Below are a few options :

To help kickstart your "Understanding the Problem / Planning phases of the project, take a look at the following article:

Everything specified above should give you enough guidance and direction for how to approach the project.

A final point to note, as you code the project, you will most likely need to go back to the UPER.md document to add & modify it incrementally. Such are the ways of the Agile Dev Ninja. Agile Dev Ninja

This will be especially applicable to Step 4 of UPER - Reflection / Refactoring


Core Requirements :

Your Java game must:

  • Be functional and playable by a user

  • Instructions for how to play the game must be built into the game as well as available as a separate file. The file name should be called : instructions.md

  • Include elements of the game using Java classes that adhere to the four pillars of Object Oriented Programming:

    1. Encapsulation
    2. Inheritance
    3. Abstraction
    4. Polymorphism
  • Each "game object" or "entity" of your game must be modelled using a Java Class

  • Implement at least 1 Interface

  • Implement at least 1 Abstract class

  • Implement at least 1 lambda expression

  • Implement at least 1 stream.

  • Have an organized and logical project structure with at least 1 package

  • Have some type of error handling for bad user input (incorrect key press, etc.)


  • Bonus ⭐️ ⭐️ ⭐️ ⭐️ ⭐️

  • Incorporate at least 2 SOLID principles of Object Oriented Design into your project.

    • Single Responsibility Principle
    • Open Closed Principle
    • Liskov Substitution Principle
    • Interface Segregation Principle
    • Dependency Inversion Principle
  • Incorporate at least 2 Object Oriented Design Patterns into your project. There are many patterns, but here are a few examples:

    • Singleton
    • Decorator
    • Facade
    • Observer
    • Chain of Responsibility

For the OOD Principles and OOD Patterns, you should be able to explain them clearly and demonstrate how you used them in your code to earn the full bonus points on these categories.

  • Implement a 3rd party Java library to aid you in Java Game Development. A few examples:

  • Create a landing page built in HTML / CSS or in React to showcase the features, functionality, and instructions for how to play your game. Host the landing page with an online deployment tool, such as :

  • Develop a front end UI for the game in React.js. Wire it up with your Java Model.**

  • Note may be interesting to see how you can integrate the Java libraries with React. You may not need to; it could be an either or situation, but look and see if this is possible. Looking forward to hear about your findings.

********************************************************

Git Instructions

  • Create a template copy of this repository by clicking : "Use this template"
  • Name the repository the same name as the master template repository.
  • Add your TA as collaborator
  • Clone YOUR repo to your local computer
  • Create a new branch: git checkout -b <firstName-lastName>.
  • Implement the project on your newly created <firstName-lastName> branch, committing changes regularly.
  • Push all of your commits: git push origin <firstName-lastName>.
  • When ready for your TA to review, open a Pull Request (PR) and add your TA as a collaborator.

********************************************************

TEKacademy Submission

When you're finished completing the App and are done presenting:

capstone-2's People

Contributors

1fungi99 avatar

Watchers

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