I am having one or two slight problems with my tetris game, but as they say, the thrill of the kill is in the chase. Anyway, the problem is that the way I have programmed it so far is that in order for the shape to drop down one place, the user has to move it. In other words, the shape will not drop down by one space after a specified time, but the user must move the piece to the side in order for it then to drop down.

The problem is that the program waits for the user input before it continues with the game loop. How exactly can I make it so that if there is no user input when it reaches that part of the code just to move on, and carry on as normal? I have a feeling that it may involve multithreading, which doesn't fill me with joy.

Code:
while(RUNNING)
{
// Take user movement input
controls();                        <------------------------------ It stays here until there is user input, but I want it so it carries on if there isn't any user input
// Translate shape down by one
translate();
}