Sign in to follow this  

Slowing down movement(For Tetris game) - C++/SDL

Recommended Posts

Im working on my 2nd game overall, my 1st using SDL, and Im having trouble with the left and right movement.
The falling motion is working perfectly just by using change in time ( y += yVel * deltaTime; )
However, this isnt working for left/right motion. I need the tetris block to move in increments of 20 pixels, not too quickly. Im thinking 10 times a second maybe, so once every 100ms. Ive tried an if statement using change in time of 100ms but it just seems to get ignored and blocks go across the screen super fast.

Now Im doing this without a tutorial, just grabbing pieces I need from LazyFoo and google, and now Im at my last resort on figuring out this incremental movement.

Can anyone help or provide any advice on this situation?

How my code is set up:

I have a block class with an input function and a move function.
the input function just takes key presses and adjusts velocity while the move function handles changing the x and y offsets and collision. Pretty much just like the motion tutorial on aside from the deltaTime code.

Thank you!


Share this post

Link to post
Share on other sites
I suggest that you can use the same formula: x += xVel * deltaTime.
Why not to decrease x axis velocity value? Then you can set up real X position as x_real = (x / 20) * 20. This will gives you always 20x offset.

Sorry, if I'm wrong. With regards.

Share this post

Link to post
Share on other sites
As far as I know, tetris is a game that advances in well defined steps (from one cell to the next), but your use of deltaTIme implies that you're breaking that fundamental characteristic.

You should really have a Board structure, which describes what every cell contains. With that, you don't have to actually change the graphical x/y. Instead, the graphical coordinates are generated from board coordinates, whenever they're required for rendering.

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this