This is a fun family game that up to 3 can play with only one phone. It is semi analogous to Mario Party, as each "die roll" counts as a "star" in the actual game. Coins are represented by points, and points are gained by playing a mini game in between each round.
This project communicates over Bluetooth so it can be played anywhere, regardless of a WiFi connection. The LCD displays important information such as points and the next instruction. The die rolls from a 1 - 3 and then the player piece moves accordingly. Once the piece gets all around the board, i.e. 30 spaces, or 180 degrees, the game ends. Points don't mean much right now, but this game could be expanded to include a reward for points earned.
And don't worry! It is truly random, as the random seed is based off of voltage noise from the A0 pin. There are three servos on the board, and they only activate if there are enough players, i.e. if there are only two people playing, two servos will be active. There are indicator LEDs under each servo so you know whose turn it is to do what.
ConstructionThe building of this is quite easy. I used an Arduino Nano for the "brains" and because I didn't have enough current to drive everything, I used an Arduino Mega as a 5V regulated supply, with the grounds connected. I use a simple box, like this one, to build the enclosure. Nothing fancy or expensive.
I cut out 12 holes, three for the micro servos, three for the turn LEDs, one for the 3D printed back power panel, and one on the side for the Arduino Mega's power input, one for the LCD, and three more for the buttons.
The variable logic of the game is quite simple. Each players' score is stored in an array, and accessed in a "for" loop, which loops for the number of players. Names are also stored in an array and accessed the same way. When the device requests information over Bluetooth to the phone, it sends a string which prompts the phone to accept user input. For example, names are requested by sending "Name
" to the phone. After the user enters his name, the phone sends back "Names*theName#
", where the asterisk and pound act as delimiters, signaling the end of an information section. LCD "pages
" are separated into an index, where each page number corresponds to a function, that then clears the LCD and prints its information to it.
Feel free to copy this project (but credit me please) and change it to what you want! This is a great basic framework to LCD menu navigation and game logic and design. Thanks for reading!
Comments