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

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

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

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

Q&A

解決済

1回答

345閲覧

ピンポンゲームのラケットが伸縮してしまう

AzukiV

総合スコア15

Processing

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

0グッド

0クリップ

投稿2018/06/02 14:18

編集2018/06/02 14:44

ピンポンゲームを製作しているのですがラケットの大きさが変わってしまいます。どこが間違っているのか見当もつきません。
実行はされます。

float

1float racky; 2float rackw;//ラケットの幅 3float rackh; 4 5float ballx;//ボールのx座標  6float bally; 7float dx; //ボールのx軸の速度 8float dy;//ボールのy軸の速度 9float balls; //ボールのサイズ 10 11 12void setup() { 13 size(500,500); 14 15 rackw = 80; 16 rackh = 10; 17 rackx =width/2-rackw/2; 18 racky =height-50; 19 20 balls = 30; 21 ballx = width/2; 22 bally = 100; 23 dx = 3; 24 dy = 4; 25} 26 27void draw(){ 28 background(255,255,255); 29 30if(keyPressed && keyCode==LEFT){ 31 rackx -= 6;} 32 33 34if(keyPressed && keyCode == RIGHT){ 35 rackx += 6;} 36 37 ballx += dx; 38 bally += dy; 39 40if(ballx-balls/2<0 || ballx+balls/2>width){ 41 dx = -dx;} 42 43if(bally-balls/2<0){ 44 dy = -dy;} 45 46if(bally>height+200) 47{ 48 exit();} 49 50if(racky<bally+balls/2 && racky+rackh/2>bally+balls/2){ 51 if(rackx<ballx+balls/2 && rackx+rackw>ballx-balls/2){ 52 dy = -dy;}} 53 54 noFill(); 55 stroke(0); 56 rect(rackx,racky,rackx,rackh); 57 58 noFill(); 59 stroke(0); 60 ellipse(ballx,bally,balls,balls);}

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

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

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

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

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

guest

回答1

0

ベストアンサー

ピンポンゲームを製作しているのですがラケットの大きさが変わってしまいます。

デバック方法がわからないみたいなので、答えの前に考え方を。
デバック手法はいろいろな方法がありますが、基本的な考え方はどれも同じです。

1,原因の仮説を立てる
2,立てた仮説を検証する。
→YES 原因を修正する。
→NO 1に戻って別の仮説を立てる。

>ラケットの大きさが変わってしまう
どういう条件のときに、ラケットの大きさが変わるのか。
これはプログラムを実行しながら、条件をメモ帳に纏めると良いです。

そうすると条件はラケットを左右に動かした時になります。
ということはラケットを左右に動かした時に変数の値が変わるものが原因では?
という仮説が立てれます。
この仮説が正しいかどうか、ラケットを左右に動かした時にどの変数が変わっているのかを見ればよいです。
それはdraw関数の以下の行です。

Java

1if(keyPressed && keyCode==LEFT){ 2 rackx -= 6; 3} 4if(keyPressed && keyCode == RIGHT){ 5 rackx += 6; 6}

変数:rackxです。

よって原因はdraw関数の以下の行です。

Java

1rect(rackx,racky,rackx,rackh);

Java

1rect(rackx, racky, rackw, rackh);

質問するときは、質問するときのヒントのページを良く読んでくださいな。
あとプログラムは回答者が見やすいように、適切なインデント(字下げ)を行ってくださいな。

投稿2018/06/02 22:00

編集2018/06/02 22:11
umyu

総合スコア5846

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

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

AzukiV

2018/06/03 05:12

デバックの方法を教えてくださり、ありがとうございます。 よく見ればわかることでした。すみません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問