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

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

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

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

Q&A

解決済

1回答

960閲覧

processingで人が障害物を全てよけた時(スタートから12秒後)にGAMECLEAR,障害物に当たった時(接したとき)にGAMEOVERと表示させたい

退会済みユーザー

退会済みユーザー

総合スコア0

Processing

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

0グッド

0クリップ

投稿2020/07/18 12:55

前提・実現したいこと

processingについての質問です。
人が障害物を全てよけた時(スタートから12秒後)にGAMECLEAR,障害物に当たった時(接したとき)にGAMEOVERと表示させたいのですがエラーがでてうまくできません。
ここに質問の内容を詳しく書いてください。
if文で条件式を書いてるのですがif文の条件の式を書いてもエラーが出る。
else ifの条件、(12秒後)の書き方が分かりません。
当たるときの条件として人の顔だけに接したときの判定にしたい。

発生している問題・エラーメッセージ

エラーメッセージ ```コードができていないため実行すらできなかった。 ### 該当のソースコード ```ここに言語名を入力 ソースコード ```float[] x1 = new float[3000]; int x,y; float y1; void setup(){ size( 600, 600 ); noStroke(); fill(255,200); for(int i=0;i<x1.length;i++){ x1[i]=random(-1000,200); } } void drawHuman( int x, int y ){ stroke(255,255,255); ellipse( x, y, 10, 10 ); line( x, y+10, x+15, y+50 ); line( x, y+10, x-10, y+20 ); line(x-10,y+20,x-20,y+10); line(x,y+10,x+15,y+21); line(x+15,y+21,x+18,y+31); line(x+9,y+30,x-10,y+38); line(x-10,y+38,x-8,y+50); line(x-8,y+50,x-10,y+52); line(x+15,y+50,x+21,y+40); line(x+21,y+40,x+23,y+42); line(x+80,y,x+60,y); line(x+80,y+30,x+60,y+30); line(x+80,y+50,x+60,y+50); } void draw(){ background(0); for(int i=0;i<x1.length;i++){ x1[i] +=3; float y1=i*3; arc(x1[i],y1,60,60,0.52,5.76); } if((x-x1[i])*(x-x1[i])+(y-y1)*(y-y1)<=(60+10)*(60+10)){ text("GAME OVER",300,300); else if(){ text("GAME CLEAR",300,300); drawHuman( mouseX, mouseY); } ### 試したこと ここに問題に対して試したことを記載してください。 int を使って宣言してみた ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。 日曜日までなのでできるだけ早くお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

障害物の数とか不可解なところがありますが、やりたいことはこんな感じでしょうか。

Processing

1float[] x1 = new float[100]; // 同じ数にする 2float[] y1 = new float[100]; // 同じ数にする 3//int x, y; // 使っていない 4//float y1; 5 6void setup() { 7 size(600, 600); 8 noStroke(); 9 fill(255, 200); 10 for (int i = 0; i < x1.length; i++) { 11 x1[i] = random(-1500, 200); 12 y1[i] = random(0, height); 13 } 14 15 // これを入れないと開始直後にGAME OVERになってしまう(最初のdraw()で0扱い) 16 mouseX = 600; 17} 18 19void drawHuman(int x, int y) { 20 stroke(255, 255, 255); 21 ellipse(x, y, 10, 10); 22 line(x, y + 10, x + 15, y + 50); 23 line(x, y + 10, x - 10, y + 20); 24 line(x - 10, y + 20, x - 20, y + 10); 25 line(x, y + 10, x + 15, y + 21); 26 line(x + 15, y + 21, x + 18, y + 31); 27 line(x + 9, y + 30, x - 10, y + 38); 28 line(x - 10, y + 38, x - 8, y + 50); 29 line(x - 8, y + 50, x - 10, y + 52); 30 line(x + 15, y + 50, x + 21, y + 40); 31 line(x + 21, y + 40, x + 23, y + 42); 32 line(x + 80, y, x + 60, y); 33 line(x + 80, y + 30, x + 60, y + 30); 34 line(x + 80, y + 50, x + 60, y + 50); 35} 36 37void draw() { 38 background(0); 39 40 for (int i = 0; i < x1.length; i++) { 41 x1[i] += 3; 42 arc(x1[i], y1[i], 60, 60, 0.52, 5.76); 43 44 // 2点間の距離には専用関数がある 45 //if ((x-x1[i])*(x-x1[i])+(y-y1)*(y-y1)<=(60+10)*(60+10)) { 46 if (dist(mouseX, mouseY, x1[i], y1[i]) <= 35) { 47 text("GAME OVER", 300, 300); 48 noLoop(); // ループをやめて以降の描画中止 49 } 50 } 51 52 if (12 * 1000 <= millis()) { // プログラムを開始してからの秒数(ms) 53 text("GAME CLEAR", 300, 300); 54 noLoop(); 55 } 56 57 drawHuman(mouseX, mouseY); 58}

dist() \ Language (API) \ Processing 3+
noLoop() \ Language (API) \ Processing 3+
millis() \ Language (API) \ Processing 3+

投稿2020/07/18 15:05

編集2020/07/18 17:21
TN8001

総合スコア9321

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

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

退会済みユーザー

退会済みユーザー

2020/07/18 15:40

回答ありがとうございます。人の判定ででプログラムを実行したのですがあまりうまくいかなかったので、円(ellipse(x, y, 10, 10);)の判定でプログラムを作ることは可能ですか?
TN8001

2020/07/18 16:00

人も円も同じだと思いますが、判定エリアを小さくするなら if (dist(mouseX, mouseY, x1[i], y1) <= 10) 等 右の数字を小さくするだけです。
TN8001

2020/07/18 16:11

(60+10)/2で35にすると障害物の円(口の中でもダメ)と人の頭が少しでも重なるとGAME OVERになると思いますが、 その前に障害物が多すぎて避けられなくないですか?^^;
退会済みユーザー

退会済みユーザー

2020/07/18 17:02

ほんとですね、障害物の数を減らすにはどこの値を変更すればいいですかね?
TN8001

2020/07/18 17:21

え!?質問コードはFav.さんが書いたコードではないのですか? 障害物のY座標の取り方がちょっと特殊で調整しずらいので float[] y1も作りました。 障害物はとりあえず100個にしましたが、お好みに調整してください。
退会済みユーザー

退会済みユーザー

2020/07/18 17:52

コードは友達に教えてもらいながら作ったので... なるほど理解できました。本当にありがとうございました(__)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問