Coder Social home page Coder Social logo

gameguideapp's Introduction

Description

This menu system I built was designed to display game guide information to use as a tool while playing video games. It was also set up so that others could contribute to it and add a guide for their own favorite games.

A little background

I started this as a project for school and decided I wanted to make a game guide for the game Monster Hunter Rise that me and my friends were playing at the time. There was a lot of information that I wish I had readily available that either did not exist in the game or was not easy to view in game; especialy while in the middle of a hunt.

I did not know any app dev framework at the time or any other way to display data so I needed to just stick with what I knew which was a console application.

I also did not know how to create and work with databases at the time of starting this project which is why I just store all data as json files.

Skills

This project showcases my programming knowledge and skills to future potential employers by:

  • Demonstrating my understanding of C# and Object Oriented Programming
  • Using Abstract classes to reduce code duplication
  • Using interfaces and constructor dependency injection to abstract dependencies and loosely couple classes
  • Using json to store data and read data and convert json strings into models and from models into json strings
  • Using SOLID Princibles to make my code more modularized and easier to understand, edit, and add too
  • What's cool about this

    This project may have become a little more complicated than it needed to be for the scope of my school project but once I started It was hard to stop.

    I wanted to find a way to implement everyting I was learning inside and outside of class into this one project. Originaly this menu system was very simple and was not modularized. Everything was in one project and a lot of the code was written in just a few classes.

    But as I learned more I decided I wanted to be able to make this modularized with expansion and growth in mind.

    So I needed to make some changes

    1. I wanted to decouple the menu system from the games and the UI, and make it so that the UI could be swapped out for when I learned how to display data in other ways like a windows forms. (Again I did not know any UI framework)
    2. I wanted others to be able to contribute and create their own game guides without needing to know how the menu system or the UI worked

    After refactoring the whole solution to achieve these goals I had a much larger project than was originally needed.

    Originaly I had to format all the strings in the json file to display everything the way I wanted. This however was not optimal because I had to use string formating for every string and that took a very long time and a lot of trial and error to get.

    Instead, I created a formatting tool for console output that formats all the data for me as it displays. This saved me a lot of ugly tedious code.

    Later on when I learned how to use .Net MAUI, I realized my menu system shared similarities with this framework. Of course mine is nowhere near as good but they contained similar concepts.

    • Adding pages in MAUI is similar to how you use the menus in mine.
    • Pages/Menus allow you to add predefined views (or attributes in mine) to the page that represents the view.
    • I also realized that I was using MVVM princibles before I had even learned them.
    • The AppShell in MAUI that holds all pages within the app and provides navigation is similar to how my class Navigation_Menu contains all menus and provides navigation

    Notes

  • The only game that currently has any menu views workig is Monster Hunter Rise
  • The Materials menu in Monster Hunter Rise has not been implemented
  • To Do

    1. Finish Monster Hunter Rise game guide
    2. Add more attributes that allow users to persist data
    3. Finsh all code documentation
    4. Potentially I would like to add a view that allows users to create game guides in the app (very ambitious).

    Instructions

    How to start and navigate through the app

    1. Clone repository to local file.
    2. Open the new file and start the debugger.
    3. Type the number associated with the game you would like to view and press Enter.
    4. Use this same method to navigate through all menu lists.
    5. If you would like to go back to the previous menu, type 0 into the entry field and press Enter.
    6. If you want to exit the program, return to the main menu and type 0 and press Enter.

    How to add more games

    Use the Monster Hunter Rise game as your example. Can be found in GameGuideApp.GameLibrary.

    1. In the GameLibrary project create a folder with the name of your game.
    2. Create a class that inherits from Game that can be found in GameGuideApp.MenuSystem.Menus
    3. Create a folder in your game folder to hold all of your menus and name it "Menus"
    4. Create all your menus using the Menu Templates that can be found in GameGuideApp.MenuSystem.Menus.MenuTemplates
      • All menu temeplates are abstract and must be implemented when inherited
    5. Add your game to the List games in the Program.cs file in GameGuideApp.GameGuideConsole

    gameguideapp's People

    Contributors

    bknorton avatar

    Watchers

     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.