When moving characters in our games, we don't move each character from it's starting to end point inside it's own loop, rather, we step all character towards their end points each update.
Here's a bit of slap together example of how it done. (this code was written for PlayBasic, but it should run in DB/DBpro with minimal changes)
Bullet_Xpos#=0
Bullet_Ypos#=0
PLayer_Xpos#=100
PLayer_Ypos#=500
Do
Cls 0
; draw/move player bullet(If it exists)
If Bullet_status=True
Bullet_Ypos#=Bullet_Ypos#-2
; draw line to represent the bullet
line Bullet_Xpos#,Bullet_Ypos#,Bullet_Xpos#,Bullet_Ypos#+10
; Check if the bullet is off the screen yet ?
if Bullet_Ypos#<-10
; yes it is, so set its status tto off
Bullet_Status=false
endif
else
; check if the space key is down
if Spacekey()
Bullet_Status=true
Bullet_Xpos#=PLayer_Xpos#
Bullet_Ypos#=PLayer_Ypos#
endif
endif
if LeftKey()=true and Player_Xpos#>10
Player_Xpos#=Player_Xpos#-1
endif
if RightKey()=true and Player_Xpos#<790
Player_Xpos#=Player_Xpos#+1
endif
; draw player
Circle player_xpos#,player_ypos#,10,True
Sync
Loop