プレイ日記
まりを tomoyaTT88
これどうしたらええねん…… ボタンを押す→メッセージ表示中に押すとスキップ これが理想 ボタンを押す→ノタノタする→一度押しただけでスキップ これが現実 変数を使うことも考えたんですがね、無理でした。
2そうだね
プレイ済み
返信[1]
親投稿
だにえる haru2016nen
17行目  BUTTONの引数に2をつける。 22行目  VSYNC→WAITに変える。 でどうでしょうか。
0そうだね
プレイ済み
返信[2]
親投稿
だにえる haru2016nen
あと、 *VARの部分での代入も可能です。 VAR XSLOW=SLOW *「 MID$(A$,L,1) 」のように 1文字だけ取り出す場合は「 A$[L] と配列の ような表記にして略すことができます。
0そうだね
プレイ済み
返信[3]
親投稿
だにえる haru2016nen
「 A$[L] 」 ↑   抜けてました
0そうだね
プレイ済み
返信[4]
親投稿
otta777 otta777a
次のメッセージを表示するのにAボタンを押すと表示が始まると同時に Aボタンを検出してしまってスキップと見なされるためにAボタンを 一度押しただけでスキップになると思われます。 20行目の後に REPEAT:WAIT:UNTIL BUTTON()==0 を追加してボタンを放したら次のメッセージの表示をするようにしてはどうですか?
1そうだね
プレイ済み
返信[5]
親投稿
なかなか長く同じところでつまづいてしまっているようですね。実は原因は複数合わさっていて意外と厄介に感じる案件です。 それぞれ問題点は色んな人から指摘されている点ですが、それを解決する方法も複数ありますが、その辺がイマイチうまくいってないのだと思います。 BUTTON(2)を使うとボタンを押した時(瞬間)に処理できるのですが、VSYNCやWAITで2以上を指定した場合、この機能がうまく動作しないところにも引っかかってしまっています。 と言うことで、とりあえずやりたいのだとしたら、僕としてはFORの部分を以下のように変えるのがいいんじゃないかと思います。MID$のところはそのままでもいいですが、配列表記にしてみました。 長いのでプログラムが入らなかったので次の投稿で。
1そうだね
プレイ済み
返信[6]
親投稿
FOR T=0 TO LEN(MSG$)-1 LOCATE X+T,Y:?MSG$[T] FOR I=1 TO XSLOW WAIT IF BUTTON(2)==#A THEN XSLOW=0 NEXT NEXT WAITを分解して必ず1(省略してますが)になるようにしているのがポイントです。これならばBUTTON(2)が有効になります。その上でループ中にボタンチェックを入れているのでSLOWが大きな数字の場合も反応が良くなる(はず)です。 他の部分はそのままで動くと思います。ただUSEの位置はLOADの後(3行目)の方がいいかなと思う部分や、DEF(ユーザー定義命令)なので、ローカル変数になる変数は全てVARをつけた方がいいとは思いますが、とりあえず動作上は問題ないはずです。 と言うことで、引き続き頑張ってください!
1そうだね
プレイ済み