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

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

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

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

Q&A

解決済

1回答

1322閲覧

以下のコードをボールを動かすときに、キーボード操作に変更、ボールの速度を早くする。また往復運動ではなく、一方方向の運動にしたい

退会済みユーザー

退会済みユーザー

総合スコア0

Processing

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

0グッド

0クリップ

投稿2021/12/02 01:34

今、ボールのゲームを作成中なのですが、
以下のコードでやったら、マウスでの操作、速度がゆっくりかつ往復運動となってしまいました。

int x, y, dx, dy;

void setup() {
size( 500, 500 );
x = width / 2; y = height / 10;
dx = 0; dy = 0;
}

void draw() {
background( 255 );
noStroke();
fill( 111, 183, 255 );
ellipse( x, y, 50, 50 );
x += dx; y += dy;
if( x <= 25 || x >= width -25 ) dx = -dx;
if( y <= 25 || y >= height - 25 ) dy = -dy;
}

void mousePressed() {
switch( mouseButton ) {
case LEFT:
dy = 5;
break;
}
}

実装したいことは、キーボード操作に変更、ボールの速度を早くする、往復運動ではなく、一方方向の運動です。
よろしくお願いします。

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

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

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

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

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

1T2R3M4

2021/12/02 02:26

>よろしくお願いします。 何をよろしくお願いしているのですか。
guest

回答1

0

ベストアンサー

マウスでの操作、速度がゆっくりかつ往復運動となってしまいました。

そのようにコードが書かれているんですから当たり前ですよね?

キーボード操作に変更、ボールの速度を早くする、往復運動ではなく、一方方向の運動です。

調べたこと・やってみたことを質問に書いてください。
そうでないと「丸投げの質問」と受け取られてしまいます。
推奨していない質問|teratail(テラテイル)
質問するときのヒント|teratail(テラテイル)

エラーになっていてもいいんです。
s200034さんがどう考えていて何がわからないのかが、そこから読み取れます。
本人が書いたのかも不明なコードだけでは、どこまではわかっているのかすら判断できません。


Processing

1int x, y, dx, dy; 2 3void setup() { 4 size(500, 500); 5 6 x = width / 2; 7 y = height / 10; 8 //dx = 0; 9 //dy = 0; 10} 11 12void draw() { 13 background(255); 14 noStroke(); 15 16 fill(111, 183, 255); 17 ellipse(x, y, 50, 50); 18 19 x += dx; // いまのところdxはずっと0なので無意味 20 21 // yをdx分増やす。dyが1以上なら下に下がるし、大きいほど当然早くなる 22 y += dy; 23 24 //if (x <= 25 || x >= width - 25) dx = -dx; 25 //if (y <= 25 || y >= height - 25) dy = -dy; 26 27 // 円の中心が(画面高さ+円の半径)を超えた = 画面下に円が消えた 28 if (y > height + 25) y = -25; // 円を上にワープ 29 30 // 円の中心が(0-円の半径)を超えた = 画面上に円が消えた 31 if (y < -25) y = height + 25; // 円を下にワープ 32} 33 34void keyPressed() { 35 // 文字が出るようなキーはkeyで判定 36 switch (key) { 37 case ' ': // スペース 38 dy = 10; // 1フレームで円が動く移動量 39 break; 40 41 // アルファベットは、大文字小文字両方指定したほうが安心(CapsLockしていてもいいように) 42 case 'N': 43 case 'n': 44 dy = 5; 45 break; 46 } 47 48 // 文字が出ないようなキーはkeyCodeで判定 49 switch (keyCode) { 50 case UP: // 上矢印 51 dy = -10; 52 break; 53 } 54} 55 56//void mousePressed() { 57// switch (mouseButton) { 58// case LEFT: 59// dy = 5; 60// break; 61// } 62//}

keyPressed() / Reference / Processing.org
key / Reference / Processing.org
keyCode / Reference / Processing.org

わからない点があればコメントしてください^^


詰め込みすぎたので最低限のコード

Processing

1int y = 50; 2int dy = 0; 3 4void setup() { 5 size(500, 500); 6} 7 8void draw() { 9 background(255); 10 11 noStroke(); 12 fill(111, 183, 255); 13 ellipse(250, y, 50, 50); 14 15 y += dy; 16} 17 18void keyPressed() { 19 dy = 10; 20}

投稿2021/12/06 08:28

編集2021/12/08 02:44
TN8001

総合スコア9401

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

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

退会済みユーザー

退会済みユーザー

2021/12/08 00:47

うまく実行できました。ありがとうございます。 これを4球のみ、1球転がしたら休憩する場合、if文かfor文だと思うのですが、 どうしたらよろしいでしょうか?
TN8001

2021/12/08 02:42 編集

> 往復運動ではなく、一方方向の運動にしたい これをわたしは落ちっぱなしだったらすぐ終わってしまうので、また上から次の球が(同じ球がワープしているのですが)落ちてくると解釈したのですが、本当は落ちっぱなしでよかったってことですか?? そのうえ速くしたらそれこそ一瞬で終わって(何の動きもなくつまらなくなって)しまいますが。。。 > これを4球のみ、1球転がしたら休憩する 「休憩する」とはどういう意味ですか? 1. キーを押すまで次の球が落ちてこない 2. 次の球がすぐ出るのでなく、〇秒くらい間隔をあける 3. 何かその他 1.なら キーを押したときに、ワープするようにします。 2.なら ワープさせる場所を、もっと上にします(落ちてくるまでの時間が稼げる) 「4球のみ」にするのは、「休憩する」ができてからでいいでしょう。 > if文かfor文だと思うのですが、どうしたらよろしいでしょうか? そりゃ大体そうでしょうけど^^; 提示コードや回答コードを、他人に説明できますか? 回答コードはちょっと詰め込みすぎたので、1回だけ落ちる版に書き直しましょうか?(それならずっと短くなります) * なんでマウス(キー)を押すと、球が動き出すのか * 1行ずつ何をしているのか わからないところがあっても別に構いませんが、「どこまでわかっていて何がわからない」かがはっきりしないと説明できません。
退会済みユーザー

退会済みユーザー

2021/12/08 14:02

説明不足ですみません。 一球転がり、端に行ったら右側のレーンから反対方向に向かってボールが転がってくるという意味です。
TN8001

2021/12/08 14:36

> 一球転がり、端に行ったら右側のレーンから反対方向に向かってボールが転がってくるという意味です。 私はあなたではありません。あなたには自明なのかもしれませんが、あなた以外の人間は書いてあることしかわからないのです。 急に出てきましたが「レーン」とはなんですか? もしかしてボウリングゲームかなんかを作ろうとしているのでしょうか? > 提示コードや回答コードを、他人に説明できますか? これへの返答がありませんが、どうなんでしょうか? たまにいらっしゃるのですが、肝心なところには答えずに自分の欲しい情報(課題の答え)を引き出そうという人がいます。 勉強のお手伝い(わからないところの説明等)はいくらでもしますが、カンニングのほう助(丸々答えを書く)をする気はありません。 teratailは例えば * こういうコードを書いたが思った動きと違う * ○○関数の使い方がわからない * エラー文の意味や直し方がが分からない というようなプログラミング中の問題を解決するサイトであって、宿題を代わりにやるサイトでも希望通りのプログラムを作ってあげるサイトでもありません!
TN8001

2021/12/09 13:21

Processingはアマチュア向け言語だから、相当優しめに言ってるのに退会か。 もうわけわからんな
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問