
C言語(DXlib)での音ゲーについて、当方初心者なので恥ずかしいのですが、ノーツを任意のタイミングで流す方法が分かりません
譜面を作って任意でノーツ生成する方法を教えて下さい...
一定間隔でのノーツの流し方はある程度分かるのですが...(下記です)
//bar生成
while (currentTime >= (60000 / bpm * counter) - 3000) {
bar_f [counter % BAR_SIZE] = true;
bar_c [counter % BAR_SIZE] = 60000 / bpm * counter;
counter++; }
こちらのサイト様を参考にさせていただきました
https://iconcreator.hatenablog.com/entry/2019/02 …
No.2ベストアンサー
- 回答日時:
順序を変える.
「counter % BAR_SIZE の~」についていうと, 「counter % BAR_SIZE」の値は「0 以上 BAR_SIZE 未満」にしかなりません. なので, 例えば BAR_SIZE が 40 なら
0~39
になります. 「60」はなんかの勘違い (か修正ミス) じゃないかな. なお, counter という変数そのものはリセットされず, ず~っと増加し続けます.
で本題に入ると, while の条件式の右辺, 特に
60000 / bpm * counter
の部分が重要で, この値によって出てくるタイミングを制御しています. なので, この値 (もっといえば「counter」の部分の値) を「希望する値」に設定すれば, 「任意のタイミング」で流すことができます.
ただし, 本格的にいじっていこうとするといろいろと変えなければなりません. あたりまえだけど各列を独立に制御しなきゃならないし, そのためには下にあるように 2次元配列にする, あるいはリストにするなどといった工夫が必要です. さらに, 「どのタイミングで出すか」を制御するための情報 (平たくいえば「楽譜」) も, プログラムの中に書くとかなんらかのファイルに保持するとかの形で準備することになります. また, bar_f とか bar_c とかの情報は一体として管理するのが妥当なので, これらをまとめた構造体を作るべきでしょう.
4096分音符とかを作らないことを祈る (謎)
ありがとうございます、とりあえずif(counter==x)のベタ書き譜面と4096分音符の作成を試してみます!()
しかし内容が分かりやすい上に回答がびっくりするほど早くて惚れました、かっこよすぎです...///
No.1
- 回答日時:
かくにん.
どうしてそれで「一定間隔」になるのかは理解できてる?
いつもありがとうございます。
ええと、
whileでノーツ一個あたりのミリ秒を求め、処理のたびに加算されるcounterをかけることで以降のノーツ生成タイミングも計算しているからです
しかし解説のミスだと思い気にしていなかったのですが、
『counter % BAR_SIZEの部分はbarを生成するたびに、0,1,2, ..., 59, 60, 0, 1, ...と変化していきます。こうすることで、BAR_SIZEが40しかなくてもずっとbarを生成し続けることができます。』
というのが理解できていませんでした。
BAR_SIZEが40ならcounterも40でリセットされるはず、60まで変化している理由が不明です、もし良ければの話ですがここもご教授願えれば幸いです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- ゲーム リズムゲーム(音ゲー)の練習についてアドバイス頂きたいです。 ①指やノーツを意識してなるべく正確に叩 1 2022/04/07 02:58
- 英語 提示分の"with"の使い方等について 1 2022/08/23 10:40
- その他(ゲーム) 大至急。 明日、国語の授業で3分間のスピーチがあるのですが、テーマが自由です。そこで、私は自分の趣味 6 2023/06/14 20:24
- C言語・C++・C# Makefileのechoの展開について 2 2022/07/26 07:35
- 知人・隣人 自分の母がBARとかやりながらアムウェイもやってて、両方ともまぁまぁ多めに稼ぎがあるヒトなんですけど 1 2022/06/14 07:42
- 居酒屋・バル・バー 20の男なのですが、自分は酒を飲みに行く際に、暗くて前が見えないくらいで誰1人喋っておらず、お洒落な 1 2022/10/24 00:34
- 眼・耳鼻咽喉の病気 音ゲーで突然ノーツが目で追えなくなりました。 気づいたら進んでるみたいな感じです。 すんごい集中して 1 2023/01/21 18:49
- その他(悩み相談・人生相談) 20の男です。最近お酒飲み始めるようになったのですが、自分らの友達や周りの知人の話を聞いてとても疑問 3 2022/11/03 17:47
- 数学 数学の質問です。 △ABCにおいて, ∠Aの二等分線が BC と交わる点をRとする。 辺BC, CA 2 2023/07/13 23:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
数字の位ごとの値を表示するプ...
-
データ構造のmapとは?
-
Excel-vba 文字列と変数を...
-
VB6.0-整数と余りを求める
-
世界のナベアツ
-
ジャバスクリプトでのことです...
-
EXCEL/VBA 変数の値をクリップ...
-
VisualStudio2022でC言語プログ...
-
数値計算??
-
コンボボックス等における表示...
-
数値を浮動小数点32bitHEXコー...
-
jsp~jspにhiddenを使って変数...
-
素数、偶数、奇数、倍数を求める。
-
正規表現で、英数記号を含むパ...
-
stdpicture型の変数に、、
-
Javaプログラミング講座問題に...
-
Array.newが必要ないのはなぜで...
-
英数半角文字と「-」を指定する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 exitの使い方
-
Excel-vba 文字列と変数を...
-
フォームを開くときに、コンボ...
-
数字の位ごとの値を表示するプ...
-
VB6.0-整数と余りを求める
-
足して100になるような乱数のア...
-
ラジオボタンの値の取得につい...
-
C#で動的にコントロールを取得...
-
VBAで配列のNULL判定
-
データ構造のmapとは?
-
関数で複数の値を戻り値として...
-
世界のナベアツ
-
VBA コンボボックスの値をスピ...
-
VBAの定数の使い方で、計算値を...
-
1つ前の値を変数に保存する方法
-
スピンボタンで小数点
-
Nullってどういう意味ですか?
-
コンボボックスの名前を変数に...
-
DWORDって
-
フリーランタイマーの時間差分...
おすすめ情報