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

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

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

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

Q&A

2回答

971閲覧

塗りつぶしたくない図形が塗りつぶされる

claus__

総合スコア0

Processing

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

0グッド

0クリップ

投稿2022/09/18 05:03

編集2022/09/18 05:06

前提

画面上のランダムな位置に円が描画され、それをクリックして消すとスコアが入るゲームをつくろうとしています。

実現したいこと

マウスカーソルが円と重なった際に円を塗りつぶしたい

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

マウスカーソルが円と重なっていなくても図形が緑色に塗りつぶされてしまう

該当のソースコード

processingです

ソースコード
void setup() {

size(1920,1080);

background(0);

}

float x = 0;
float y = 0;

float tx = x - 50;
float ty = y - 50;

float tx2 = x + 50;
float ty2 = y + 50; //x,yが円の中心+-50の位置

void draw() {

x = random(0,1080);
y = random(0,1920);

ellipse(x,y,100,100);

if( tx <= mouseX && mouseX <= tx2){ if( ty <= mouseY && mouseY <= ty2){//マウスカーソルのx座標、y座標がともに円の内部にきたら fill(0,255,0); //塗りつぶす }

}
delay(2500); //円が描画されるスピードを調節
}

###最後に
プログラミング初心者なので、参考のためにも「前提」に書いてあるようなゲームを作るためのコードを作っていただけたらめちゃめちゃありがたいです!!

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

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

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

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

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

dodox86

2022/09/18 05:24 編集

> プログラミング初心者なので、参考のためにも「前提」に書いてあるようなゲームを作るためのコードを作っていただけたらめちゃめちゃありがたいです!! 初心の方と言えどもこれでは丸投げです。 [質問するときのヒント] https://teratail.com/help/question-tips [推奨していない質問] https://teratail.com/help/avoid-asking > if( tx <= mouseX && mouseX <= tx2){ > > if( ty <= mouseY && mouseY <= ty2){//マ この判定では円ではなく左上座標(tx, ty) 右下座標(tx2, ty2)で示される矩形(正方形)の範囲ですね。 中学数学、「三平方の定理」で斜辺が円の半径の長さ以内であれば円の中と判定することができます。
guest

回答2

0

画面上のランダムな位置に円が描画され、それをクリックして消すとスコアが入るゲームをつくろうとしています。

最近似た質問に回答しました(ちょっと違うというのは理解しています)
ランダムに配置させた図形の色を変える方法

円との当たり判定の「参考」にはなるはずです。

マウスカーソルが円と重なった際に円を塗りつぶしたい

上記回答のmouseClickedを、mouseMovedに置き換えてみました(+ちょっと整理)

Processing

1final int NUM = 5; 2float[] x = new float[NUM]; 3float[] y = new float[NUM]; 4float[] r = new float[NUM]; 5boolean[] isMouseHover = new boolean[NUM]; 6 7void setup() { 8 size(400, 300); 9 ellipseMode(RADIUS); 10 11 for (int i = 0; i < NUM; i++) { 12 x[i] = random(width); 13 y[i] = random(height); 14 r[i] = random(50, 100); 15 } 16} 17 18void draw() { 19 background(255); 20 21 for (int i = 0; i < NUM; i++) { 22 if (isMouseHover[i]) { 23 fill(0, 255, 0); 24 } else { 25 fill(255); 26 } 27 circle(x[i], y[i], r[i]); 28 } 29} 30 31void mouseMoved() { 32 for (int i = 0; i < NUM; i++) { 33 if (dist(x[i], y[i], mouseX, mouseY) < r[i]) { 34 isMouseHover[i] = true; 35 } else { 36 isMouseHover[i] = false; 37 } 38 } 39}

プログラミング初心者なので、参考のためにも「前提」に書いてあるようなゲームを作るためのコードを作っていただけたらめちゃめちゃありがたいです!!

代わりに作ってしまっては、それは「プログラミング」と言えるのでしょうか?
claus__さんの理解度もわかりませんし、かといって0から説明するわけにもいきません。

求めている回答ではないでしょうが、比較的簡単にできそうなライブラリを使用した例を出しておきます。

メニューの「スケッチ」-「ライブラリをインポート...」から、Fisicaをインストールしておきます。
Contribution Manager

Processing

1import fisica.*; 2 3FWorld world; 4int timeLimit = 15; 5int startMS; // ゲーム開始時間 6int countDown; 7int score; 8PImage photo1; 9PImage photo2; 10 11Scene scene = Scene.TITLE; // 現在の画面 12enum Scene { // 画面を表すenum 13 TITLE, PLAY, GAMEOVER, 14} 15 16 17void setup() { 18 fullScreen(); 19 background(255, 255, 0); 20 fill(0); 21 textSize(90); 22 23 Fisica.init(this); 24 world = new FWorld(); 25 world.setEdges(); 26 world.setGravity(0, 0); 27 28 // 画像読み込みは初回1回でよい(同じ画像を使いまわす) 29 //photo = loadImage("2.png"); 30 photo1 = loadImage("https://www.gravatar.com/avatar/65adad388f02d47ab7fb7e48579efe41?d=identicon", "png"); 31 photo2 = loadImage("https://teratail-v2.storage.googleapis.com/uploads/avatars/u13/132786/KnkDDC5A_thumbnail.jpg"); 32} 33 34void draw() { 35 switch(scene) { 36 case TITLE: 37 title(); 38 break; 39 case PLAY: 40 play(); 41 break; 42 case GAMEOVER: 43 gameover(); 44 break; 45 } 46} 47 48void title() { 49 background(255, 255, 0); 50 51 push(); // textAlignやtextSizeの変更がほかに影響しないように、push popで閉じ込める 52 textAlign(CENTER, CENTER); // センタリング 53 text("HOGE GAME", 0, 0, width, height); // 画面中央 54 55 if (frameCount % 60 < 30) { // 点滅 56 textSize(44); 57 text("Mouse Click to Play", 0, height / 2, width, height / 2); // 画面下半分中央 58 } 59 pop(); 60} 61 62void play() { 63 background(255); 64 65 text("SCORE:" + score, width - 600, 100); 66 67 int ms = (millis() - startMS) / 1000; // 開始時間を引く 68 69 countDown = timeLimit - ms; 70 if (countDown <= 0) { 71 scene = Scene.GAMEOVER; // 結果画面に遷移 72 } 73 if (countDown <= 10) { 74 text("COUNT DOWN :" + countDown, 100, 100); 75 } 76 77 if (frameCount % 60 == 1) { 78 add(); 79 } 80 81 world.step(); 82 world.draw(); 83} 84 85void gameover() { 86 background(255, 255, 0); 87 88 push(); 89 textAlign(CENTER, CENTER); 90 text("TIME OVER\nYOUR SCORE " + score, 0, 0, width, height); 91 92 if (frameCount % 60 < 30) { 93 textSize(44); 94 text("Mouse Click to Title", 0, height / 2, width, height / 2); 95 } 96 pop(); 97} 98 99void mouseClicked() { 100 switch(scene) { 101 case TITLE: 102 scene = Scene.PLAY; // ゲーム画面に遷移 103 startMS = millis(); // ゲーム開始時間記録 104 break; 105 case GAMEOVER: 106 scene = Scene.TITLE; // タイトル画面に遷移 107 countDown = 0; // 変数再初期化 108 score = 0; 109 // FCircleだけを取り除くのはそこそこ面倒なので、FWorldごと作り直し(雑いw 110 world = new FWorld(); 111 world.setEdges(); 112 world.setGravity(0, 0); 113 break; 114 } 115} 116 117void mousePressed() { 118 FBody body = world.getBody(mouseX, mouseY); 119 if(body == null) return; 120 121 String name = body.getName(); 122 if ("aaa".equals(name)) { 123 world.remove(body); 124 score += 500; 125 } 126 if ("bbb".equals(name)) { 127 world.remove(body); 128 score += 300; 129 } 130} 131 132void add() { 133 FBody body; 134 135 if (1 < random(2)) { 136 body = new FCircle(135); // (丸い当たり判定) 137 body.attachImage(photo1); 138 body.setName("aaa"); // 区別できればなんでもいい 139 } else { 140 body = new FBox(95, 95); // (四角い当たり判定) 141 body.attachImage(photo2); 142 body.setName("bbb"); 143 } 144 145 float x = random(width - 100) + 50; 146 float y = random(height - 100) + 50; 147 body.setPosition(x, y); 148 149 PVector p = PVector.random2D().mult(10000); 150 body.addForce(p.x, p.y); 151 body.setDamping(0); 152 body.setDensity(0.2); 153 body.setFriction(0); 154 body.setRestitution(1); 155 body.setStroke(1); 156 157 world.add(body); 158}

投稿2022/09/18 10:06

編集2022/09/30 09:51
TN8001

総合スコア9319

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

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

claus__

2022/09/18 11:10

ご丁寧にありがとうございます。私は現在高校2年生なのですが、来月半ばに文化祭が控えており、その出し物としてこのゲームを作っていて、図書館で本を借りて勉強していましたが、(受験勉強も考えると)このペースでは独学では間に合わないと感じ皆様のお力をお借りした次第でございます。 とりあえず今はいただいた回答を読んで作業に戻りたいと思います。また疑問点や進捗がありましたら報告させていただきます。 わざわざ本当にありがとうございます。
TN8001

2022/09/18 13:10

了解しました。納期が迫っているわけですね^^; 場合によっては方針転換する必要もあるかもしれませんね(大いに参考にできる類のゲームにする等) [processing ゲーム - Google 検索](https://www.google.com/search?q=processing+%E3%82%B2%E3%83%BC%E3%83%A0&lr=lang_ja) > また疑問点や進捗がありましたら報告させていただきます。 回答コードに対する疑問はお気軽にコメントください^^ わたしはFisicaが好きなのですが、なぜか質問者受けが悪いですね^^; 福笑い [processingで図形を選択して動かす方法](https://teratail.com/questions/318539) ブロック崩し [proccesingでブロック崩しを作っていたところブロックが表示されなくなった](https://teratail.com/questions/304568)
claus__

2022/09/18 14:04

こんばんは、進捗報告をいたします。 まず制限時間の概念を設け、試験用として15秒でゲームが終了するようにしました。 いま壁に当たっているのは、スコアの加算方法についてです。円を消すとスコアがもらえるようにしたいのですが、どのようなプログラムを書けばいいのか全く分からなくなってしまっている状況です。 また、円が現れる頻度を調整するためにはどこを変えればいいのでしょうか。 現在のコードがこちらです。 ↓ import fisica.*; FWorld world; color bodyColor = #155AAD; color hoverColor = #55AA11; int timeLimit = 15; int countDown; void setup() { fullScreen(); Fisica.init(this); world = new FWorld(); textSize(90); } void draw() { background(255); int ms = millis()/1000; //制限時間 println(ms); countDown = timeLimit - ms; if(countDown > 0){ if(countDown <= 10){ text("COUNT DOWN :"+countDown,100,100); } } else{ background(255,255,0); text("TIME OVER" , 300, 400); return; } if (frameCount % 150 == 1) { add(); } for (Object body : world.getBodies()) { ((FBody)body).setFillColor(bodyColor); } FBody hovered = world.getBody(mouseX, mouseY); if (hovered != null) { hovered.setFillColor(hoverColor); } world.step(); world.draw(); } void mousePressed() { FBody body = world.getBody(mouseX, mouseY); if (body instanceof FCircle) { world.remove(body); } } void add() { FCircle circle = new FCircle(50); float x = random(width - 100) + 50; float y = random(height - 100) + 50; circle.setPosition(x, y); circle.setFillColor(bodyColor); circle.setStatic(true); // 以下をコメント解除すると丸が動き回るハードモードだぞ! PVector p = PVector.random2D().mult(10000); circle.addForce(p.x, p.y); circle.setDamping(0); circle.setDensity(0.2); circle.setFriction(0); circle.setRestitution(1); circle.setStatic(false); world.setEdges(); world.setGravity(0, 0); world.add(circle); }
TN8001

2022/09/18 14:25

> 円を消すとスコアがもらえるようにしたい スコア変数を用意し丸を消すところ(world.remove(body))でスコアを増やします。 もちろんスコアの表示も必要です。 > また、円が現れる頻度を調整するためにはどこを変えればいいのでしょうか。 if (frameCount % 150 == 1) { ここの150を小さくすると頻度が上がります。 frameCountは1秒で60進みます。 frameCount % 60とすれば1秒にいっこで、% 30とすれば 0.5秒にいっこです。 いまは2.5秒にいっこということです。 回答を更新しておきました。
claus__

2022/09/23 02:11

ありがとうございます!! ちょっとだけプログラムを書き換え、的については画像をインポートしました。 またスコアは500点単位にしたのですが、 タイトル画面をつくり、ゲーム終了後はタイトル画面に戻るプログラムってどうやるんでしょうか... 丸投げになってしまい本当に申し訳ありません... 現在のプログラムは以下の通りです。 import fisica.*; FWorld world; color bodyColor = #155AAD; color hoverColor = #55AA11; int timeLimit = 15; int countDown; int score; void setup() { fullScreen(); Fisica.init(this); world = new FWorld(); world.setEdges(); world.setGravity(0, 0); textSize(90); } void draw() { background(255); fill(0); text("SCORE:" + score, width - 600, 100); int ms = millis() / 1000; //制限時間 println(ms); countDown = timeLimit - ms; if (countDown > 0) { if (countDown <= 10) { text("COUNT DOWN :" + countDown, 100, 100); } } else { background(255, 255, 0); text("TIME OVER", 300, 400); text("YOUR SCORE " + score, 960, 540); return; } if (frameCount % 60 == 1) { add(); } for (Object body : world.getBodies()) { ((FBody)body).setFillColor(bodyColor); } FBody hovered = world.getBody(mouseX, mouseY); if (hovered != null) { hovered.setFillColor(hoverColor); } world.step(); world.draw(); } void mousePressed() { FBody body = world.getBody(mouseX, mouseY); if (body instanceof FCircle) { world.remove(body); score+= 500; } } void add() { FCircle circle = new FCircle(135); PImage photo;//画像を読み込むオブジェクト photo = loadImage("2.png");//画層ファイルを読み込む circle.attachImage(photo);//四角形に画像を貼り付ける。 float x = random(width - 100) + 50; float y = random(height - 100) + 50; circle.setPosition(x, y); circle.setFillColor(bodyColor); PVector p = PVector.random2D().mult(10000); circle.addForce(p.x, p.y); circle.setDamping(0); circle.setDensity(0.2); circle.setFriction(0); circle.setRestitution(1); world.add(circle); }
TN8001

2022/09/23 07:19 編集

(コメントがあったことの)通知が来ないですね^^; > タイトル画面をつくり、ゲーム終了後はタイトル画面に戻るプログラムってどうやるんでしょうか... よくあるのはintやenumで、現在の画面を覚えておくような方法です。 [画面遷移機能 タイトル画面作り方](https://teratail.com/questions/paygxz3s5oq2ly) その際は(ゲームに使った)変数の再初期化をする必要があります。 drawが長くなると見づらいので、関数に分けたほうがいいでしょう。 回答をさらに更新しておきました。 1秒にいっこ増やすよりも「消したら次が出る」ほうが、より(腕前の)差が出ませんかね?(あるいは両方の組み合わせ)
claus__

2022/09/26 07:37

確かにその通りですね!そっちのほうが面白そうです! 最後の仕上げとして、このゲームまでのストーリーをMP4の動画で流したいです。 タイトル画面をクリックすると動画が再生される仕組みにしたいのですが、クリックするとフリーズしてしまいます。 現在のコードは以下の通りです。(ライブラリからMP4再生のソフト?はダウンロードし、dataフォルダにも該当の動画が入っているのですが... また、コントローラーとしてArduinono のためのプログラムも入れているのですがあまり気にしないでください) import fisica.*; import processing.serial.*; import ddf.minim.*; //minimライブラリのインポート import processing.video.*; //videoライブラリの読み込み Movie mv; //Movie変数を宣言しmovと名付ける Minim minim; //Minim型変数であるminimの宣言 AudioPlayer player; //サウンドデータ格納用の変数 AudioPlayer at; AudioPlayer da; AudioPlayer ha; Serial myPort; int x=0; int y=0; int z=0; int c; int k=0; int mvt = 0; FWorld world; int timeLimit = 80; int startMS; // ゲーム開始時間 int countDown; int score; PImage photo; PImage photo2; int teat=10; int teatk=10; int mvc = 0; Scene scene = Scene.TITLE; // 現在の画面 enum Scene { // 画面を表すenum TITLE, MVE, PLAY, GAMEOVER, } void setup() { fullScreen(); background(255, 255, 0); fill(0); textSize(90); minim = new Minim(this); //初期化 player = minim.loadFile("toy.mp3"); //button01a.mp3をロードする at = minim.loadFile("attack1.mp3"); da = minim.loadFile("damage7.mp3"); ha = minim.loadFile("clapping_short.mp3"); player.play(); //再生 mv = new Movie(this, "11.mp4"); Fisica.init(this); world = new FWorld(); world.setEdges(); world.setGravity(0, 0); // 画像読み込みは初回1回でよい(同じ画像を使いまわす) photo = loadImage("2.png"); photo2 = loadImage("5.png"); myPort=new Serial(this,"COM7",9600); //3D図形の塗りは無し(ワイヤーフレーム描画) //念のためバッファ領域を空にする myPort.clear(); //とりあえず65という合図用データを送る myPort.write(65); } //photo = loadImage("https://www.gravatar.com/avatar/65adad388f02d47ab7fb7e48579efe41?d=identicon", "png"); void draw() { switch(scene) { case TITLE: title(); break; case MVE: mve(); break; case PLAY: play(); break; case GAMEOVER: gameover(); break; } image(mv, 0, 0); } void stop(){ player.close(); //サウンドデータを終了 minim.stop(); super.stop(); } void title() { background(255, 255, 0); push(); // textAlignやtextSizeの変更がほかに影響しないように、push popで閉じ込める textAlign(CENTER, CENTER); // センタリング text("TOY STOLEN MANIA", 0, 0, width, height); // 画面中央 if (frameCount % 60 < 30) { // 点滅 textSize(44); text("Mouse Click to Play", 0, height / 2, width, height / 2); // 画面下半分中央 } pop(); } void mve() { mv.play(); if( mvt == 60){ mv.noLoop(); scene = Scene.PLAY; startMS = millis(); // ゲーム開始時間記録 myPort.clear(); //とりあえず65という合図用データを送る myPort.write(65); background(0); } mvt++; } void play() { background(255); text("SCORE:" + score, width - 600, 100); int ms = (millis() - startMS) / 1000; // 開始時間を引く countDown = timeLimit - ms; if (countDown <= 0) { scene = Scene.GAMEOVER; // 結果画面に遷移 ha.play(); //再生 ha.rewind(); //再生が終わったら巻き戻しておく } if (countDown <= 10) { text("COUNT DOWN :" + countDown, 100, 100); } if (frameCount % 60 == 1) { add(); } world.step(); world.draw(); image(photo2,x*10-25,y*4-25); if(z==1){ teat++; } if(teat >= teatk){ if(z == 0){ at.play(); //再生 at.rewind(); //再生が終わったら巻き戻しておく FBody body = world.getBody(x*10-25, y*4-25); if (body instanceof FCircle) { da.play(); //再生 da.rewind(); //再生が終わったら巻き戻しておく world.remove(body); score += 500; teat =0; } } } } void gameover() { background(255, 255, 0); player.rewind(); //再生が終わったら巻き戻しておく push(); textAlign(CENTER, CENTER); text("TIME OVER\nYOUR SCORE " + score, 0, 0, width, height); if (frameCount % 60 < 30) { textSize(44); text("Mouse Click to Title", 0, height / 2, width, height / 2); } pop(); } void mouseClicked() { switch(scene) { case TITLE: startMS = millis(); // ゲーム開始時間記録 myPort.clear(); //とりあえず65という合図用データを送る myPort.write(65); background(255); player.play(); //再生 scene = Scene.MVE; // ゲーム画面に遷移 break; case GAMEOVER: scene = Scene.TITLE; // タイトル画面に遷移 countDown = 0; // 変数再初期化 score = 0; // FCircleだけを取り除くのはそこそこ面倒なので、FWorldごと作り直し(雑いw world = new FWorld(); world.setEdges(); world.setGravity(0, 0); break; } } void mousePressed() { myPort.clear(); //とりあえず65という合図用データを送る myPort.write(65); FBody body = world.getBody(mouseX, mouseY); if (body instanceof FCircle) { world.remove(body); score += 500; } } void add() { FCircle circle = new FCircle(135); circle.attachImage(photo); float x = random(width - 100) + 50; float y = random(height - 100) + 50; circle.setPosition(x, y); PVector p = PVector.random2D().mult(10000); circle.addForce(p.x, p.y); circle.setDamping(0); circle.setDensity(0.2); circle.setFriction(0); circle.setRestitution(1); world.add(circle); } void movieEvent(Movie m) { m.read(); } void serialEvent(Serial p){ //Arduinoから送られてきたデータが //3個(2より多い)の場合 if(myPort.available()>2){ //x,y,zの順番でデータを読み込む x=myPort.read(); y=myPort.read(); z=myPort.read(); //読み込み後、合図データ送信 myPort.write(65); println(z); } }
TN8001

2022/09/26 11:23

> タイトル画面をクリックすると動画が再生される仕組みにしたい タイトル>動画>ゲームということですかね? 1. image(mv, 0, 0); はmve()の中にあるべきでしょう。 2. mv.play(); は再生したいタイミングで1回だけ呼びます。 3. if( mvt == 60){ では1秒で遷移する(けどいいの?) 4. mv.noLoop(); ではすぐには止まらない(最後まで再生してから止まる) void draw() { switch(scene) { case TITLE: title(); break; case MVE: mve(); break; case PLAY: play(); break; case GAMEOVER: gameover(); break; } } void mve() { image(mv, 0, 0); if (mvt == 60) { // 60だと1秒だがいいのか?? mv.stop(); scene = Scene.PLAY; startMS = millis(); } mvt++; } void mouseClicked() { switch(scene) { case TITLE: scene = Scene.MVE; mv.play(); break; case GAMEOVER: //省略 break; } } それともゲーム中も動画が流れる想定?(だと全く外した回答になるが^^; > クリックするとフリーズしてしまいます。 > ライブラリからMP4再生のソフト?はダウンロードし、dataフォルダにも該当の動画が入っているのですが... 「フリーズ」はちょっと確認できませんでした。 もしこのような最小例すら(該当動画で)動かないのであれば、別の質問として投稿してください。 [Movie / Reference / Processing.org](https://processing.org/reference/libraries/video/Movie.html)
claus__

2022/09/30 01:49

友人のPCではちゃんと動くんですけどね…ちょっと調べてもよくわからなかったのでそれは一旦置いておき、的の種類を追加するのはどのようなプログラムにすればよいのでしょうか。 他の形の図形もでてくるようにして、的の種類ごとにスコアを変えたいのですが、自分には難しかったみたいです。 本当に頼りっぱなしで申し訳ございません。 完成後はベストアンサーに致します。
TN8001

2022/09/30 09:52

> 友人のPCではちゃんと動くんですけどね これは何に掛かっているのですか? 「MP4再生」の話ですか?「フリーズ」の話ですか? > 他の形の図形もでてくるようにして、的の種類ごとにスコアを変えたい add()するときにランダム?で、図形を選ぶようにすればいいでしょう。 それぞれを区別するには、setName・getNameが使えます。 [setName / FBody (Javadocs: fisica)](http://www.ricardmarxer.com/fisica/reference/fisica/FBody.html#setName(java.lang.String)) [getName / FBody (Javadocs: fisica)](http://www.ricardmarxer.com/fisica/reference/fisica/FBody.html#getName()) > 完成後はベストアンサーに致します。 ↑ができたら完成ということでいいんでしょうか? fisicaを持ち出したのは私ですから使い方等の説明はさせていただきますが、あまりだらだら続くのもどうかと感じています(コメントの通知が来ないのが特にだるいw 回答を更新しておきました。
guest

0

Processing

1float x = 0; 2float tx = x - 50; 3 4x=100; 5println(tx);

としたらなにが表示されると思いますか?

tx = x - 50;(代入と初期化は微妙にちがうけどとりあえず話に関係ない)
というのは、プログラム上その場所に到達したとき xの値から50を減じた結果をtxに設定する
というだけの意味で、以降txを参照するごとに参照したときのxの値から50を引くわけではありません。

それと、原則としてdraw()が(デフォルトでは)毎秒60回実行される、という動作を阻害するようなことはしないほうがベターです。つまり、draw()の中でdelay(2500);などとしてそこに2.5秒間もとどまるべきではありません。

投稿2022/09/18 05:57

thkana

総合スコア7639

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問