2017-03-07 11 views
0

私はちょうど処理していくつかのJavaを始めて、私はパッドを互いに独立して動かすことができないという問題に遭遇する。ピンポン​​のパッドを2人で独立して移動するにはどうしたらいいですか?

pad1とstart pad2を移動している間は、pad1が停止し、もう一方が周りを回るため、ゲームが速くなったときに2人のプレイヤーが互いに干渉し合います。

パッドをオブジェクトに変えて差をつけようとしましたが、問題自体に何も変更を加えませんでした。コードの終わりは無視することができます。これはforLoopでこれを修正すると思います。

float player_1_x; 
float player_1_y; 
float player_2_x; 
float player_2_y; 
float ball_x; 
float ball_y; 
float ball_vector_x; 
float ball_vector_y; 

int round; 

void setup() { 
    player_1_x = 20; 
    player_1_y = 60; 
    player_2_x = 780; 
    player_2_y = 60; 
    ball_x = 400; 
    ball_y = 300; 
    ball_vector_x = -3; 
    ball_vector_y = 0; 
    round = 0; 
    size(800, 600); 
    rectMode(CENTER); 
} 

void draw() { 
    background(0); 
    rect(ball_x, ball_y, 10, 10); 
    rect(player_2_x, player_2_y, 20, 100); 
    if(keyPressed) { 
    if(keyCode == DOWN && player_2_y < 550) { 
     player_2_y += 5; 
     } 
    if(keyCode == UP && player_2_y > 50) { 
     player_2_y -= 5; 
     } 
    } 
    rect(player_1_x, player_1_y, 20, 100); 
    if(keyPressed) { 
    if(key == 's' && player_1_y < 550) { 
     player_1_y += 5; 
     } 
    if(key == 'w' && player_1_y > 50) { 
     player_1_y -= 5; 
     } 
    } 
    ball_x += ball_vector_x; 
    ball_y += ball_vector_y; 
    if(ball_x < 30) { 
    if(ball_y < (player_1_y + 55) && ball_y > (player_1_y - 55)) { 
     ball_vector_x = (-ball_vector_x) + 0.5; 
     ball_vector_y -= (player_1_y - ball_y) * 0.05; 
    } else { 
     ball_x = 400; 
     ball_y = 300; 
     ball_vector_x = -3; 
     ball_vector_y = 0; 
     round = 0; 
    } 
    } 
    if(ball_x > 770) { 
    if(ball_y < (player_2_y +55) && ball_y > (player_2_y - 55)) { 
     ball_vector_x = (-ball_vector_x) - 0.5; 
     ball_vector_y -= (player_2_y - ball_y) * 0.05; 
    } else { 
     ball_x = 400; 
     ball_y = 300; 
     ball_vector_x = 3; 
     ball_vector_y = 0; 
     round = 0; 
    } 
    } 
    if(ball_y > 595 || ball_y < 5) { 
    ball_vector_y = -ball_vector_y; 
    } 
    if(ball_vector_x == 4 || ball_vector_x == -4) { 
    round = 1; 
    } else if(ball_vector_x == 5 || ball_vector_x == -5) { 
    round = 2; 
    } else if(ball_vector_x == 6 || ball_vector_x == -6) { 
    round = 3; 
    } else if(ball_vector_x == 7 || ball_vector_x == -7) { 
    round = 4; 
    } else if(ball_vector_x == 8 || ball_vector_x == -8) { 
    round = 5; 
    } else if(ball_vector_x == 9 || ball_vector_x == -9) { 
    round = 6; 
    } else if(ball_vector_x == 10 || ball_vector_x == -10) { 
    round = 7; 
    } 
    text("round: " + round, 380, 20); 

} 
+0

私たちはそのコードを参照する必要があると思う実際には、このようになります'key'、' keyCode'と 'keyPressed'(そして他のもの)はどこから来たのですか? –

+0

@SteveSmithこれらはProcessing言語に組み込まれています。 –

+0

Can Processingは複数の同時キープレスに関する情報を提供しますか? 'key'と' keyCode'の違いは何ですか? –

答えて

0

あなたは、衝突することなく、一度に複数の入力を受け付けkeyPressed()keyReleased()機能を使用したい場合。キーを押しても、これらの機能は入力を受け入れます。ただし、これらのキーは、キーを押したときにのみ登録され、キーを押しているときには登録されません。これを修正するには、ブーリアン変数を上下に設定し、真の場合はパドルを動かします。これにより、パドルをいつでもスムーズに動かすことができます。 draw()ループ内のキーをチェックするif文を削除できます。

boolean player_1_down;//Initialize all of these to false in setup. 
boolean player_1_up; 
boolean player_2_down; 
boolean player_2_up ; 

.... 


void keyPressed(){ 
    if(key == 's') { 
     player_1_down = true; 
    } 
    if(key == 'w') { 
    player_1_up = true; 
    } 
    if(keyCode == DOWN) { 
     player_2_down = true; 
    } 
    if(keyCode == UP) { 
     player_2_up = true; 
    } 
} 

void keyReleased(){ 
    if(key == 's') { 
     player_1_down = false; 
    } 
    if(key == 'w') { 
    player_1_up = false; 
    } 
    if(keyCode == DOWN) { 
     player_2_down = false; 
    } 
    if(keyCode == UP) { 
     player_2_up = false; 
    } 
} 

次に、あなたのdraw()ループでは、上部付近に、あなたのパドルを移動するために、これを置く:

if(player_1_down && player_1_y < 550){ 
    player_1_y += 5; 
}else if(player_1_up && player_1_y > 50){ 
    player_1_y -= 5; 
} 
if(player_2_down && player_2_y < 550){ 
    player_2_y += 5; 
}else if(player_2_up&& player_2_y > 50){ 
    player_2_y -= 5; 
} 
+0

ありがとうございました。それは私が期待したところからうまくいくようです。今私はそれらを同時に制御することができます。 – Philzen

+0

@Philzenでも問題ありません。お役に立てて嬉しいです – UnknowableIneffable

関連する問題