そうですね〜。まず43行目のIF #Y THENは不要なので、その行は、
SPSET 2,1346:SPOFS 2,X+10,Y
にしちゃった方がいいですね。
その上で46行にどう書けばいいのかですが、まず弾を動かすのは弾(スプライト管理番号2)が出ているときですよね? なので、その時だけ処理される部分(IF)を作ります。
そしてその内容ですが、弾の位置を移動させることです。ただこの時に、もし画面外に出てしまった場合、ちゃんと弾を消しておいた方がいいですよね。と言うことで、これを素直にプログラムしてみると、
IF SPUSED(2) THEN
SPOFS 2 OUT TX,TY
TX=TX+4
SPOFS 2, TX, TY
IF TX>400 THEN SPCLR 2
ENDIF
みたいな感じになります。まずここまでわかりますか?
弾を出せたと言うことは1〜2が出来た感じですね。
なので後は3が出来ればいいことになります。SPANIMを使う方法もありますが、とりあえず自分の力(メインループ)で動かす方法(基礎)を知っておいた方がいいとも思ったので、その方がいいですね。
メインループというのはWHILE〜WENDやGOTOなどで一定の範囲を無限ループさせている部分です。
その部分で弾の座標を動かせば弾が飛ぶ(動く)事になります。
例えば弾がスプライト管理番号2番だった場合、
IF SPUSED(2) THEN
SPOFS 2 OUT X,Y
X=X+4
SPOFS 2,X,Y
IF X > 400 THEN SPCLR 2
ENDIF
みたいな感じのをメインループの間に入れれば弾が出ている間は右に動くような感じになります。(あくまで例なので自分のに合わせて調整が必要)
現在のプログラムがどうなってるかわからないので正確な事がわからないんですが、メインループがあると思うので、その中で例えばAボタンを押した時なら、
IF BUTTON(2)==#A THEN
'この中でボタンを登場させる処理をいれる
ENDIF
みたいな感じです。
今どうなってるのかがわかればもう少し正確に書けますが、そんな感じですね。