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


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0109
rikuriku112233音ゲーのノーツ4未解決


rikuriku112233

リンク

2016/1/9(Sat) 13:03:04|NO.74066

今ポップンミュージックみたいな音ゲーを作っています。
そこで、上からノーツが落ちてきて下の線のタイミングでキーを押したら
タイミングによって点数が入る、というのを作りたいです。
そのノーツの描画方法をどうするかが思いつきません。
アドバイスでもいいので教えてください。



この記事に返信する


rikuriku112233

リンク

2016/1/10(Sun) 18:30:54|NO.74087

ちょっと分かりにくかったので訂正します。
ポップンミュージックみたいに上から下に落ちるノーツ(画像)を描画したいです。
誰か教えてください。



kanamaru

リンク

2016/1/10(Sun) 22:39:44|NO.74090

ちょっとしたソースコードを投稿するスレってところの、
紙吹雪を表示するソースのx座標をバラバラにして、
紙吹雪をcelputに置き換えて、
y座標が一定値かどうか調べる
といった書き換えをおこなえば、
それっぽいソースになると思います。
後は落とすタイミングをうまく制御出来れば…。



暇人

リンク

2016/1/11(Mon) 17:30:35|NO.74097

この掲示板でも音ゲーで検索すれば色々出てくると思う

とりあえず一つだけ落としてみるサンプル

bpm=96.0 //一分間の四分音符の数 Beat=60000.0/bpm //四分音符の長さ(60000は一分間をミリ秒にしたもの) time_total=0 timspd=400.0/(Beat*4) //4ビートの一小節分の時間で400ドット進む速度 timeA=gettime(7) repeat redraw 0 color boxf color 0,255,0 line 0,400,640,400 timeB=timeA timeA=gettime(7) time_total+=(timeA-timeB+1000)\1000 //gettime(7)が0〜9999なのでtimeA-timeBがマイナスになるのを+1000)\1000で防いでる ntposy=timspd*time_total gradf 100,ntposy,64,16,1,$ffffffff,$44444444 if abs(ntposy-400)<8 {mes "ライン上"} redraw 1 await 16 loop
画像を用意して使うならgcopyとかcelputを使う



Rich

リンク

2016/1/11(Mon) 23:53:23|NO.74103

複数のレーン(?)を表示させ、上から落とすスクリプト。[キー判定付(未完成)]
//[<-]マークのついている行は、ランダム表示関連命令なので、
//譜面データを元に表示する場合はその行を消す ButtonNum=9 dim ColorData,3,ButtonNum//色データ dim DownNotesData,2,ButtonNum+1//ノーツ情報データ ColorData(0,0)=255,246,237 ColorData(0,1)=254,233,20 ColorData(0,2)=115,229,116 ColorData(0,3)=12,106,193 ColorData(0,4)=176,44,29 ColorData(0,5)=12,106,193 ColorData(0,6)=255,246,237 ColorData(0,7)=254,233,20 ColorData(0,8)=115,229,116 DownNotesData(0,ButtonNum)=1 NotesSizeY=20 LanePX=50:LanePY=50 LaneSX=60:LaneSY=200 BufferSize=600,220 i=100//<- buffer 1//バッファ repeat ButtonNum color ColorData(0,cnt),ColorData(1,cnt),ColorData(2,cnt) boxf LanePX+(LaneSX*cnt),LanePY,LaneSX+(LanePX+(LaneSX*cnt)),LaneSY loop screen 0 onkey gosub *Key *MainLoop redraw 0 color 0,0,0:boxf 0,0,BufferSize(0)-1,BufferSize(1)-1 gmode 3,BufferSize(0),BufferSize(1),150 pos 0,0:gcopy 1,0,0,BufferSize(0),BufferSize(1) await 1 if DownNotesData(0,ButtonNum)=1{ repeat ButtonNum if DownNotesData(0,cnt)=1{ if DownNotesData(1,cnt)>=(LaneSY-LanePY-NotesSizeY){ DownNotesData(1,cnt)=0:DownNotesData(0,cnt)=0 continue } DownNotesData(1,cnt)++ color ColorData(0,cnt),ColorData(1,cnt),ColorData(2,cnt) boxf LanePX+(LaneSX*cnt),LanePY+DownNotesData(1,cnt),LaneSX+(LanePX+(LaneSX*cnt)),LanePY+NotesSizeY+DownNotesData(1,cnt) } loop } color 255,255,255 line LanePX,LaneSY-NotesSizeY,LanePX+(LaneSX*ButtonNum),LaneSY-NotesSizeY if i>100:DownNotesData(0,rnd(ButtonNum))=1//<- i++:if i>500:i=rnd(100)//<- redraw 1 await 9 goto *MainLoop *Key if wparam>=49 & wparam<=49+ButtonNum{//1キーから順に各レーンに割り当てられる NotesID=wparam-48 if DownNotesData(1,NotesID)<=(LaneSY-LanePY-NotesSizeY) & DownNotesData(1,NotesID)>=(LaneSY-LanePY-NotesSizeY)-(NotesSizeY/2){ Good++ title "Good:"+Good pos (LaneSX*NotesID),LanePY+LaneSY+20 color 0,0,0 mes "Good" } } return



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