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


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
0928
masテンポをとりながら移動するプログラム2解決


mas

リンク

2019/9/28(Sat) 18:24:39|NO.88530

質問させていただきます。
いわゆる音ゲーを作成しています。
d3timerを用い指定されたテンポに合わせながら、●が1小節(4拍子)経過するたびに進行方向を変更してぐるぐる移動するところで行き詰まっています。
#include "d3m.hsp"
winysize=480.0 screen 0,640,winysize tempo = 120 beat = 60000/tempo dist=24 cirx=0.0 ciry=0.0 cirsize=48 max=winysize-(cirsize+cirsize/2) beatmove = (winysize-cirsize*2)/4 move = (beatmove/beat) start = d3timer() //プログラムを開始した時間 measure=beat*4 nfr=0 repeat redraw 0 color 255,255,255 : boxf now=d3timer()-start if measure*4 <= fr : nfr=now fr=now-nfr//4小節ごとに時間を計測する if measure <= frb : fra=now frb=now-fra//1小節ごとに時間を計測する color 0, 0, 0 : circle cirx,ciry,cirx+cirsize,ciry+cirsize if measure*1 <= fr and measure*2 > fr{//→ cirx = move*frb+dist ciry=dist } else { if measure*2 <= fr and measure*3 > fr{//↓ ciry = move*frb+dist cirx=max } else { if measure*3 <= fr and measure*4 > fr{//← cirx = max-move*frb ciry=max } else { if measure*0 <= fr and measure*1 > fr{//↑ ciry = max-move*frb cirx=dist } } } } redraw 1 await 16 loop
進行方向を変更するときに●がうまく動作しません。
言葉で表現するのが難しいのですが、一瞬望まないほかの場所に移動してしまいます。

もし何かわかることがありましたら、ご教授願います。



この記事に返信する


暇人

リンク

2019/9/28(Sat) 19:59:02|NO.88532

節目でfrbを0に出来て無いのでシンプルに
> if measure*4 <= fr : nfr=now
> fr=now-nfr//4小節ごとに時間を計測する
> if measure <= frb : fra=now
> frb=now-fra//1小節ごとに時間を計測する
これを

fr=now\(measure*4) //4小節ごとに時間を計測する //nfrが必要ないなら nfr=now-fr frb=now\measure //1小節ごとに時間を計測する) //fraが必要ないなら fra=now-frb
に、置き換え



mas

リンク

2019/9/29(Sun) 09:41:37|NO.88536

無事できました。ありがとうございました!



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