メインループの中の薬の移動をする部分が1個分しかないので
画面右側に留まったままになりますね。
移動処理は
A=1:FOR I=0 TO 50
SPOFS A OUT X1,Y1
X1,Y1に関する処理(長いので省略)
SPOFS A,X1,Y1
NEXT
SPの当たり判定は
IF SPHITSP(0,1,51)!=-1 THEN BREAK
とするか
WHILE 1を
WHILE SPHITSP(0,1,51)==-1に変更して
どちらかでメインループを抜ければ良いかと。
2.の方法なら、18、23,24,25,27行目をひとまとめにして、18行目あたりに
FOR I=1 TO 50
SPOFS I OUT X1,X2
(18、23,24,25,27行目の内容を移動)
NEXT
とすればいいかな。
3.のSPANIMを使うなら12行目にでも
SPANIM I,"XY",-180,X,Y,0
と一行書いておけば、3秒掛けて自機の方に移動します。
この場合、18,23,24、27行目は不要です(というか消さないとうまく動きません)
テストしないで書いたので細かい文法など間違っていたらすみません。
やり方がだいたい分かれば、あとは調べながらやってみてください。