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

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

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

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

解決済

Processingの課題がわかりません。

Processing
Processing

総合スコア1

Processing

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

1回答

-4評価

1クリップ

292閲覧

投稿2022/05/21 16:40

編集2022/05/29 17:36

Processing3.5.4です。
 簡便な玉当てゲームを作成
 基本的な動作
 実行すると、ウィンドウ内に動くボール(円)とバーがある
 ボールがウィンドウの下側へ出たら(消えれば)、ウィンドウ内の
再スタート用の位置から、再び動き始める
 バーがウィンドウの下の壁に沿うようにあり、マウスの操作で左右
に動くようにする
 マウスの動作による限界は、そのまま許容(バーの左端の位置など)
 ボールがバーの上部に当たれば、ボールを上へ跳ね返す
 得点は開始時において0点とする
 ボールがバーに当たれば +1点
 ボールがウィンドウの下へ出れば(バーで打ち返せず消えれば)-1点
 停止ボタンで終了
これを次のような条件で作らなければいけません。
(1) ウィンドウサイズは横480ピクセル、縦480ピクセルとする。
(2) 動く円(ボールとも記述)の動作における開始位置について、x座標100ピクセル、
y座標240ピクセルとする。※ボールの色は任意に変更して可
(3) 速度に関する変数の値について、横方向2、縦方向3とする。
(4) 左右の壁に当たった場合、横方向の向きを変え、上の壁に当たった場合、縦方
向の向きを変えるとする。
(5)マウスで操作可能な横棒(以下バーと記述する)をlineメソッドを用いて、下の壁に
描画する。バーの左の端のx座標の位置をマウスのx座標の位置とする。またバーの
横幅は100ピクセルとする。strokeCapメソッドの利用については任意とする。
(6) 前面・背面の関係において、ボールはバーより前面とする。また得点の表示は
ボールより前面とする。
(7) バーの太さは30ピクセルとする。今回の題材ではウィンドウの下側の境界線上に
線を描画しているので、実際に目に見えるのは、半分の15ピクセルであるとする。
(8) 上から下へ動くボールにバーの上部が当たると、縦方向の向きを変えて跳ね返る
ようにする。
(9) バーの横側(左右)にボールが衝突した場合については、簡単のため扱わない。
(10) マウスのクリックにより、何らかの変化をもたらす。
(11) 得点を右上に表示させる。文字の大きさや位置は、任意に変更しても可。
この条件の(1)から(4)までは出来ました。

/* *ball6_4 *簡単な玉当てゲームの準備 */ float bx = 100, by = 240; //ball_x,ball_y,(ボールのとして利用する)円の中心のx座標とy座標の値 float diameter = 30;// float vx = 2, vy = 3; float restartX = 240, restartY = 15; //再スタートの際のボールの位置 /* adjustment_parameter ,調節用パラメータ、壁やバーへのめり込み防止に用いる値、 動作を確認しながら値を調節*/ float ap = 0.5; int score = 0; //得点 void setup() { size(480,480); textSize(32);//表示させる得点の文字の大きさ } void draw() { background(204); //再スタート処理 if (bx < 0 || width < bx || by < 0 || height < by ) { bx = restartX; by = restartY; } // (ボールとして利用する)円 fill(0,255,0); ellipse(bx,by,diameter,diameter); //ボールが右の壁に当たると、横方向の向きを変える if (bx + diameter / 2 > width){ vx = -vx; bx = width - diameter / 2 - ap; //念のため壁の内側にボールの中心を戻しておく } //ボールが左の壁に当たると、横方向の向きを変える if (bx - diameter / 2 < 0){ vx = -vx; bx = diameter / 2 + ap; //念のため壁の内側にボールの中心を戻しておく } //ボールが上の壁に当たると、縦方向の向きを変える if (by - diameter / 2 < 0){ vy = -vy; by = diameter/ 2 + ap; //念のため壁の内側にボールの中心を戻しておく } // (ボールとして利用する)円の位置の変化 bx += vx; by += vy; //ボールの中心のy座標が下の壁を越えればスコア(得点)を1減らす if (height < by) { score -= 1; // score = score -1; } //得点の表示 fill(255,255,255); text("Score: "+score,300,60); // 横300ピクセル、縦60ピクセルの位置に得点を表示 }

(5)から(11)までが出来ません。
続きを教えてください。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

y_waiwai

2022/05/21 21:05

このままではコードが読みづらいので、質問を編集し、</>(コードの挿入)ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
hoshi-takanori

2022/05/21 21:13

課題は自分でやるべきだと思いますが、とりあえず (5) は、まずバーの位置を表す変数を用意して、mouseMoved メソッドでマウスが動いたらバーの位置を更新すれば良いのでは。 あと、コードを貼るときは markdown 機能を使ってください。 https://teratail.com/help/question-tips#questionTips35

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Processing

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