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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0619
rin音楽を入れる方法3解決


rin

リンク

2014/6/19(Thu) 21:42:47|NO.62504

#include "d3m.hsp" //タイマーだけ利用(timeGetTimeを使用してるだけだから精度は良くない)
#define winx 100
#define winy 0
#define mm 8 ;間隔
#define xcls0 color 0, 0, 0 : boxf 0, 2000, winx * mm - 1, winy * mm - 1
#define xcls1 color 0, 30, 50 : boxf winx * mm, 0
dim key,7
;スタート表示 -----
*restart_disp
xcls0
font "MS ゴシック", 30, 0
color 600, 200, 300
pos 18 * mm, 28 * mm
mes " レッツ!ミュージック♪"
wait 100


title "音ゲー"

KEY_CODE = 0,'Z','X','C','V','B'
KEY_POSX = 41
KEY_POSY = 423
BAR_SIZEX = 100
BAR_SIZEY = 20
PERFECT_LINE = 400
PERFECT_RANGE = 40 //PERFECT_LINEから上下にずれてもperfectになるサイズ

//背景バッファ初期化
buffer 1
color 0,0,0 :boxf:color 255,255,255
repeat 5
line BAR_SIZEX+cnt*BAR_SIZEX,0,BAR_SIZEX+cnt*BAR_SIZEX,640
loop
line 0,PERFECT_LINE,500,PERFECT_LINE
gsel 0

gakuhu = "0235453545222222213143143112345432123454321234543212345432133423" ;0は無表示,1〜5はz〜bボタンを押す
tenpo = 100 ;テンポの速さ

onebeat = 50000/tenpo //一拍の時間(ms)
perfect_tim = (1.0*PERFECT_LINE/480.0)*onebeat //バー発生からPERFECT_LINEまでの時間
movms = (480.0/onebeat) //1msの移動量(1画面の縦サイズを一拍の時間で割る)

font "",40

start_tim = d3timer() //開始時間

repeat
redraw 0
gmode 1
pos 0,0
celput 1//背景画面コピー

if (onebeat*gcnt) <= (d3timer()-start_tim) {//一拍ずつの経過時間を越えた
use=0
gaku=int(strmid (gakuhu,gcnt,1))
bar_start_tim=onebeat*gcnt //バー発生時間
gcnt+1
}

etim=d3timer()-start_tim //開始からの経過時間
bar_tim=etim-bar_start_tim //バー発生からの経過時間(これにmovmsを掛けてバー座標にする)

repeat 6-1,1
getkey key(cnt),KEY_CODE(cnt)
color 255,255*key(cnt),255
pos KEY_POSX+BAR_SIZEX*(cnt-1),KEY_POSY
mes strf("%c",KEY_CODE(cnt))
loop

if gaku {
if use=0 {
color 255,255,0
boxf (gaku*BAR_SIZEX)-BAR_SIZEX,movms*bar_tim-BAR_SIZEY/2,gaku*BAR_SIZEX,movms*bar_tim+BAR_SIZEY/2 //バーの基準点を中央に変更
}
}


//ヒット表示
*ba
if hitf<6 and hitf>0{//perfect=白、good=黄色、miss=赤
if hitf<4 {
color 255,255,63+hitf*64
boxf hit_line_posx-BAR_SIZEX,hit_line_posy-BAR_SIZEY/2+hitf*3,hit_line_posx,hit_line_posy+BAR_SIZEY/2-hitf*3
}
color 255,255-128*(use_bak=3),255-128*(use_bak>1)
circle hit_line_posx-65-hitf*2,PERFECT_LINE-15-hitf*2,hit_line_posx-35+hitf*2,PERFECT_LINE+15+hitf*2,1
circle hit_line_posx-80-hitf*4,PERFECT_LINE-30-hitf*4,hit_line_posx-20+hitf*4,PERFECT_LINE+30+hitf*4,0
hitf++
}

if (key(gaku)=1)&(use=0)&(gaku!0) {
hitf=1 //ヒット表示フラグ
hit_line_posx=gaku*BAR_SIZEX
hit_line_posy=movms*bar_tim //ヒットした時の座標を保存
if abs(PERFECT_LINE-hit_line_posy) <= PERFECT_RANGE {//差がPERFECT_RANGE以下ならperfect
ms="perfect" :use=1
}else{//PERFECT_RANGE*2以下ならgoodでそれより大きければmiss
if abs(PERFECT_LINE-hit_line_posy) <= (PERFECT_RANGE*2) {ms="good" :use=2}else{ms="miss" :use=3 }
}
use_bak=use
}

pos 500,0
color 255,255,255
mes ms
redraw 1
await 16
loop

ここから何処に音再生のプログラミングを入れれば良いのでしょうか?
音のプログラミング↓
 mmload "bad apple.mp3",0,0
mmplay 0
wait 15550
mmstop
end



この記事に返信する


kino

リンク

2014/6/20(Fri) 16:07:11|NO.62509

テンポとかちゃんと検証したわけではないですが

start_tim = d3timer()+30000 //開始時間
mmload "bad apple.mp3",0,0
mmplay 0

開始時間の所に+30000とか入れれば
イントロ部分の待ち時間30秒になります
その直後で音楽を再生させればいいかと思います

wait 15550
は入れなくていいですね

mmstop
end
は一番最後ですね



kino

リンク

2014/6/20(Fri) 16:14:19|NO.62511

ロード時間とか考えたら

mmload "bad apple.mp3",0,0
mmplay 0
start_tim = d3timer()+30000 //開始時間

のほうがいいですね、失礼しました



rin

リンク

2014/6/20(Fri) 21:22:18|NO.62513

わかりやすい解答ありがとうございました><

おかげで再生には成功できました。



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