I've got an example of "Columns" in VB.NET that I wrote. I haven't done Tetris yet. I suspect a Tetris engine would work the same way. Just an (X,Y) array of Integers (each number a color of block, 0 means empty area). You have 19 different piece orientations from its 7 different pieces (3 w/ 4 rotations = 12, 3 w/ 2 rotations = 6, 1 w/ 1 rotation = 1) so you code the arrays for each.

You have a "heartbeat" timer that causes the piece to drop. When a heartbeat happens, you check if the row below it is clear and move the piece down one row or make it "stick" by changing the main board's X,Y array.

If a piece sticks, you check each row for completion and mark any that are complete. If any rows are complete, you halt the heartbeat timer, change those rows to all 0's. Calculate the score for completing them and run a routine to "collapse down" everything above it. When everything is collapsed, you repeat the check to make sure there are no new rows now complete and repeat until everything is collapsed and no more rows are complete. Then you start back up the heartbeat to resume the gameplay.

Graphics for a game like this is always secondary to its game engine mechanics. You can ALWAYS do graphics.

If you sit down and think through it, it shouldn't take you more than a few days to code. It's all about playing with arrays.

Tetris would be a VERY easy game to do in VB.NET.