/***************************************
適当に作りました
19〜23行目で変数の中身を適当に決めているので
そこをいじくれば何とかなると思います
***************************************/
screen 0,800,200
objsize 800,50
pos 0,150 : button gosub "再生/停止",*再生 : objstat_1=stat //objstat_1=ボタンのオブジェクトID
font "MS ゴシック",32
//変数リスト
flag_stop=0 //止まっていたらフラグは1,再生中は0
flag_key=0 //スペースキーが押されてたら1 押されてなければ0
sdim mark,8,100 //表示させるマーク
dim timing,100 //表示させる時間
dim flag_hit,100 //マークのところでスペースキーが押されると1が代入される
randomize
repeat 100 //今は変数データを保存してないので適当に乱数で代入しておきます
mark(cnt)=str(rnd(8))+1 //表示させたいマーク,いまは数字を文字列として入れてあります
timing(cnt)=rnd(200)*80+600 //左から何コマ(1コマ=ルーチン1ループ)後にくるか
loop
*main
gosub *時間
gosub *確認
gosub *描画
await 5
goto *main
*時間 //時間をカウントしていく
time=time+1 //時間が増える、増やす値を変えれば早くなる
return
*描画
redraw 0
color 255,255,255 : boxf 0,0,800,200 //画面を消す
//キーフラグがたっているかどうかでヒットスペースの色が変わる
if flag_key>0 : color 255,0,0 : else : color 0,0,0
boxf 380,0,420,150 //ヒットスペースを描画
repeat 100
if (time<timing(cnt))&(time+800>timing(cnt)){ //マークが表示される位置か判断
//マークの位置を決める
pos time-timing(cnt)+800,59
//スペースキーが押してあり、タイミングが合っていればヒットフラグが立つ
//マークのx座標が380〜400にあり なおかつ キーのフラグがたっていればHITしたと判断する
//得点は(文字の数×100)点
if (ginfo_cx>380)&(ginfo_cx<400)&(flag_key>0)&(flag_hit(cnt)=0) : flag_hit(cnt)=1 : score+=int(mark(cnt))*100
//フラグの状態によって色を変える
if flag_hit(cnt)=1 : color 0,255,0 : else : color 0,0,255
mes mark(cnt) //マークを描画
}
loop
title "SCORE : "+score+"p
redraw 1
return
*再生 //停止ボタンが押されたとき
if flag_stop=0 : flag_stop=1 : stop
if flag_stop=1 : flag_stop=0 : goto *main
*確認 //ボタンが押されたか確認する
stick k
if k&16 : flag_key=10 : else : flag_key-=1 //スペースキー押してたらフラグが立つ
//押されたら10が代入され,押されないと減っていく
//0になるとフラグは倒れていると判断する
if flag_key<0 : flag_key=0 //flag_keyが減り過ぎないようにする
return
hspda.asを#includeしといて
mark変数とtiming変数をDAT.TXTなどの名前をつけて保存,読み込みすれば良いと思う(・∀・)
保存,読み込みはvload,vsave