

ボールを動かすコードはわかるのですが、跳ね返るようにする方法がわかりません。  
お力添えをお願い致します。

以下ボールを動かすコードです。

[code]

    float x;
    int velocityX=1;
    
    void setup(){
    size(400,300);
    x=0;
    }
    
    void draw(){
    background(0);
    x += velocityX;
    fill(255,255,50);
    ellipse(x,height/2,20,20);
    }
    
[/code]


CC BY-SA 4.0
2020-07-07T16:40:45.733
68379
2020-07-08T13:07:06.683
2020-07-08T13:07:06.683
40998
40923
question
processing
processingで動くボールが跳ね返るようにしたい


まず、私は日本語が話せないことを指摘したいと思います。これが私の最初の答えです。私はGoogle翻訳を使用したので、誤って誰かに知らせてしまった場合は謝罪してください:)

ボールが壁に当たったかどうか（左または右）を確認する必要があります。当たった場合は、速度を正（増加）から負（減少）に変更します。

コードでは、次の要素が必要です。  
-[状態の場合](https://translate.google.com/translate?hl=en&sl=en&tl=ja&u=https%3A%2F%2Fprocessing.org%2Freference%2Fif.html)  
-[または論理演算子](https://translate.google.com/translate?hl=en&sl=en&tl=ja&u=https%3A%2F%2Fprocessing.org%2Freference%2F)  
-[乗算演算子](https://translate.google.com/translate?hl=en&sl=en&tl=ja&u=https%3A%2F%2Fprocessing.org%2Freference%2F)

上記の単語を疑似コードに翻訳する：

ボールのx位置が右壁（スケッチ幅）より大きいか、ボールのx位置が左壁（0）より小さい場合、速度は符号を反転する必要があります（正から負、逆も同様）。

擬似コードをコードに変換する：

[code]

    //ボールのx位置が右壁または左壁より大きい場合（0）
    if(x > width || x < 0){
       //方向を反転（速度）（+1 * -1 = -1、-1 * -1 = +1）
      velocityX = velocityX * -1;
    }
    
    
    
    velocityX = velocityX * -1; 
    
[/code]

より簡潔に書くことができます

[code]

    velocityX *= -1;
    
[/code]

上記をコードに追加します。

[code]

    float x;
    int velocityX=1;
    
    void setup() {
      size(400, 300);
      x=0;
    }
    
    void draw() {
      background(0);
    
      x += velocityX;
    
      if (x > width || x < 0) {
        velocityX *= -1;
      }
    
      fill(255, 255, 50);
      ellipse(x, height/2, 20, 20);
    }
    
[/code]

閉会の挨拶：

-私はコードを整然とフォーマットしておくことをお勧めします（Ctrl + T / CMD + T）：読みやすく、平均してコードを書くよりも読むのに多くの時間を費やします。  
-必ず処理チュートリアルを確認してください：[バウンド](https://translate.google.com/translate?hl=en&sl=en&tl=ja&u=https%3A%2F%2Fprocessing.org%2Fexamples%2Fbounce.html)、[バウンドボール](https://translate.google.com/translate?hl=en&sl=en&tl=ja&u=https%3A%2F%2Fprocessing.org%2Fexamples%2Fbouncingball.html)  
-[Daniel Shiffmanのyoutubeビデオ](https://www.youtube.com/watch?v=YIKRXl3wH8Y)をご覧ください。英語ですが、クローズドキャプション（CC）>自動翻訳>日本語オプションが役立つことを願っています。翻訳は完璧ではありませんが、うまくいけば視覚的な説明が理にかなっています。


CC BY-SA 4.0
2020-07-08T12:00:38.627
68411
2020-07-08T12:00:38.627
40998
68379
answer