GithubHelp home page GithubHelp logo

minimatrixgame's Introduction

Bombentziu

Introduction

 Welcome to Bombentziu, an exhilarating 8x8 LED Matrix Game enhanced with an LCD menu for seamless customization and live updates during the player's game (username, time and bombs available at the time).

About The Game

Backstory Of The Game

Why did I choose this game idea?

 I chose to develop Bombentziu, a Bomberman-style game because of its timeless appeal and straightforward yet entertaining gameplay. The nostalgic memories of playing this type of game with friends sparked my enthusiasm to recreate that shared joy and strategic excitement in a modern gaming experience.

Where did I encounter some problems?

    - Generating the randomly spawned walls so it can be fun to play more than once.
    - Dividing the whole map into four different rooms and increasing the size of the map from 8x8 to 16x16.
    - Updating the whole map and the blinkings on the 8x8 LED Matrix.
    - Implementing the maximum number of bombs at a time for each difficulty (once one difficulty was ready, all of them were).

Game Details

 Players can tailor their experience by adjusting settings like username, difficulty, LCD and LED Matrix brightness, and toggle sounds on or off.
 Once customized, players find themselves in a dynamic map divided into four rooms (each of the different room has a corner wall that cannot be destroyed, and doesn't need to be destroyed, to help the user guide himself and to let him know in what room it currently is), where strategic bomb placement (the upper, lower, right and left walls will be affected and will start blinking once a bomb is placed - if walls exist in the bomb's range) is key to demolishing randomly spawned walls. The higher the difficulty, the more walls appear, and the fewer bombs are available at a time.
 Each time a bomb explodes, another one will appear in the player's inventory (EASY - maximum 3, MEDIUM - maximum 2, HARD - maximum 1, all at a time). Navigate through empty pathways as you cannot go through the walls unless they are destroyed, destroy all walls to complete the level, and aim for the highscore by finishing quickly.
 Discover the unique charm of Bombentziu as you master the art of explosive strategy!

Features


    Dynamic Difficulty: Choose the difficulty level (1 to 3) at the start to control the complexity of the game.
    Randomly Generated Map: The game generates a unique map on the LED matrix for each playthrough, adding variety and challenge.
    4 Different Rooms: Each level has 4 different rooms (the harder the level, the more walls spawned on each room) that you can navigate through using the joystick. If there is not a wall blocking you from doing this, you can go from one room to another via the margins of the current room you are in. Each room has a corner "wall" that lets you know what room you are in at the moment.
    Joystick Control: Navigate through the maze using a joystick, providing a responsive and intuitive user experience.
    Bombs Away!: Deploy bombs by clicking on the physical button to clear walls and make your way through the maze.
    EEPROM High Scores: Your best times are saved in the Arduino's EEPROM. If you beat your previous high score, it will be updated.
    Customize: Set the brightnesses for LCD or Matrix using Settings Menu. Toggle the sound on/off. All these are saved in EEPROM.
    About: Some words about me, the creator.
    How To Play: Small tutorial of how to use and play the game.
    Live Updates!: Whenever the user is playing the game, live updates will be displayed on the LCD (such like username, number of available bombs and his time).
    Game Reset: After completing the game, press the physical button to go back to the main menu where you can start a new challenge.

Menu Structure


    Start Game: Switching to the game mode from the current menu mode.
    Level: The game comes with 3 different difficulties (Easy, Medium, Hard). Choose your desired one.
    Highscore: Navigate through the highscores (TOP 3 best times) for your selected difficulty. If you change the difficulty, the highscores will be shown for the new selected level. Once you want to leave the submenu, swipe left.
    Settings: Select the submenu you would like to personalize.

      - Set username: Select your to-be username. You can switch from character to character using swipe left/right gestures. If you want to change the selected character, user swipe up/down gestures on the joystick. The selected character will be blinking. Click the button when ready.
      - LCD Brightness: Swipe up/down to select your desired LCD brightness. You can either click the button or swipe left when ready.
      - MTX Brightness: Swipe up/down to select your desired Matrix brightness. You can either click the button or swipe left when ready.
      - Sounds: The printed value represents the current value for the sound effects. Once you press it, the opposite will be toggled and printed.
      - Highscore Reset: Once you press it, a text will be printed and the game will wait for your input if you are sure you want to reset the highscores for the currently selected difficulty. If you press "YES", the highscores of the current difficulty will be deleted from EEPROM.
    About: Some words about me, the creator. You can swipe up/down to scroll the text. Once you want to leave the submenu, swipe left.
    How To Play: Small tutorial of how to use and play the game. You can swipe up/down to scroll the text. Once you want to leave the submenu, swipe left.

How To Use

    Power On: Connect your Arduino Uno and power it on.
    Set Username: Choose the username (3 characters maximum) by entering the corresponding username using the joystick (Settings -> Set username).
    Set Difficulty: Choose the difficulty level (1 to 3) by entering the corresponding level using the button.
    Start the Game: Press the button to start the game via the menu.
    Navigate the Map: Use the joystick to move through the map. You can go from one room to another by using the margins of the current room you are in (the one displayed on the 8x8 LED matrix).
    Place Bombs: Click the physical button to place bombs strategically and clear walls. The affected walls will be blinking until the bomb explodes and the walls disappear.
    Complete the Game: In order to finish the level, you have to succesfully destroy all the walls from all the four rooms. Try ripping the walls off as fast as possible!
    Beat the High Score: Your best times are saved in EEPROM. Beat your previous high scores!
    Game Reset: After completing the game, you are free to navigate the menu so you can start the game once again.

Hardware Used And Showcase

  • Arduino UNO Board
  • Potentiometer
  • LCD
  • Joystick
  • 8x8 LED Matrix
  • Buzzer
  • MAX7219
  • Push-Button
  • Resistors, capacitors and wires as needed
  • Breadboard
  • Yotube Link (video showcase): https://youtu.be/ymxeLCfF6EE

Notes

 Please note that these homework assignments are part of my academic coursework at the University of Bucharest. Feel free to explore the code, documentation, and solutions to gain insights into the exciting world of robotics and computer science.

Disclaimer

 This repository is for educational purposes, and you are encouraged to learn from it. However, please avoid direct copying of code for your own coursework.

minimatrixgame's People

Contributors

leviaici avatar

Watchers

Andrei Dumitriu 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.