Giter VIP home page Giter VIP logo

feup-lpoo's Introduction

BCH compliance

Fun Run

A simple Fun Run copycat game with a few changes made using libGDX for the LPOO classes.

Table of Contents
Setup/Installation Procedure
Package and class diagram (UML)
Design Decision
Design Patterns Used
Major Dificulties
Lessons Learned
Overal Time Spent Developing
User Manual

Setup/Installation Procedure

  • To install the Android app:

    1. Download the apk here
    2. Accept permissions.
  • To install the desktop app (for Windows, Linux and MacOS)

    1. Download the jar here.
    2. Run the file from the terminal or by double-clicking it.
  • Setup the Project on your computer:

    1. Java Development Kit 7+ (JDK);
    2. [Android Studio] (https://developer.android.com/sdk/index.html) Android Studio already comes packaged with the Android SDK so contrary to Eclipse or Intellij IDEA you do not need to install this component.

Package and class diagram (UML)

Javadoc documentation can be accessed here

uml

Design Decisions

  • Model-View-Controller (MVC)

Main packages:

  • Model: Is the central component of the pattern. It expresses the application's behavior in terms of the problem domain, independent of the user interface. It directly manages the data, logic and rules of the application.
  • View: Can be any output representation of information, such as a chart or a diagram. Multiple views of the same information are possible, such as a bar chart for management and a tabular view for accountants.
  • Controller: Accepts input and converts it to commands for the model or view.

Advantages:

  • Simultaneous development
  • High cohesion
  • Low coupling
  • Ease of modification
  • Multiple views for a model

Design Patterns Used

  • Singleton - Restricts the instantiation of many classes (in GameModel and GameController)
  • State Pattern - Used in PowerUpModel
  • Strategy Pattern - Controls the Menu Appeareance
  • Observer Pattern - Implemented by Libgdx with controls listeners (in Controllers class)
  • Update Method - Used in EntityModel
  • Game Loop - Used in GameController and Controllers (handles input), GameModel (updates game) and GameScreen (renders)

Major Dificulties

  • Mostly trying to integrate the Networking part. We pretty much had to learn by ourselves to create a simple server with a database and connect with it during our game. The result we got it's not perfect but for what we know it's a good start.
  • Some problems with making the game equally when played on computer or on Android phone. The big difference is on the pause menu when used on the smartphone it takes a really long time to show.

Lessons Learned

With this project, we learned that creating a game is very complex and time consuming. We learned many things regarding networking and physics.

Overal Time Spent Developing

We estimate a total of 160 hours (evenly distributed between the two developers).

User Manual

  • Main Menu

    Main Menu

    Functionalities:

    • Choose to Play a game.
    • Choose to Select game map.
    • Choose to Exit the game.
  • Map Select Menu

    Map Select Menu

    Functionalities:

    • Select map to play.
    • Button to return to the main menu.
  • Pause Menu

    Pause Menu

    Functionalities:

    • This screen appears when the pause button from the Play Screen is pressed.
    • In this screen the User is able to leave a running game or continue.
  • Play Screen

    Play Screen

    Functionalities:

    • Play the game using the arrows on the right side to jump or get down.
    • The circle on the left side is where the power ups will appear and can be activated.
  • Finish Menu

    Finish Menu

    Functionalities:

    • Time accomplished when the player reaches the end of the game.
    • Return to main menu by pressing the button.

Game Art:

feup-lpoo's People

Contributors

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