今って直接XとYを足してるじゃないですか。これではうまくいきません。
以下のような感じで、足す前に、一旦、座標の増減だけ別変数で覚えておけば、動く前に行き先の確認ができますよ。
増減X=0:増減Y=0
IF A==1 THEN 増減Y=-1
IF A==2 THEN 増減Y=1
IF A==4 THEN 増減X=-1
IF A==8 THEN 増減X=1
CH=CHKCHR(X+増減X,Y+増減Y)
' 空白の部分は0か32
IF CH==0 OR CH==32 THEN
LOCATE X,Y:PRINT " "
X=X+増減X:Y=Y+増減Y
LOCATE X,Y:PRINT "(・_・)"
ENDIF
37行目で急にプログラムが途切れています。X=X+増減X:Y=Y+増減Y がないので動きません。
36行目の IF もわざわざ 「:」 を書いてエラー回避されていますが、これだと判定するだけで THEN (IFで判定をしてOKだったときの処理) がからっぽのため何もしていません。
IF ~ THEN : ←これだと何もしない
IF ~ THEN ←これはOK
~ 条件が合うときに
~ THEN と ENDIF の間が実行される
ENDIF
さらに、以前のプログラムが後ろにくっついたままの中途半端な状態で、結局39行目の@SOUSA~GOTO @SOUSAを繰り返すだけとなり、書き換えた部分が全く意味をなしていません。というのが今の状態です。
動かすには、例示を参考に正確に書き換えていただきたいのです><
できれば1行ずつ意味を理解してゆっくり進めたほうがよいと思います。
×の行を見なおしてください。○はそのままでいいです。
28行目から
PRINT ~
× @SOUSA 【←追加】
○ AX=0:AY=0
× A=BUTTON() 【←追加】
○ IF A==1 THEN AY=-1
○ IF A==2 THEN AY=1
○ IF A==4 THEN AX=-1
○ IF A==8 THEN AX=1
○ CH=CHKCHR(X+AX,Y+AY)
行数オーバーのため続きます。