<edit> Scrub all that.
<edit> Scrub again...
You might want to move your old_x=block_xpos assign to the end of your first block so you don't have to do 5-6 times. Same with your resetcollisions.
You code is poorly laid out but I can't see where the problem is from it.
This does what you want (in simple terms) and might help but, even if you don't use OO, you need to check into functional programming.
<edit> Scrub again...
You might want to move your old_x=block_xpos assign to the end of your first block so you don't have to do 5-6 times. Same with your resetcollisions.
You code is poorly laid out but I can't see where the problem is from it.
This does what you want (in simple terms) and might help but, even if you don't use OO, you need to check into functional programming.
SuperStrict Graphics 800,600 Local old_x:Int Local old_y:Int Local block_xpos:Int=400 Local block_ypos:Int=500 While Not KeyHit(KEY_ESCAPE) Cls If old_y=block_ypos And old_x=block_xpos DrawOval block_xpos-4,block_ypos-4,8,4 Else DrawOval block_xpos-4,block_ypos-4,8,8 EndIf old_y=block_ypos old_x=block_xpos If KeyDown(KEY_UP) block_ypos:-1 Flip Wend