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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0719
T.K音ゲー スコア2解決


T.K

リンク

2014/7/19(Sat) 10:06:50|NO.62946

音ゲーにスコアを追加してみたんですが・・・

#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 10 * 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になるサイズ start_tim = d3timer()+200 //開始時間 //背景バッファ初期化 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 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="0111222333444555111333222" tenpo = 10 ;テンポの速さ onebeat = 9500/tenpo //一拍の時間(ms) perfect_tim = (1.0*PERFECT_LINE/480.0)*onebeat //バー発生からPERFECT_LINEまでの時間 movms = (480.0/onebeat) //1msの移動量(1画面の縦サイズを一拍の時間で割る) font "",40 repeat redraw 0 gmode 0 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 //バーの基準点を中央に変更 } } //ヒット表示 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 //ヒットした時の座標を保存 range=abs(PERFECT_LINE-hit_line_posy) if range<(PERFECT_LINE/2):ms="miss":use=3 tokuten = tokuten + 0 ;得点加算 if range<(PERFECT_LINE/5):ms="good":use=2 tokuten = tokuten + 10 ;得点加算 if range<=PERFECT_RANGE :ms="perfect":use=1 tokuten = tokuten + 100 ;得点加算 }else{ hitf=0 //ヒット表示フラグリセット } pos 200,0 color 255,255,255 mes ms redraw 1 await 16 use_bak=use color 100, 100, 50 ;表示領域の色 boxf (winx + 2) * mm, 5 * mm, (winx + 28) * mm, 70 * mm ;スコアー消去 font "MS ゴシック", 25, 1 ;フォント設定 color 255, 0, 255 ;スコアーの文字色 pos 400,0 mes strf("スコアー:%06d", tokuten) redraw 1 await 16 loop
↑を実行して頂ければわかるのですが、まずスコアperfectが100ポイント・goodが10ポイント・missが0ポイントに設定したいのですが上のソースでは駄目でした。どうすればいいのでしょうか?
またスコアの得点のところがチカチカ点滅してしまうのはなぜなんでしょうか?



この記事に返信する


暇人

リンク

2014/7/19(Sat) 13:18:41|NO.62959

>設定したいのですが上のソースでは駄目でした。どうすればいいのでしょうか?
そりゃ
> if range<(PERFECT_LINE/2):ms="miss":use=3
> tokuten = tokuten + 0 ;得点加算
> if range<(PERFECT_LINE/5):ms="good":use=2
> tokuten = tokuten + 10 ;得点加算
> if range<=PERFECT_RANGE :ms="perfect":use=1
> tokuten = tokuten + 100 ;得点加算
if文の次の行にスコア加算を書いてるんだから当然じゃ?
:使って一行で済ませるか、複数行使いたいなら{}で囲む

>またスコアの得点のところがチカチカ点滅してしまうのはなぜなんでしょうか?
一回のメインループにredaraw 1とawait 16が二回使われてる
せっかくループの最初にredaraw 0で非表示にしてるのに・・・
>pos 200,0
> color 255,255,255
> mes ms
> redraw 1
> await 16


> redraw 1
> await 16
を削除すれば良い
awaitも消さないと秒間30フレームぐらいに落ちてしまう


> boxf (winx + 2) * mm, 5 * mm, (winx + 28) * mm, 70 * mm ;スコアー消去
が意味無くなってる
画面外に描画してる・・・



T.K

リンク

2014/7/20(Sun) 11:46:21|NO.62994

解答頂けた通りにやればうまくいきました。ありがとうございます!



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