Well, I was sitting at work one day and following the various git commands, like push it, pull it, merge it etc. and felt like I was doing a grown up version of bop it. So then I thought, why not actually make one, because that sounds like way more fun.
What it does
There is currently working code for each of these components separately and now all that's left if finishing the code integration.
One LCD display shows the command (this is until we figure out how to add in voice commands).
- Commit it (left) - Twist the middle ring attached to a potentiometer to the left.
- Commit it (right) - Twist the middle ring attached to a potentiometer to the right.
- Branch it (left) - Pull left analog stick to the left.
- Branch it (right) - Pull right analog stick to the right.
- Merge it - Push center two analog sticks towards each other.
- Fork it - Pull center two analog sticks away from each other.
- Approve it - Move the controller up / down to simulate nodding in approval (this is utilizing the Teensy's accelerometer)
- Shake it - Move the controller left / right (this is to add on syntactic sugar)
- Pull it - There is a 3D printed throttle piece that attaches to the 3rd analog stick, with it's sides super glued so you can only move it forward or pull it back (like a mini throttle). Here you pull the throttle towards you.
- Push it - Here you push the throttle away from you.
- Code it - The top yellow button is for code it.
- Debug it - The middle yellow button is for debug it, will be denoted with a bug symbol.
- Clone it - The bottom yellow button is for cloning it.
- Pass it - Here you pass the controller to the next person for multiplayer use.
The idea is for there to be a time component to speed up the command execution over time. So if they perform the wrong command or the game times out, they are greeted with a friendly Windows blue screen of death error, but until then we will use a simple piezo button tone for now. Regular bop it only has 3 commands - bop it, twist it, pull it...while this has 13 commands. So this is like a souped up bop it or simon says for adults who code.
How I built it
- 3 analog sticks (one with the top pulled off and the sides superglued together to limit it's range of motion to only up / down)
- 1 3D printed throttle piece (not pictured, but it is printed out and ready to use)
- 2 LCD display screens (one to show a command and the other to show health or how many lives you have left).
- 1 seven-segment display for showing the numerical score of how many points you've earned.
- 1 potentiometer
- 3 buttons
- 4 LEDs
- 1 lid from a cigar box, used for mounting the electronic pieces onto a hard surface.
Challenges I ran into
It was challenging to think of how the game would make so many comparisons to determine whether the player executed the correct command. Though luckily with some brainstorming with a friend, we came up with an interesting solution to keep the code for this minimal and clean.
Accomplishments that I'm proud of
Writing my first C library and custom object oriented code. Challenging myself to write cleaner code.
What I learned
To not underestimate the logic that went into making what looks to be a simple game like bop it. That the background beat and voice commands seem to be the most challenging part to figure out how to implement.
What's next for Code It!
Please help me make this work...