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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

解決済

1回答

1771閲覧

Processing ブロック崩しでボールも消したい。

QitQut

総合スコア2

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

1グッド

0クリップ

投稿2021/05/28 12:21

編集2021/05/28 12:24

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)Processingでブロック崩しを作成しています。
ボールがブロックに当たったとき、ブロックだけでなく、ボールの方も消したいです。どのように考えればいいかが分かりません。
よろしくお願いします。

int blw = 38; //ブロックの幅 int blh = 38; //ブロックの高さ int blf [] = new int[81]; float bx = 310; //ボールの位置 float by = 790; //ボールの位置 float dy = 2; //ボールの速さ void setup(){ size(630,800); background(183, 186, 107); gameInit(); } void draw(){ by -= dy; background(183, 186, 107); rect(bx, by, 10, 10); block_display(); } void mouseClicked(){ bx = 310; //ボールの位置 by = 790; } void keyPressed() { if (keyCode == LEFT) { bx -= 10; } else if (keyCode == RIGHT) { bx +=10; } } void gameInit(){ for(int i = 0; i < 81; i++){ blf[i] = 1; } } void block_display(){ int block_w, block_h; for (int i = 0; i < 81; i++){ //ブロックを表示 if(blf[i] == 1){ // 0 : ブロック非表示 1 : 表示 fill(197,149,107); //茶色 block_w = 130 + (i%9) * (blw+2); block_h = 70 + (i/9) * (blh+2); blockHitCheck(i, block_w, block_h); if( blf[i] == 1){ rect(block_w, block_h, blw, blh, 2); } } } } void blockHitCheck(int ii, int xx, int yy){ if( ! ((xx < bx) && (xx + blw > bx) && (yy < by) && (yy + blh > by)) ){ return; } blf[ii] = 0; // 0 : ブロックなし }

試したこと

draw()の中で、条件分岐してみましたが、うまくいきませんでした。

TN8001👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

ボールがブロックに当たったとき、ブロックだけでなく、ボールの方も消したいです。

ブロック崩しってなんだっけ?という気持ちも沸きますが、新しいルールを足していくのもアイデアですね^^

どのように考えればいいかが分かりません。

ブロック崩し4 ブロックとの当たり判定 | Processing入門 | プログラミングとゲームの杜

コードがこちらにかなり似ているので参考にされていると思います(参考コードがある場合は質問に明示してください)

上記リンクの中盤あたりにこうあります。

仕組みは配列変数 blf をブロックと同じ数だけ用意します。
この変数が 0 のときは表示させず、1 のときは表示するように使います。

同じようにボール用のフラグ変数を用意すればいいと思います。

draw()の中で、条件分岐してみましたが、うまくいきませんでした。

試したコードも提示していただけると、「惜しいところまで行っていた」等、アドバイスしやすいです。


ですがボールは上にしか行かないのであれば

Processing

1 blf[ii] = 0; // 0 : ブロックなし 2 by = -10;

と、ボールを画面外に飛ばすだけで十分ですね^^;

投稿2021/05/28 13:25

TN8001

総合スコア9862

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

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

QitQut

2021/05/28 23:52

説明不足の質問に丁寧にご回答していただきありがとうございました。 「参考コードがある場合は質問に明示してください」と「試したコードも提示していただけると、「惜しいところまで行っていた」等、アドバイスしやすいです。」のご指摘は今後の質問を投稿するときに気をつけたいと思います。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問