It looks like you have a pretty good start. Nothing magically stellar, but nothing truly horrible at just a glance.
One suggestion: break the main loop up. You are doing too much stuff in one loop.
Instead, there should be multiple loops, depending on the game's current state.
For your example, you should have a loop that manages the main menu (starting a new, game, quitting, etc). Then call a function that implements the game-play loop. When game play stops, simply return to the main function/loop.
you should try making Conway's Game of Life and showing cells in 1 and 0's
It could really be an interesting project, but at this moment of time it's a little complex for me. I'll definitely give it a try in future. It would be really interesting to see 1 and 0 as live and dead cells.