Tasten im Spiel Funktionieren nicht richtig

  • Hi ich hab vor kurzem erst angefangen zu programmieren, dazu habe ich ein pong Spiel für 2 Spieler erstellt. Der eine Spieler steuert mit Pfeil nach oben und Pfeil nach unten dort funktioniert auch alles ganz normal, der andere Spieler soll mit W und S seinen Balken steuern aber dies funktioniert nicht richtig wenn man W drückt geht er zwar kurz nach oben aber stoppt dann als wäre dort eine unsichtbare wand damit man weiter nach oben kann muss man kurz S drücken dann wieder W. Das ist aber sehr unangenehm für den Spielfluss. Freue mich über Hilfe. Danke im voraus<3

  • //Pong

    float spielerx;

    float spielery;

    float bally;

    float ballx;

    float ball_speedx;

    float ball_speedy;

    float spieler_x;

    float spieler_y;


    int runde;

    int punkte;

    int punkte1;

    int blur_anzahl = 10;

    float[][] positions_array;


    void setup(){

    positions_array = new float[blur_anzahl][2];

    spielerx = 20;

    spielery = 500;

    spieler_x = 1900;

    spieler_y = 500;

    ballx = 1000;

    bally = 500;

    ball_speedx = -15;

    ball_speedy = 0;

    runde = 0;

    punkte = 0;

    punkte1 = 0;

    size(1920, 1020);

    rectMode(CENTER);

    }


    void draw(){

    background(0);

    rect(spielerx, spielery, 20, 200);

    rect(ballx, bally, 10, 10);

    rect(spieler_x, spieler_y, 20, 200);

    for(int i = (blur_anzahl - 1); i > 0; i--){

    fill(255, 0, 0, 255/(i*2));

    positions_array[i][0] = positions_array[i-1][0];

    positions_array[i][1] = positions_array[i-1][1];

    rect(positions_array[i][0], positions_array[i][1], 10, 10);

    }

    positions_array[0][0] = ballx;

    positions_array[0][1] = bally;

    if(keyPressed){

    if(keyCode == 87){

    if(spielery < 920){

    spielery = spielery + 10;

    }

    }

    if(keyCode == 83){

    if(spielery > 100){

    spielery = spielery - 10;

    }

    }

    }

    ballx = ballx + ball_speedx;

    bally = bally + ball_speedy;

    if(ballx < 50){

    if(bally < (spielery + 100) && bally > (spielery - 100)){

    ball_speedx = (-ball_speedx);

    ball_speedy = ball_speedy - (spielery - bally) * 0.1;

    runde = runde + 1;

    }else{

    ballx = 1000;

    bally = 500;

    ball_speedx = -15;

    ball_speedy = 0;

    runde = 0;

    punkte = punkte + 1;

    spielery = 500;

    spielerx = 20;

    spieler_y = 500;

    spieler_x = 1900;

    }

    }

    if(bally > 1020 || bally < 5){

    ball_speedy = -ball_speedy;

    }

    if(keyPressed){

    if(keyCode == DOWN){

    if(spieler_y < 920){

    spieler_y = spieler_y + 10;

    }

    }

    if(keyCode == UP){

    if(spieler_y > 100){

    spieler_y = spieler_y - 10;

    }

    }

    }

    if(ballx > 1870){

    if(bally < (spieler_y + 100) && bally > (spieler_y - 100)){

    ball_speedx = (-ball_speedx);

    ball_speedy = ball_speedy - (spieler_y - bally) * 0.1;

    runde = runde + 1;

    }else{

    ballx = 1000;

    bally = 500;

    ball_speedx = +15;

    ball_speedy = 0;

    runde = 0;

    punkte1 = punkte1 + 1;

    spielery = 500;

    spielerx = 20;

    spieler_y = 500;

    spieler_x = 1900;

    }

    }

    text("Punkte: " + punkte, 1700, 20 );

    text("Punkte: " + punkte1, 200, 20 );

    text("Runde: " + runde, 1000, 20 );

    }