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 );

    }

  • Das weiß ich:)

    Mich wundert es nur das da überhaupt was gezeichnet wird, da normalerweise Graphics als Parameter übergeben wird und Graphics das Rect zeichnet

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!