トピック
しんしん manashi3

思うように”>”が上下のボタンで移動できません。

下を押すと1から4へ急に飛んだり、上を押すと4が選べなかったりします。問題のプログラムは一部分を切り取ってスクリーンショットを撮っています。(できるだけ再現するために、タイトルなどが入るところは改行しています。) どなたか、原因と解決策を教えてください。
0そうだね
プレイ済み
返信[1]
親投稿
あんど AND1GOUKI
「思うように動かない」 うん、よくある話ですね。 なぜ「思うように動かない」のか考えてみましょう。 プログラムを眺めていても分からない時は、 その時々の変数の値が思った通りになっているか表示してみたり、 WAITを大きく取ってゆっくり実行してみたり、 どこで想定外の動きになっているか調べてみましょう。 原因と解決策ではありませんが、解決のヒントになれば幸いです。
4そうだね
プレイ済み
返信[2]
親投稿
ヒント:変数NOWの値を見る
0そうだね
プレイ済み
返信[3]
親投稿
ヒント:足し算・引き算を使った方がいいと思う
0そうだね
プレイ済み
返信[4]
親投稿
みむ*mim hidemimtp
あんどさんがせっかくアドバイスを出しているので、 答えを書かずにおきますね。 下を押すと13行目~22行目でNOWの値がどうなるか、 1行1行考えてみるといいですよ。
3そうだね
プレイ済み
返信[5]
親投稿
say sayer.exe
うん下を押すと4に飛んできますね とりあえずコードをトレースしてみましょう 10行の時点でBT=#DOWN:NOW=5となってるとして、 12行目:BT=#DOWNなのでTHEN以降は実行されない 13行目:BT=#DOWNでNOW=5なのでTHEN以降が実行される(NOW=6となる) 15行目:BT=#DOWNなのでTHEN以降は実行されない 16行目:BT=#DOWNでNOW=6(13行目でこの様の値が変わってる)なのでTHEN以降が実行される(NOW=7となる) 18行目:BT=#DOWNなのでTHEN以降は実行されない 19行目:BT=#DOWNでNOW=7(16行目でこの様の値が変わってる)なのでTHEN以降が実行される(NOW=8となる) つづく
0そうだね
プレイ済み
返信[6]
親投稿
say sayer.exe
21行目:BT=#DOWNなのでTHEN以降は実行されない 22行目:BT=#DOWNだがNOW=8(13行目でこの様の値が変わってる)なのでTHEN以降が実行されない 23行目に到達した時点での変数の変化は BT=#DOWN(変化なし) NOW=8 となります
0そうだね
プレイ済み
返信[7]
親投稿
Godot orz_127
調べ方として DIALOGと言うコマンドがあります。 「DIALOG ""」とすると 下画面に何も表示されていないダイアログ画面がでて「了解」待ちとなります。 プログラムの一時停止的に使えます。 今回は、NOWの値を確認したいと思うので、 「DIALOG "NOW="+STR$(NOW)」としてください。 するとその時のNOWの値がダイアログで確認できます。 これをそれぞれのIF文の後に入れてみてください。 但し、全部同じだとどの位置のダイアログの表示かわからなくなるので 「DIALOG "A:NOW="+STR$(NOW)」(Aは数字でも記号でも片仮名、平仮名何でも良いが区別がつくようにそれぞれ変える)として動かして見てください。 それぞれの位置のNOWの値の変化が確認出来ると思います。 他の方も敢えて直接の回答はせず考え方のアドバイスに留めているようなので当方もここまでに。
0そうだね
プレイ済み
返信[8]
親投稿
Godot orz_127
プログラム見直していてきづきましたが、22行目の値、間違えているような? 確認を。
0そうだね
プレイ済み
返信[9]
親投稿
しんしん manashi3
たくさんの回答ありがとうございます! ようやくバグが直りました!原因は連続実行だったようです。対策として、もう一個変数を用意してIFで次を実行しないようにしました。 本当にありがとうございます!
1そうだね
プレイ済み