学校の授業で音楽ゲームをC言語で作ろうと考たのですが、音楽ゲームといってもピンとこないですよね・・・どのようなゲームというと・・・音楽がかかり、判定バーに向けて落ちてくる物体を判定バーと重なった時に指定されたキーボードで打って得点を稼ぐというゲームです。
私の学校はゲーム専門の学校ではないので1からプログラムを組むのは難しいと思い、インターネット上で公開されているサンプルソースを少しずつ変えて作ろうと考えたのですが・・ソースプログラムを探しても全然見つかりません!
どなたかC言語で作られた音楽ゲームでソースプログラムが見られるサイトを教えていただきませんか?お願いします。
No.2ベストアンサー
- 回答日時:
以前まさにそういうゲームを作ったことがあります。
ちょうどその時に使ったライブラリが1番の方が回答したDXライブラリで
す。
現在はDXライブラリ3Dで3Dのビーマニのようなものを作成していますが、
基本は2Dも3Dも同じですのでとりあえずその仕組みを話します。
仕組みが分かれば人のソースを読むより自分で考えた方がはるかに速いです。
まず
鍵盤のx, y座標および発生フラグをあらわす変数を配列などで数十個ほど用意しておきます。
この際構造体にして配列で扱うとより楽かもしれません。
typedef struct {
int x, y; //x,y座標
int isEnable; //発生フラグ
} Object_t;
Object_t ob[ 100 ];
簡単な流れ:
1 背景の画像を描画
2 物体を周期的に各ラインごとにランダムに発生させる
(発生させる時は発生フラグをTRUEにして、y座標を0に戻します)
3 発生フラグが『有効な物体のみ』描画し、y座標を下に下げる
(これにより流れる物体が実現します)
4 一番下まで流れたら物体の発生フラグをFALSEに
(コレにより一番下まで流れた物体は描画されなくなります)
後はキー入力による判定です。
キー入力では複数のキーを同時に判定する必要があります。
DXライブラリではGetHitKeyStateAllがあるのでそれを使うのが一番楽でしょう。
各ラインごとに設定してあるキーが押されたらその押された瞬間から物体が近くに存在すれば
それがどの程度離れているかでGreat, Good, Bad, Too Badなどのランクを決めます。
また、この際にはDXライブラリではGetNowCountなどの時間関数を使ってタイミングを合わせる必要があるでしょう。
見栄えやエフェクトは後からいくらでも質を上げられるので、とりあえずこの点を
抑えておけば大丈夫です。
尚、音楽にあわせて物体が流れる・・というのがやりたければ、ランダムに
物体を発生させるのではなく、音楽にあわせたデータを作る必要があります。
指定のタイミングで指定のラインに発生!とかです。
データはテキストファイルで読み込ませるのが良いでしょう。仮に作るのであれば
Data.txt---------------------------------------------------
100 //全体の流れるスピード
100,2 //ゲーム開始から110ミリ秒後に2番のラインに物体発生
110,3,4 //110ミリ秒後に3,4番の位置に物体発生
300,4 //300ミリ秒後に4番の位置に発生
という感じでやるのが楽かなと思います。もちろん読み込み部分を自作するのは
面倒なので、まずはランダムな発生から挑戦されるのが良いかと思います。
以上ざっと説明しましたが、個人的には作れば分かるの一言に尽きると思います。
何はともあれ作り出すと見えてくるものが全然変わるのでとりあえず作り始めてはどうでしょうか?
No.1
- 回答日時:
こんにちは。
一から全部プログラムを組むのは結構大変な作業です。下記のようなライブラリ(関数の集合)を使ったらどうでしょう。
http://homepage2.nifty.com/natupaji/DxLib/
下のほうにある、DXライブラリサンプルプログラムにはソースが出ています。「10.落ちものゲーム基本」あたりが参考になると思います。
では。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 作詞・作曲 音楽家でも、ゲーム会社アニメ会社の音楽班に就職できれば生活は安泰ですか? とりあえずは 映画会社 2 2023/08/15 16:22
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- 専門学校 音響の専門学校に出願したのですが、質問があります。 2 2022/10/14 12:44
- その他(社会・学校・職場) 今後の選択肢について悩んでいます。 3 2023/07/04 18:02
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
- 専門学校 親に音楽の専門学校に行くことを反対されるのですが、どう説得すればいいですか? 8 2022/09/09 08:45
- YouTube OBSについて、ゲーム音をYou Tubeのライブ配信に流して、自分には聞こえないようにできますか? 1 2022/07/26 16:47
- その他(学校・勉強) 学校の手荷物検査や私物の没収は何故? 8 2022/09/03 21:12
- ノートパソコン .dllファイルがありませんと表示される 5 2023/04/30 03:03
- 中学校受験 私の妹が質問してきて、答えてあげたいので意見お願いします。 妹が中学受験をするため、塾に行っているの 4 2023/02/05 19:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Ps+のフリープレイでDestiny2の...
-
Windows Media Playerを開くと...
-
scipy っていうのをいれようと...
-
静的ライブラリから静的ライブ...
-
Google ColaboでGUI作成
-
LIBCMT.LIBをリンクしてコンパ...
-
boostのアンインストールについて
-
「System.Text.RegularExpressi...
-
python urlopen error について...
-
c言語の標準cライブラリのみで...
-
C# EXCELセルの入力規則設定に...
-
プログラマーで「使えない人」...
-
ゲームプログラミングについて
-
本格的なGUIを作るのにおすすめ...
-
強化学習の環境作成、AI。自動...
-
fortranプログラミングでの数値...
-
Cでmd5を使うには
-
Javaでaacを操作するライブラリ
-
マウスのクリックを自動で
-
SSE命令やUSBドライバ作成ってC...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Ps+のフリープレイでDestiny2の...
-
Windows Media Playerを開くと...
-
本格的なGUIを作るのにおすすめ...
-
Google ColaboでGUI作成
-
python urlopen error について...
-
scipy っていうのをいれようと...
-
強化学習の環境作成、AI。自動...
-
C言語について。
-
マウスのクリックを自動で
-
LIBCMT.LIBをリンクしてコンパ...
-
Dreamweaverのライブラリが反映...
-
【iTunes】CDをiPhoneに取り込...
-
shaderを書かないで、GPUレンダ...
-
declaration of 'index' shadow...
-
MFC/C++ sprintf の代わりに <<
-
ライブラリ作成時のグローバル...
-
静的ライブラリから静的ライブ...
-
boostのアンインストールについて
-
統計解析ソフト「R」と「SA...
-
c言語でntpdateコマンドにあた...
おすすめ情報