graph TD
Start[Start] --> Init[Game Initialisation];
Init[Game Initialisation] --> QOver{Game Over?};
QOver -->|Yes| End;
QOver -->|No| Tick[Game Tick];
Tick --> Input[Handle Input];
Input --> Collision[Check for any collisions];
Collision --> DropT{Drop timer passed?};
DropT -->|Yes| Drop[Drop current tetromino];
DropT -->|No| QOver;
Drop --> Lock[Lock tetromino in Board];
Lock --> Lines{Any new lines?};
Lines -->|Yes| Score[Increase Score];
Lines -->|No| NewT[Generate new Tetromino];
Score --> NewT
NewT --> NewFit{Does it fit?};
NewFit -->|No| SetOver[Set Game Over];
SetOver --> QOver;
NewFit -->|Yes| QOver;