質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

Q&A

1回答

1946閲覧

バブルポップみたいなゲームをつくりたい(至急)

kazum77

総合スコア12

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

0グッド

0クリップ

投稿2016/08/26 04:41

C++ ```###前提・実現したいこと ここに質問したいことを詳細に書いてください 現在バブルポップみたいなゲームを作ってます。 ボールがクリックされた位置に飛んでボールにくっ付く感じにはできたのですがまだ一種類のボールしか飛ばせません。 なんとかボールがたくさん打ててたくさんくっつくようにしたいのでアドバイスお願いします ###該当のソースコード int i; int j; //マウス座標を格納 int mouseX, mouseY; //マウス座標の取得 GetMousePoint(&mouseX, &mouseY); //クリックしたらボールが飛ぶ if ((GetMouseInput() & MOUSE_INPUT_LEFT) != 0) { for (cnt = 0; cnt < MAX_BALL; cnt++) { if (g_ball[cnt].state == 0) { g_ball[cnt].number = rand() % 5+1; break; } if (cnt < MAX_BALL) { //ボールの初期座標 g_ball[cnt].pos_x = 320.0f; g_ball[cnt].pos_y = 429.0f; //ボールの速度 g_ball[cnt].spd_x = -(g_ball[cnt].pos_x - mouseX) / 60; g_ball[cnt].spd_y = -(g_ball[cnt].pos_y - mouseY) / 60; g_ball[cnt].state = 1; } } } //座標の変更 for (cnt = 0; cnt < MAX_BALL; cnt++) { if (g_ball[cnt].state == 1) { //ボールの移動 g_ball[cnt].pos_x = g_ball[cnt].pos_x + g_ball[cnt].spd_x; g_ball[cnt].pos_y = g_ball[cnt].pos_y + g_ball[cnt].spd_y; } } //ボールの反射 for (cnt = 0; cnt < MAX_BALL; cnt++) { if (g_ball[cnt].pos_x >= 640.0f - g_ball[cnt].grp_w) { if (g_ball[cnt].spd_x > 0.0f) { g_ball[cnt].spd_x = g_ball[cnt].spd_x * -1; } } if (g_ball[cnt].pos_x <= 0.0f) { if (g_ball[cnt].spd_x < 0.0f) { g_ball[cnt].spd_x = g_ball[cnt].spd_x * -1; } } } // ブロックとボールのあたり判定 for (j = 0; j < MAX_BALL; j++) { for (i = 0; i < MAX_BLOCK; i++) { if (collision(g_ball[j], g_block[i]) && g_block[i].state == 1) { g_ball[j].spd_x = 0; g_ball[j].spd_y = 0; g_block[i].state = 1; } } } //ボールの消滅 for (cnt = 0; cnt < MAX_BALL; cnt++) { if (g_ball[cnt].state == 1) { if (g_ball[cnt].pos_x < -64) { g_ball[cnt].state = 0; } } } ###試したこと 課題に対してアプローチしたことを記載してください ###補足情報(言語/FW/ツール等のバージョンなど) より詳細な情報

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SASAHARA

2016/08/26 06:14

『たくさん』打つ、『たくさん』くっつくの『たくさん』意味は、1種類のボールだけではなく、『複数種類』のボールをうったりくっつけたりしたいという意味ですしょうか?
kazum77

2016/08/26 06:22

そうです!
guest

回答1

0

質問へのご回答ありがとうございます。

なんとかボールがたくさん打ててたくさんくっつくようにしたいのでアドバイスお願いします

最初上記を読みまして、
たくさん打つ → 打てる間隔を短くすればいいのでは?
たくさんくっつく → MAX_BALLの上限をあげればいいのでは?

かと思ったもので^^;
質問してよかったです。

アドバイスを・・・ということですので、以下、何か参考になれば幸いです。
(ボールの移動や反射は、1種類でしたらすでに複数くっつけるところまでできている前提での回答です)

自分でしたら二次元配列にすると思います。
行:ボールの数
列:ステータス

ステータスは、例えば色とか大きさとか、何かフラグを持たせてもいいですね。
そのステータスによって、種類を分けてつくれるのではないかと思いました。

以下、イメージです。
g_ball[cnt][0]:存在フラグ(1なら存在する)
g_ball[cnt][1]:色(0:赤、1:青、2:黄色・・・)
g_ball[cnt][2]:特殊効果(0:通常、1:速度2倍、2:お邪魔的な何かをよける・・・)

こんな感じでもてば、

C++

1if(g_ball[cnt][1] == 0){ 2 //ボールを赤にする処理をここに~ 3} 4 5if(g_ball[cnt][2] != 2){ 6 //このフラグを持っていない人は~ 7 //といった処理を入れたり 8}

こんな感じで分岐できて、ボールの種類や特性を増やせると思います。
参考になれば幸いです。

投稿2016/08/26 07:44

SASAHARA

総合スコア247

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問