HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0217
repeat内のgoto命令について6解決


リンク

2015/2/17(Tue) 18:22:15|NO.67430

単語帳のプログラムを組もうと思い、問題を表示して、
キーボードの何かを押されたら答えを表示する、という部分を書いていました。
ところが、『repeat外でのloopは無効です』というエラーが出てしまいます。
単純化したスクリプトがこれです↓

repeat
mes "問題" onkey *1 stop *1 mes "答え" onkey *2 stop *2 loop

ちなみに、実際はmes命令ではなく、メモリーノートパッド命令を使います。

どうしたら、エラーが出なくなりますか?



この記事に返信する


a

リンク

2015/2/17(Tue) 18:32:14|NO.67431


*1 mes "問題" onkey *2 stop *2 mes "答え" onkey *1 stop



a

リンク

2015/2/17(Tue) 18:44:17|NO.67432

アドバイスですが、repeat内部にgotoがあるとエラーの素なので書かないほうがいいです。
その代わりにgosubならじゃんじゃん使っても構いません。
ただ、gosubの中でも同様にgotoは使わずにgosubを使うようにしてください。



リンク

2015/2/17(Tue) 21:05:05|NO.67433

なるほど、repeat内にgotoは良くないんですね。

でも、aさんのスクリプトだと、cntが使えなくて、
一行ずつ読み込んで問題を表示させるってことが出来ないんですよ…



a

リンク

2015/2/17(Tue) 21:14:15|NO.67434

別にcntを使う必要性はないと思いますが。

*1 c++ mes "問題" + c onkey *2 stop *2 mes "答え" + c onkey *1 stop



スペース

リンク

2015/2/17(Tue) 21:39:59|NO.67435

どうしてもcntを使いたいならこのような方法もあります。
ただ、個人的にはaさんの方法のほうが簡略化&効率的で便利だと思います。

repeat mes "問題" repeat:getkey k,1:if k=0&k2=1:{k2=0:break}:await:k2=k:loop mes "答え" repeat:getkey k,1:if k=0&k2=1:{k2=0:break}:await:k2=k:loop loop



リンク

2015/2/17(Tue) 22:09:19|NO.67436

すみません。そうですよね。
それ用の変数を設けるってそれだけなのに…

無事、解決することができました。

超初心者にお付き合いいただきありがとうございますm(_ _)m



ONION software Copyright 1997-2023(c) All rights reserved.