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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

736閲覧

processingでのボタンでのY座標移動のやり方

arazin12

総合スコア13

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/02/04 10:07

void setup() {
size(500, 300);
}
int w = 0;
int x = 20; // 円の中心のX座標
int vx = 4; // 速度
int y = 80;
int vy = 4;
int d;//長方形のY座標

void draw() {
d = mouseY ;
x += vx;

y += vy;
if (y - 20 < 0 || y + 20 > height) {
vy = -vy;
}
background(204);
ellipse(x, y, 40, 40);
if (x - 20 < 30 || x + 20 > 470) {
if (y > d && y < d + 100)
vx = -vx;
if ((keyPressed ==true) && (key == 'w')){
w = w + 5;
}else
w = w - 1;
}
rect(0, w, 30, 100); //長方形描写
rect(470, mouseY, 30, 100);
}

上記のプログラムで左右二つの長方形を操作して動くボールをラリーするものを作りたいです。右の長方形のY座標をマウス、左の長方形をWキーを押しているかいないかでうごかしたいのですが実行しても左の長方形が固まって動かなかったり長方形が消えたりしてうまくうごきません。右の長方形は正常です。

どうすればスムーズに動くようになりますか?
またrect(0, w, 30, 100)という表記の仕方では左の長方形のY座標を二つのキーに割り当てることは出来ないのでしょうか?
JavaScriptで実行しています。

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

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

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

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

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

guest

回答1

0

ベストアンサー

W押したとき押さなかったときで上下したいとわかったので、こんな感じになるのかなと

※位置更新と描画は分けたほうがわかりやすいです(UpdateとDraw)

Java

1void setup() { 2 size(500, 300); 3} 4int w = 0; 5int x = 20; // 円の中心のX座標 6int vx = 4; // 速度 7int y = 80; 8int vy = 4; 9int d;//長方形のY座標 10 11void update() { 12 // 棒の動き 13 { 14 // 右の棒のY 15 d = mouseY ; 16 17 // 左の棒のY 18 if ((keyPressed ==true) && (key == 'w')){ 19 w = w + 5; 20 } 21 else { 22 w = w - 1; 23 } 24 } 25 26 // ボールの動き 27 x += vx; 28 y += vy; 29 if (y - 20 < 0 || y + 20 > height) { 30 vy = -vy; 31 } 32 33 // 当たり判定 34 // 左の棒(ただしXが棒より左の判定がないので入れてね) 35 if (x - 20 < 30 && vx < 0) { 36 if (y > w && y < w + 100) { 37 vx = -vx; 38 } 39 } 40 // 右の棒(ただしXが棒より右の判定がないので入れてね) 41 else if (x + 20 > 470 && vx > 0) { 42 if (y > d && y < d + 100) { 43 vx = -vx; 44 } 45 } 46} 47 48void draw() { 49 // 移動処理(更新処理) 50 update(); 51 52 background(204); 53 ellipse(x, y, 40, 40); 54 55 rect(0, w, 30, 100); //長方形描写 56 rect(470, d, 30, 100); 57}

投稿2019/02/04 10:27

編集2019/02/05 06:09
rururu3

総合スコア5545

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

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

arazin12

2019/02/04 11:23

void setup() { size(500, 300); } int w = 0; int x = 20; // 円の中心のX座標 int vx = 4; // 速度 int y = 80; int vy = 4; int d;//長方形のY座標 void draw() { background(204); d = mouseY ; x += vx; y += vy; if (y - 20 < 0 || y + 20 > height) { vy = -vy; } ellipse(x, y, 40, 40); if (x - 20 < 30 || x + 20 > 470) { if (y > d && y < d + 100) vx = -vx; if ((keyPressed ==true) && (key == 'w')){ w = w + 5; }else w = w - 5; } rect(0, mouseY, 30, 100); //長方形描写 rect(470, w, 30, 100); } コメントしてもらったところを見て左の長方形をボタンで動かすからダメなのかと思い、右の長方形を動くようにしたのですがそういうことではないんでしょうか。
rururu3

2019/02/05 05:43

質問である、「左の長方形をWキーを押しているかいないかでうごかしたい」 が、Wキーを押してたらどう動いて押してなかったらどう動くかが書かれてないので、そこがわかればもう少し解説しやすくなります。
arazin12

2019/02/05 05:53

なるほどすみません。Wを押したら長方形が下方向に、離したら上方向に上がっていくような形にしたいです。
rururu3

2019/02/05 06:05

回答修正しますね
rururu3

2019/02/05 06:11

あと忘れていたのですが、これJavaScriptではなくJavaなのでタグなど修正しておいたほうがいいです
arazin12

2019/02/05 06:21

わかりやすく教えてくれてありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問