Determine an algorithm for playing Tetris. This stage should consider both the complexities in designing the software program for the gameplay itself, as well as the code required to facilitate the user's interaction. This may require software-based prototyping to validate game controls, rather than debugging on the deployed code.
Where possible, I want to avoid using the Arduino libraries, and manually toggle pins, etc. However, in the interest of time, I may leverage the Arduino libraries for the more complex functions.
Constraints
The complexity of this is going to be largely dependent on the capabilities of the hardware. As well as limited by my rusty C coding skills.
Latency of the hardware controls may need to drive how much of a pause there is between each pixel of the Tetrino dropping.
Open Questions (return post-
What is the LCD capable of displaying?
The LCD exclusively displays dots, for simplicity of the design.
How will this data be relayed to the LCD from the Arduino? How complex or simple can it be?
TBD, need to watch some SPI videos.
Is it going to be possible to display score? Will that make the screen unreadable, size-wise?
Score will be handled by an external scoreboard module, pins permitting.
How much latency is there in the controls? Can I check for user input between every line, or does it have to be interrupt based?
TBD, based on experimentation
Things to Build
[ ] 1. LCD Hardware Interface
[ ] Maintaining the state of the LEDs
[ ] Toggling the LEDs on/off
[ ] The Tetrino Mechanics
[ ] Storing/Accessing the shapes of the Tetrinos
[ ] Automatically generating a different Tetrino with each new turn
[ ] Moving a Tetrino left/right
[ ] Rotating a Tetrino
[ ] Tetris Gameplay Mechanics
[ ] Automatically shifting the Tetrinos down with the clock
[ ] Dropping the Tetrino when the down button is pressed
[ ] Stopping the Tetrino when it hits another block
[ ] Clearing lines when all spaces are completely filled
[ ] Keeping track of the user's score (number of lines cleared, extension for multi-line multipliers)
[ ] End the game when a Tetrino reaches the top
[ ] Reset the game (currently no hardware, but maybe)
Goal
Determine an algorithm for playing Tetris. This stage should consider both the complexities in designing the software program for the gameplay itself, as well as the code required to facilitate the user's interaction. This may require software-based prototyping to validate game controls, rather than debugging on the deployed code.
Where possible, I want to avoid using the Arduino libraries, and manually toggle pins, etc. However, in the interest of time, I may leverage the Arduino libraries for the more complex functions.
Constraints
Open Questions (return post-
Things to Build