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

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

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

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

Q&A

1回答

267閲覧

ifのなかで配列を使う方法はありますか?

rnrn

総合スコア0

Processing

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

0グッド

0クリップ

投稿2024/02/07 20:28

実現したいこと

}else if(x>=hx[i]-l[i]&&x<=hx[PI]+l[PI]&&y>=hy[PI]-l[i]-20){
text("Try Again",400,250);
}
xというのは矢のさきのx座標でyは矢の先のy座標、hyは風船のy座標、hxは風船のx座標、lは風船のおおきさです。楕円形で横の長さをlとおきました。やのさきがふうせんに当たった時アウトになるプログラミングを書きたいです。

こういったものを正常に動作させるにはどうしたらよいのでしょうか、、、

発生している問題・分からないこと

iをPIとまちがえてないかといわれます。まちがえていません、、、、、

該当のソースコード

p5js

1 }else if(x>=hx[i]-l[i]&&x<=hx[PI]+l[PI]&&y>=hy[PI]-l[i]-20){ 2 text("Try Again",400,250); 3}

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

調べても出てきませんでした、、、、、

補足

特になし

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

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

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

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

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

thkana

2024/02/08 03:43

> iをPIとまちがえてないかといわれます。まちがえていません、、、 では、hx[PI]とかl[PI], hy[PI]というのはどう解釈すればよいのでしょう? エラーメッセージなどは、あなたの解釈ではなく「みたそのまま」を転記していただいたほうがよい場合が多いです。
int32_t

2024/02/08 05:56

i と PI は何を表現しているのでしょうか。 コードぜんぶを開示した方が話が早いと思います。
guest

回答1

0

iをPIとまちがえてないかといわれます。まちがえていません

ではhx[PI]l[PI]hy[PI] はどういう意図なんでしょうか?
配列のインデックスに何故PIが出てくるのでしょう??

lは風船のおおきさです。楕円形で横の長さをlとおきました。

楕円なのに高さの配列はないのですか?(すべて同じ値?横の1.2倍とか計算可能な値?)

やのさきがふうせんに当たった時

矢は1本で風船は複数あるんですよね?風船のループ中の当たり判定と。

点と矩形の当たり判定でよいならこんな感じでしょう。

js

1if (hx[i] - l[i] / 2 <= x && x <= hx[i] + l[i] / 2 && hy[i] - 高さ / 2 <= y && y <= hy[i] + 高さ / 2) {

点と円の当たり判定でよいならこんな感じでしょう。

js

1if (dist(x, y, hx[i], hy[i]) <= l[i] / 2) {

点と楕円のちゃんとした当たり判定なら、ライブラリを使うのが手っ取り早いです。
bmoren/p5.collide2D: A collision detection library for 2D geometry in p5.js

js

1if (collidePointEllipse(x, y, hx[i], hy[i], l[i], 高さ)) {

js

1const hx = [200]; 2const hy = [200]; 3const l = [200]; 4 5let radio; 6let slider; 7 8function setup() { 9 createCanvas(400, 400); 10 rectMode(CENTER); 11 12 radio = createRadio(); 13 ['rect', 'circle', 'ellipse'].forEach(x => radio.option(x)); 14 radio.selected('rect'); 15 16 slider = createSlider(100, 300); 17} 18 19function draw() { 20 background(200); 21 22 const x = mouseX; 23 const y = mouseY; 24 const h = slider.value(); // 楕円高さ 25 26 for (let i = 0; i < 1; i++) { 27 fill(255); 28 29 switch (radio.value()) { 30 31 case 'rect': // 矩形での当たり判定の場合 32 if (hx[i] - l[i] / 2 <= x && x <= hx[i] + l[i] / 2 33 && hy[i] - h / 2 <= y && y <= hy[i] + h / 2) { 34 fill('red'); 35 } 36 ellipse(hx[i], hy[i], l[i], h); 37 38 noFill(); 39 rect(hx[i], hy[i], l[i], h); // 当たり判定エリア(矩形) 40 break; 41 42 case 'circle': // 円での当たり判定の場合 43 if (dist(x, y, hx[i], hy[i]) <= l[i] / 2) { 44 fill('red'); 45 } 46 ellipse(hx[i], hy[i], l[i], h); 47 48 noFill(); 49 circle(hx[i], hy[i], l[i]); // 当たり判定エリア(円) 50 break; 51 52 case 'ellipse': // 楕円での当たり判定の場合 53 if (collidePointEllipse(x, y, hx[i], hy[i], l[i], h)) { 54 fill('red'); 55 } 56 ellipse(hx[i], hy[i], l[i], h); 57 break; 58 } 59 } 60}

アプリ動画

投稿2024/02/08 11:15

編集2024/02/09 10:56
TN8001

総合スコア9326

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問