2020年 6月 6日
バグ潰しをしてます。
ダメージは入ってるけど表示は 0になる謎バグがあって追ってました。
ソースに問題が無いのでサッパリ分かりませんでしたけど、原因はなんと
if fs=1 : dmp_set n,3+et,cn ; ダメージ表示
if fs=2 : dmp_set n,et,cn
#deffuncのジャンプの時に値を渡しますけど、その変数を(この場合 n)
#deffunc dmp_set int dmp_setn1,int dmp_setn2,int dmp_setn3 ; ダメージ表示セット
; 1=値、2=位置No.、3=カラー
repeat 20 : n=cnt*6 ; フラグ
if dmp(dmp_setn)=0 : dmp(dmp_setn)=1 : break
loop
dmp(n+1)=dmp_setn1 ; 値
if dmp_setn2<=3 : dmp(n+2)=bcx1(dmp_setn2) ; x
if dmp_setn2>=4 : dmp(n+2)=bcx2(dmp_setn2-3) ; x
dmp(n+3)=btly1-30 ; y
dmp(n+4)=dmp_setn3 ; カラー
dmp(n+5)=25 ; カウンター
ジャンプ先でその変数をいじると、なぜか元の値も同時に変わってしまうという謎バグ。
この場合ジャンプ元の nの値、ジャンプ先で一度 dmp_setn1に落とし込んでいるので、変数 nはフリーのはず。
しかし nを n=cnt*6で再定義すると、なぜか dmp_setn1も再定義の n値になってしまうというもの。
うーん、これは分からん。
もちろん PC起動ではなりません、実機でなります。
思うに ANDROIDでは #deffunc内の dmp_setn1値の参照が、元の n値を参照しろという構図になってるものと。
“ANDROID #deffuncジャンプ先で渡した値の変数を使うと値が変わってしまう” の続きを読む