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

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

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

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

Q&A

1回答

1006閲覧

色々なコードの書き方

rhuff

総合スコア0

Processing

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

0グッド

0クリップ

投稿2021/11/11 08:53

作ったコードの違うやり方

processingで簡単なゲームを作っているのですが、勉強のためにいろんなやり方を習得したいと思いました。
このゲームのもっと簡単なやり方や、あるいは難しいやり方など教えていただきたいです。

該当のソースコード

float ball_x, ball_y, ball_r;
float speed_x, speed_y;
float bar_w = 100, bar_h = 30;
PImage img;

void setup() {
size(500, 500);
img=loadImage("S__187596802.jpg");
ball_x = 250;
ball_y = 250;
ball_r = 50;
speed_x = 2;
speed_y = -2;
}

void draw() {
background(255);
circle(ball_x, ball_y, ball_r);
ball_x += speed_x;
ball_y += speed_y;

if (ball_x+ball_r/2 > width) speed_x *= -1;
if (ball_x-ball_r/2 < 0) speed_x *= -1;
if (ball_y - ball_r/2 <0) speed_y *= -1;
image(img,mouseX,mouseY);

if ((ball_x + ball_r/2 > mouseX && ball_x - ball_r/2 < mouseX+bar_w)
&&(mouseY < ball_y + ball_r/2 && ball_y + ball_r/2 < mouseY+bar_h)) {
speed_y *= -1;
}

}

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

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

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

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

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

guest

回答1

0

processingで簡単なゲームを作っているのですが、勉強のためにいろんなやり方を習得したいと思いました。
このゲームのもっと簡単なやり方や、あるいは難しいやり方など教えていただきたいです。

こういう漠然とした質問は「問題・課題が含まれていない質問」と言われる可能性があります。
問題点・不満点をはっきりさせましょう。
削除申請されたようですが、御覧のように原則通りません。質問を改善してください。


難しいやり方

現状ボールの反射は上辺?だけですので、もっとしっかりした当たり判定にはできそうです。
当たり判定はブロック崩し等で頻出するので、調べればすぐ出てくるはずです。

ボールクラス等を作るのもよさそうです。
クラスになっていればボールを増やしたりするのが楽になります。

あるいは背景をカラフルにするとか見た目部分の改良もあるでしょう。

もちろんブロック崩し等、ギミックが増えれば難しくなっていくでしょう^^;


簡単なやり方

「文字数を減らす」ような意味では、PVectorなどを使えば、多少すっきりすると思います。

「if文(当たり判定のコード)を簡単にしたい」ような意味では、直接は便利関数のようなものはありません。
例えばfisicaのような物理演算ライブラリに、代わりにやってもらうことは可能です(別の意味で難しいかもしれないが^^;

Processing

1import fisica.*; 2 3FWorld world; 4FBox bar; 5 6void setup() { 7 size(500, 500); 8 Fisica.init(this); 9 10 world = new FWorld(); 11 world.setGravity(0, 0); 12 world.setEdges(); 13 14 FCircle ball = new FCircle(50); 15 ball.addForce(10000, -10000); 16 ball.setDamping(0); 17 ball.setDensity(0.2); 18 ball.setPosition(250, 250); 19 ball.setFriction(0); 20 ball.setRestitution(1); 21 world.add(ball); 22 23 bar = new FBox(100, 30); 24 bar.setStatic(true); 25 bar.setFriction(0); 26 bar.setRestitution(1); 27 world.add(bar); 28} 29 30void draw() { 31 background(255); 32 33 bar.setPosition(mouseX, mouseY); 34 world.draw(); 35 world.step(); 36}

導入法や画像の表示は↓を見てください。
Processing - processingで図形を選択して動かす方法|teratail

投稿2021/11/12 09:07

TN8001

総合スコア9401

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問