コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
突然でてきたBAKA!! ◆nClMhTzWiMoJ
2018/4/25 19:55
質問
ループのせいで...
ループの中に音をいれようとしたらずっと音(うるさい!!)がなりWAITをつかうと他の操作ができなくなるんです<(*&*)>誰か助けて~

コメント

アバター
はる 2018/4/25 20:31 ◆75Vh4SY8TdKS
IF !(MAINCNT MOD 間隔) THEN 音
とすると良いと思います。
アバター
バスクラリネット 2018/4/25 22:16 ◆knmVzHCyK5Hr
一回だけ音を鳴らしたいのか、
一定の間隔で音を入れたいのか、
その「操作」を入れると音が鳴るようにしたいのかどれですか?
アバター
しょぼーん 2018/4/25 23:08 ◆lp6HwPeaFWPI
VSYNCというものがあってだな
アバター
だにえる 2018/4/26 0:01 ◆m76OCAQyrWGt
IF !(ループ制御変数 MOD 3)THEN

あるいはBEEPそのものの音を下げるとか
アバター
みなつ 2018/4/26 2:28 ◆hJTkStjweib1
はるさんやだにえるさんの方法の数字の決め方ですが、

IF !(MAINCNT MOD 60) THEN 音

とすると、1秒間に一回だけ鳴って、

IF !(MAINCNT MOD 120) THEN 音

だと、2秒間に1回だけ鳴ります!

60や120のところは、「1秒間を60としたとき、どのくらいの間隔で鳴らすか」という数なので、お好みで調整で!

あ、あとしょぼーんさんが書かれてるように、ループの中に、
VSYNC 1(もしくは WAIT 1)
を入れておかないと、上記の方法でも一瞬音がたくさん重なっちゃうので、もし入れてなかったら、ループの中に入れておいて下さい(≧∇≦)b
アバター
うょリウム(元 SPDX) 2018/4/27 1:01 ◆hJ0Srd29fS.I
※BAKAではなく知識とか経験とかが
少々足りないだけであって、
誰もが通るような道です。
MAINCNTは自動でカウントされる数
(1秒に60回カウントされる)
これを使うか、
自分で変数を使うか
(ループの中にTIM=TIM+1とかを入れ、)
IF TIM MOD 60 THEN BEEPとか、
IF TIM==60 THEN BEEP:TIM=0
とかですかね。
60の方も変数にすればプログラム内で
テンポを上げ下げする操作も入れられるようになりますよ!
アバター
でんぺん 2018/4/27 1:17 ◆HfSy5ayxtyTa
WAITは全ての時間を止めてしまうので、みんなが書いてくれているように基本はループが回っているようにしつつ他の方法(変数のカウント、等)でタイミングを調整するって感じですね。

ループの中でVSYNC 1(やWAIT 1)使うと処理落ちをしない限りは1/60秒でループが回るのが保証されるので、カウント変数なら60で1秒になる、とか考えやすいと思います。

他に便利な変数や命令は他の方も書いてくれているので割愛しますが、他の事も平行してやりたいときはループを回しつつタイミング調整が基本ですね!
アバター
しんいち 2018/4/27 3:20 ◆lHy.hAWXbthn
単に一定間隔で音を鳴らしたいだけなら、ループの前に
BGMPLAY "[[R]3C]"
とかでも出来ますね。
例えば何かボタン押した時だけ鳴らしたいとかなら
REPEAT
 VSYNC
 IF BUTTON(2) THEN BEEP 3
UNTIL FALSE'無限ループ
こんな感じですかね。
アバター
突然でてきたBAKA!! 2018/4/27 19:21 ◆nClMhTzWiMoJ
皆様,有り難う御座います.実は意見はもらえないだろうな~と思っていましたがこんなにももらってものすごくうれしいです,教えてもらったのを使用しドンドン作っていきます(漢字間違いてないかな??)
アバター
うょリウム(元 SPDX) 2018/4/27 23:14 ◆hJ0Srd29fS.I
漢字は間違ってないけど
最後の送り仮名が
×間違いてないかな?
O間違えてないかな?
ですね〜。なんちゃって :)
アバター
たんじぇ 2018/4/28 10:50 ◆WDmFkVwZ4yMl
音を鳴らす命令(BEEPやBGMPLAY)は「音を鳴らし始める」命令なので、ループの中で実行すると毎回音を鳴らし始めてしまうのです。

みなさんが書いているのは「ループ中で音を鳴らすなら、何秒かの間隔で鳴らすか、ボタン押したときに鳴らすだろう」って思って、ループ中の回数を調べて特定の回数になったら音を鳴らしたり、ボタンを押したときに音を鳴らすようなやりかたです。

SPRITEの移動の場合にループ処理で毎回SPOFS命令などのSPRITE系命令を実行する処理を見かけた事があると思いますが、SPRITEの場合は「移動開始」ではなく「座標設定」なので、毎回設定しないと移動してくれないのです。

なおSPRITEの例外としてSPANIM命令は「SPRITEアニメを始める」命令なので、ループ中で実行する場合は今回の音を鳴らすと同じようにカウンタやボタンなどで開始の条件を与えてアニメ開始の1回だけ実行する必要があります。
アバター
突然でてきたBAKA!! 2018/6/30 18:50 ◆EfKewrRlmOns
過去の自分かぁ〜

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -